parlib: Move alarm/timer functions from benchutil
[akaros.git] / user / utest / Makefile
1 ARCH ?= none # catch bugs
2 CFLAGS_USER += -g
3 CXXFLAGS_USER += -g
4 LIBNAME = utest 
5 # DEPLIBS passed in from the top-level Makefile
6 DEPLIBS := $(DEPLIBS)
7 DEPLIBAS = $(patsubst %, $(XCC_TARGET_LIB)/lib%.a, $(DEPLIBS))
8
9 SRCDIR := 
10 OBJDIR := $(SRCDIR)obj
11 INCDIR = $(SRCDIR)include
12
13 LDLIBS := -lpthread -lbenchutil -lm -liplib -lndblib
14
15 uc = $(shell echo $(1) | tr a-z A-Z)
16
17 LIBUCNAME := $(call uc, $(LIBNAME))
18 SCRIPTS := $(wildcard $(SRCDIR)*.sh)
19 SRCS_C := $(wildcard $(SRCDIR)*.c)
20 SRCS_CPP := $(wildcard $(SRCDIR)*.cc)
21 HEADERS := $(shell find $(INCDIR) -name "*.h")
22
23 EXECS_C = $(patsubst $(SRCDIR)%.c, $(OBJDIR)/%, $(SRCS_C))
24 EXECS_CPP = $(patsubst $(SRCDIR)%.cc, $(OBJDIR)/%, $(SRCS_CPP))
25 EXECS = $(EXECS_C) $(EXECS_CPP)
26
27 STATIC := $(findstring static,$(CFLAGS_USER))
28 $(OBJDIR)/%: %.c $(HEADERS) $(DEPLIBAS)
29         @echo + cc [$(LIBUCNAME)] $<
30         @mkdir -p $(@D)
31         $(Q)$(CC) $(CFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)
32         @if [ "$(STATIC)" != "static" ]; then \
33                 $(OBJDUMP) -S $@ > $@.asm; \
34                 $(NM) -n $@ > $@.sym; \
35         fi
36
37 # Note that we don't disassemble CPPs by default, even if they aren't static.
38 # The files are pretty large regardless (9MB for a simple stream test asm).
39 $(OBJDIR)/%: %.cc $(HEADERS) $(DEPLIBAS)
40         @echo + cc [$(LIBUCNAME)] $<
41         @mkdir -p $(@D)
42         $(Q)$(CPP) $(CXXFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)
43
44 all: $(EXECS)
45
46 install: $(EXECS) $(SCRIPTS)
47         @mkdir -p $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin/tests/utest
48         $(Q)cp -uP $^ $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin/tests/utest
49
50 uninstall: $(EXECS)
51         $(Q)rm -rf $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin/tests/utest
52
53 clean:
54         @echo + clean [$(LIBUCNAME)]
55         $(Q)rm -rf $(OBJDIR)
56
57 .PHONY: $(PHONY)