]> git.localhorst.tv Git - l2e.git/blob - build/l2e.mk
new language, new compiler
[l2e.git] / build / l2e.mk
1 L2E_DIRS := $(shell cd $(TOP) && find src -type d)
2 L2E_SRCS := $(shell cd $(TOP) && find src -type f -name '*.cpp')
3 L2E_DEPS = $(L2E_SRCS:%.cpp=%.d)
4 L2E_OBJS = $(L2E_SRCS:%.cpp=%.o)
5 L2E_EXES = l2e
6
7 L2E_TEST_DIRS := $(shell cd $(TOP) && find tests -type d)
8 L2E_TEST_SRCS := $(shell cd $(TOP) && find tests -type f -name '*.cpp')
9 L2E_TEST_DEPS := $(L2E_TEST_SRCS:%.cpp=%.d)
10 L2E_TEST_OBJS := $(L2E_TEST_SRCS:%.cpp=%.o)
11 L2E_TEST_EXES := test-all
12
13 L2E_FLAGS = $(sort $(strip \
14                 $(SDL_FLAGS) \
15                 $(SDL_IMG_FLAGS) \
16                 ))
17 L2E_LIBS = $(sort $(strip \
18                 $(SDL_LIBS) \
19                 $(SDL_IMG_LIBS) \
20                 ))
21
22 L2E_TEST_FLAGS = $(L2E_FLAGS) $(CPPUNIT_FLAGS)
23 L2E_TEST_LIBS = $(L2E_LIBS) $(CPPUNIT_LIBS)
24
25 -include $(L2E_DEPS)
26 -include $(L2E_TEST_DEPS)
27
28 $(L2E_OBJS): %.o: $(TOP)/%.cpp
29         -@$(MKDIR) "$(@D)"
30         @echo "compile: $@"
31         $(VERBOSE) $(CXX) -c -o "$@" -MMD -MP -MF"$*.d" -MT"$@" "$<" \
32                         $(L2E_FLAGS) $(CPPFLAGS) $(CXXFLAGS)
33
34 $(L2E_EXES): $(L2E_OBJS)
35         -@$(MKDIR) "$(@D)"
36         @echo "link: $@"
37         $(VERBOSE) $(CXX) -o "$@" $^ \
38                         $(L2E_FLAGS) $(L2E_LIBS) $(LDFLAGS)
39
40 $(L2E_TEST_OBJS): %.o: $(TOP)/%.cpp
41         -@$(MKDIR) "$(@D)"
42         @echo "compile: $@"
43         $(VERBOSE) $(CXX) -c -o "$@" -MMD -MP -MF"$*.d" -MT"$@" "$<" \
44                         $(L2E_TEST_FLAGS) $(CPPFLAGS) $(CXXFLAGS)
45
46 $(L2E_TEST_EXES): $(L2E_TEST_OBJS) $(filter-out src/main.o, $(L2E_OBJS))
47         -@$(MKDIR) "$(@D)"
48         @echo "link: $@"
49         $(VERBOSE) $(CXX) -o "$@" $^ \
50                         $(L2E_TEST_FLAGS) $(L2E_TEST_LIBS) $(LDFLAGS)
51
52 l2e-all: $(L2E_EXES)
53
54 l2e-clean:
55         $(VERBOSE) -$(RM) $(L2E_DEPS)
56         $(VERBOSE) -$(RM) $(L2E_OBJS)
57         $(VERBOSE) -$(RM) $(L2E_EXES)
58         $(VERBOSE) -$(RM) $(L2E_TEST_DEPS)
59         $(VERBOSE) -$(RM) $(L2E_TEST_OBJS)
60         $(VERBOSE) -$(RM) $(L2E_TEST_EXES)
61         $(VERBOSE) -$(RMDIR) $(L2E_DIRS)
62         $(VERBOSE) -$(RMDIR) $(L2E_TEST_DIRS)
63
64 l2e-tests: $(L2E_TEST_EXES)
65
66 l2e-test-all: test-all
67         @echo "test: test-all"
68         $(VERBOSE) ./test-all
69
70 all: l2e-all
71 clean: l2e-clean
72 tests: l2e-tests
73 test: l2e-test-all
74
75 .PHONY: l2e-all l2e-clean l2e-tests l2e-test-all
76
77 -include $(BUILD)l2e-local.mk