Tests now build with -lm
[akaros.git] / tests / Makefrag
index 7b53713..fb03af4 100644 (file)
@@ -1,30 +1,52 @@
-TESTS_DIR = $(TOP_DIR)/tests
-TESTS_CFLAGS += $(USER_FLAGS)
+TESTS_DIR = tests
+
 OBJDIRS += $(TESTS_DIR)
 
-TESTS_CFLAGS := $(USER_CFLAGS)  \
-                -I$(USER_DIR)/include
+TESTS_CFLAGS += $(USER_CFLAGS) -g
+TESTS_CXXFLAGS += $(USER_CXXFLAGS) -g
+TESTS_LDFLAGS += $(USER_LDFLAGS) -lm
 
-ALL_TEST_FILES = $(shell ls $(TESTS_DIR)/*.c)
+TESTS_LDLIBS := -lpthread
 
-TESTS_LDDIRS := -L$(OBJDIR)/$(USER_PARLIB_DIR)
+TESTS_SRCS_C = $(shell ls $(TESTS_DIR)/*.c)
+TESTS_SRCS_CPP = $(shell ls $(TESTS_DIR)/*.cc)
 
-TESTS_LDLIBS := -lparlib 
+TESTS_LDDEPENDS_C := $(TESTS_DIR)/%.c 
+TESTS_LDDEPENDS_CPP := $(TESTS_DIR)/%.cc
 
-TESTS_SRCS := $(ALL_TEST_FILES)
+TESTS_EXECS_C  = $(patsubst $(TESTS_DIR)/%.c, \
+                            $(OBJDIR)/$(TESTS_DIR)/%, \
+                            $(TESTS_SRCS_C))
 
-TESTS_EXECS  := $(patsubst $(TESTS_DIR)/%.c, \
-                           $(OBJDIR)/$(TESTS_DIR)/%, \
-                           $(TESTS_SRCS))
+TESTS_EXECS_CPP  = $(patsubst $(TESTS_DIR)/%.cc, \
+                            $(OBJDIR)/$(TESTS_DIR)/%, \
+                            $(TESTS_SRCS_CPP))
 
-TESTS_LDDEPENDS := $(TESTS_DIR)/%.c \
-                   $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a
+include $(TESTS_DIR)/c3po/Makefrag
+include $(TESTS_DIR)/openmp/Makefrag
 
-$(OBJDIR)/$(TESTS_DIR)/%: $(TESTS_LDDEPENDS)
+STATIC := $(findstring static,$(TESTS_CFLAGS))
+$(OBJDIR)/$(TESTS_DIR)/%: $(TESTS_LDDEPENDS_C)
        @echo + cc [TESTS] $<
        @mkdir -p $(@D)
        $(V)$(CC) $(TESTS_CFLAGS) -o $@ $(TESTS_LDFLAGS) \
-                 $(TESTS_LDDIRS) $< $(TESTS_LDLIBS)
-       $(V)$(OBJDUMP) -S $@ > $@.asm
-       $(V)$(NM) -n $@ > $@.sym
-
+                 $< $(TESTS_LDLIBS)
+       @if [ "$(STATIC)" != "static" ]; then \
+               $(OBJDUMP) -S $@ > $@.asm; \
+               $(NM) -n $@ > $@.sym; \
+       fi
+
+# Note that we don't disassemble CPPs by default, even if they aren't static.
+# The files are pretty large regardless (9MB for a simple stream test asm).
+$(OBJDIR)/$(TESTS_DIR)/%: $(TESTS_LDDEPENDS_CPP)
+       @echo + cc [TESTS] $<
+       @mkdir -p $(@D)
+       $(V)$(CPP) $(TESTS_CXXFLAGS) -o $@ $(TESTS_LDFLAGS) \
+                 $< $(TESTS_LDLIBS)
+
+install-tests: $(TESTS_EXECS_C) $(TESTS_EXECS_CPP) 
+       @echo + install [TESTS] $(FIRST_INITRAMFS_PATH)/bin/
+       $(V)for i in "$(TESTS_EXECS) $(TESTS_EXECS_CPP)"; \
+       do \
+         cp $$i $(FIRST_INITRAMFS_PATH)/bin/; \
+       done;