f8e1e53007db926d44e1782e50d19bb231b36557
[akaros.git] / tests / Makefrag
1 TESTS_DIR = tests
2
3 OBJDIRS += $(TESTS_DIR)
4
5 TESTS_CFLAGS += $(USER_CFLAGS) -g
6 TESTS_CXXFLAGS += $(USER_CXXFLAGS) -g
7
8 TESTS_LDLIBS := -lpthread
9
10 TESTS_SRCS_C = $(shell ls $(TESTS_DIR)/*.c)
11 TESTS_SRCS_CPP = $(shell ls $(TESTS_DIR)/*.cc)
12
13 TESTS_LDDEPENDS_C := $(TESTS_DIR)/%.c 
14 TESTS_LDDEPENDS_CPP := $(TESTS_DIR)/%.cc
15
16 TESTS_EXECS_C  = $(patsubst $(TESTS_DIR)/%.c, \
17                             $(OBJDIR)/$(TESTS_DIR)/%, \
18                             $(TESTS_SRCS_C))
19
20 TESTS_EXECS_CPP  = $(patsubst $(TESTS_DIR)/%.cc, \
21                             $(OBJDIR)/$(TESTS_DIR)/%, \
22                             $(TESTS_SRCS_CPP))
23
24 include $(TESTS_DIR)/c3po/Makefrag
25 include $(TESTS_DIR)/openmp/Makefrag
26
27 STATIC := $(findstring static,$(TESTS_CFLAGS))
28 $(OBJDIR)/$(TESTS_DIR)/%: $(TESTS_LDDEPENDS_C)
29         @echo + cc [TESTS] $<
30         @mkdir -p $(@D)
31         $(V)$(CC) $(TESTS_CFLAGS) -o $@ $(TESTS_LDFLAGS) \
32                   $< $(TESTS_LDLIBS)
33         @if [ "$(STATIC)" != "static" ]; then \
34                 $(OBJDUMP) -S $@ > $@.asm; \
35                 $(NM) -n $@ > $@.sym; \
36         fi
37
38 # Note that we don't disassemble CPPs by default, even if they aren't static.
39 # The files are pretty large regardless (9MB for a simple stream test asm).
40 $(OBJDIR)/$(TESTS_DIR)/%: $(TESTS_LDDEPENDS_CPP)
41         @echo + cc [TESTS] $<
42         @mkdir -p $(@D)
43         $(V)$(CPP) $(TESTS_CXXFLAGS) -o $@ $(TESTS_LDFLAGS) \
44                   $< $(TESTS_LDLIBS)
45
46 install-tests: $(TESTS_EXECS_C) $(TESTS_EXECS_CPP) 
47         @echo + install [TESTS] $(FIRST_INITRAMFS_PATH)/bin/
48         $(V)for i in "$(TESTS_EXECS) $(TESTS_EXECS_CPP)"; \
49         do \
50           cp $$i $(FIRST_INITRAMFS_PATH)/bin/; \
51         done;