]> git.localhorst.tv Git - l2e.git/blobdiff - build/l2e.mk
added first unit test
[l2e.git] / build / l2e.mk
index 19d3f5b15211ae2a9fd338a0719fbf1cea4f29d4..cfc4e745be50a7d02e738415790f83d0a2ee5d62 100644 (file)
@@ -1,9 +1,15 @@
-L2E_DIRS := $(shell cd $(srcdir) && find * -type d)
-L2E_SRCS := $(shell cd $(srcdir)&& find * -type f -name '*.cpp')
+L2E_DIRS := $(shell cd $(TOP) && find src -type d)
+L2E_SRCS := $(shell cd $(TOP) && find src -type f -name '*.cpp')
 L2E_DEPS = $(L2E_SRCS:%.cpp=%.d)
 L2E_OBJS = $(L2E_SRCS:%.cpp=%.o)
 L2E_EXES = l2e
 
+L2E_TEST_DIRS := $(shell cd $(TOP) && find tests -type d)
+L2E_TEST_SRCS := $(shell cd $(TOP) && find tests -type f -name '*.cpp')
+L2E_TEST_DEPS := $(L2E_TEST_SRCS:%.cpp=%.d)
+L2E_TEST_OBJS := $(L2E_TEST_SRCS:%.cpp=%.o)
+L2E_TEST_EXES := test-all
+
 L2E_FLAGS = $(sort $(strip \
                $(SDL_FLAGS) \
                $(SDL_IMG_FLAGS) \
@@ -13,9 +19,13 @@ L2E_LIBS = $(sort $(strip \
                $(SDL_IMG_LIBS) \
                ))
 
+L2E_TEST_FLAGS = $(L2E_FLAGS) $(CPPUNIT_FLAGS)
+L2E_TEST_LIBS = $(L2E_LIBS) $(CPPUNIT_LIBS)
+
 -include $(L2E_DEPS)
+-include $(L2E_TEST_DEPS)
 
-$(L2E_OBJS): %.o: $(srcdir)/%.cpp
+$(L2E_OBJS): %.o: $(TOP)/%.cpp
        -@$(MKDIR) "$(@D)"
        @echo "compile: $@"
        $(VERBOSE) $(CXX) -c -o "$@" -MMD -MP -MF"$*.d" -MT"$@" "$<" \
@@ -27,17 +37,41 @@ $(L2E_EXES): $(L2E_OBJS)
        $(VERBOSE) $(CXX) -o "$@" $^ \
                        $(L2E_FLAGS) $(L2E_LIBS) $(LDFLAGS)
 
+$(L2E_TEST_OBJS): %.o: $(TOP)/%.cpp
+       -@$(MKDIR) "$(@D)"
+       @echo "compile: $@"
+       $(VERBOSE) $(CXX) -c -o "$@" -MMD -MP -MF"$*.d" -MT"$@" "$<" \
+                       $(L2E_TEST_FLAGS) $(CPPFLAGS) $(CXXFLAGS)
+
+$(L2E_TEST_EXES): $(L2E_TEST_OBJS) $(filter-out src/main.o, $(L2E_OBJS))
+       -@$(MKDIR) "$(@D)"
+       @echo "link: $@"
+       $(VERBOSE) $(CXX) -o "$@" $^ \
+                       $(L2E_TEST_FLAGS) $(L2E_TEST_LIBS) $(LDFLAGS)
+
 l2e-all: $(L2E_EXES)
 
 l2e-clean:
        $(VERBOSE) -$(RM) $(L2E_DEPS)
        $(VERBOSE) -$(RM) $(L2E_OBJS)
        $(VERBOSE) -$(RM) $(L2E_EXES)
+       $(VERBOSE) -$(RM) $(L2E_TEST_DEPS)
+       $(VERBOSE) -$(RM) $(L2E_TEST_OBJS)
+       $(VERBOSE) -$(RM) $(L2E_TEST_EXES)
        $(VERBOSE) -$(RMDIR) $(L2E_DIRS)
+       $(VERBOSE) -$(RMDIR) $(L2E_TEST_DIRS)
+
+l2e-tests: $(L2E_TEST_EXES)
+
+l2e-test-all: test-all
+       @echo "test: test-all"
+       $(VERBOSE) ./test-all
 
 all: l2e-all
 clean: l2e-clean
+tests: l2e-tests
+test: l2e-test-all
 
-.PHONY: l2e-all l2e-clean
+.PHONY: l2e-all l2e-clean l2e-tests l2e-test-all
 
 -include $(BUILD)l2e-local.mk