Make infrastructure for better organized user testing
[akaros.git] / user / tests / Makefile
1 ARCH ?= none # catch bugs
2 CFLAGS_USER += -g
3 CXXFLAGS_USER += -g
4
5 SRCDIR := 
6 OBJDIR := $(SRCDIR)obj
7 INCDIR = $(SRCDIR)include
8
9 LDLIBS := -lpthread -lbenchutil -lm -liplib -lndb -lbsd
10
11 SRCS_C := $(wildcard $(SRCDIR)*.c)
12 SRCS_CPP := $(wildcard $(SRCDIR)*.cc)
13 HEADERS := $(shell find $(INCDIR) -name *.h)
14
15 EXECS_C = $(patsubst $(SRCDIR)%.c, $(OBJDIR)/%, $(SRCS_C))
16 EXECS_CPP = $(patsubst $(SRCDIR)%.cc, $(OBJDIR)/%, $(SRCS_CPP))
17 EXECS = $(EXECS_C) $(EXECS_CPP)
18
19 STATIC := $(findstring static,$(CFLAGS_USER))
20 $(OBJDIR)/%: $(SRCS_C)
21         @echo + cc [TESTS] $<
22         @mkdir -p $(@D)
23         $(Q)$(CC) $(CFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)
24         @if [ "$(STATIC)" != "static" ]; then \
25                 $(OBJDUMP) -S $@ > $@.asm; \
26                 $(NM) -n $@ > $@.sym; \
27         fi
28
29 # Note that we don't disassemble CPPs by default, even if they aren't static.
30 # The files are pretty large regardless (9MB for a simple stream test asm).
31 $(OBJDIR)/%: $(SRCS_CPP)
32         @echo + cc [TESTS] $<
33         @mkdir -p $(@D)
34         $(Q)$(CPP) $(CXXFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)
35
36 all: $(EXECS)
37
38 install: $(EXECS)
39         @mkdir -p $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin
40         $(Q)cp -uP $^ $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin
41
42 uninstall: $(EXECS)
43         @for i in $(EXECS); do \
44                 rm -rf $(AKAROS_ROOT)/$(FIRST_KFS_PATH)/bin/$i; \
45         done;
46
47 clean:
48         @echo + clean [TESTS]
49         $(Q)rm -rf $(OBJDIR)
50
51 .PHONY: $(PHONY)