Mercurial > hg > forks > gldragon
annotate Makefile.gen @ 100:8059aad101d1
Improve build system.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 25 Feb 2022 15:29:13 +0200 |
parents | 22774e3f2a89 |
children |
rev | line source |
---|---|
77 | 1 ### |
2 ### Compiler flags | |
3 ### | |
86 | 4 ifneq ($(ASAN),) |
5 CXXFLAGS += -fsanitize=address | |
6 LDFLAGS += -lasan | |
7 else | |
99
22774e3f2a89
Add TSAN compile-time support via make parameter TSAN.
Matti Hamalainen <ccr@tnsp.org>
parents:
86
diff
changeset
|
8 ifneq ($(TSAN),) |
22774e3f2a89
Add TSAN compile-time support via make parameter TSAN.
Matti Hamalainen <ccr@tnsp.org>
parents:
86
diff
changeset
|
9 CXXFLAGS += -fsanitize=thread |
22774e3f2a89
Add TSAN compile-time support via make parameter TSAN.
Matti Hamalainen <ccr@tnsp.org>
parents:
86
diff
changeset
|
10 LDFLAGS += -ltsan |
22774e3f2a89
Add TSAN compile-time support via make parameter TSAN.
Matti Hamalainen <ccr@tnsp.org>
parents:
86
diff
changeset
|
11 else |
86 | 12 CXXFLAGS += -O3 |
42
3c7e1d3fa5a2
Implement OpengL extension handling through new header file dmglexts.h to
Matti Hamalainen <ccr@tnsp.org>
parents:
41
diff
changeset
|
13 LDFLAGS += |
86 | 14 endif |
99
22774e3f2a89
Add TSAN compile-time support via make parameter TSAN.
Matti Hamalainen <ccr@tnsp.org>
parents:
86
diff
changeset
|
15 endif |
86 | 16 |
17 CXXFLAGS += -g -W -Wall -std=c++11 | |
40 | 18 CXXFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS) |
19 | |
77 | 20 |
21 ### | |
22 ### Tools, paths and directories | |
23 ### | |
40 | 24 MKDIR ?= mkdir |
25 MKDIR_P ?= $(MKDIR) -p | |
26 BINPATH ?= ./ | |
34 | 27 |
28 | |
77 | 29 ### |
30 ### Main targets and objects | |
31 ### | |
41 | 32 BINARIES = gldragon ply2bin |
33 | |
34 TARGETS += \ | |
35 $(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) | |
36 | |
37 NOBUILD_TARGETS += | |
38 NOINST_TARGETS += | |
39 CLEAN_TARGETS += | |
40 DISTCLEAN_TARGETS += | |
41 | |
34 | 42 |
40 | 43 ### |
77 | 44 ### Functions and compilation/link commands |
45 ### | |
46 ifneq ($(V),1) | |
47 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) | |
48 else | |
49 DO_CMD=/bin/echo -E $(3) && $(3) | |
50 endif | |
78
159cc5f14092
Check for empty target directory in DO_MKDIR Makefile macro.
Matti Hamalainen <ccr@tnsp.org>
parents:
77
diff
changeset
|
51 DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi |
77 | 52 |
53 | |
54 COMPILE_C_OBJ = \ | |
55 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
56 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) | |
57 | |
58 LINK_C_BIN = \ | |
59 @$(call DO_MKDIR,$(BINPATH)) ; \ | |
60 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) | |
61 | |
62 COMPILE_CXX_OBJ = \ | |
63 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
64 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) | |
65 | |
66 LINK_CXX_BIN = \ | |
67 @$(call DO_MKDIR,$(BINPATH)) ; \ | |
68 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) | |
69 | |
70 LINK_STATIC_LIB = \ | |
71 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
72 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ | |
73 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) | |
74 | |
75 | |
76 ### | |
77 ### Generic target rules | |
40 | 78 ### |
79 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) | |
80 | |
81 | |
79
8a56cb177711
Add dmglexts.h as depency to dmglrender.o
Matti Hamalainen <ccr@tnsp.org>
parents:
78
diff
changeset
|
82 $(OBJPATH)dmglrender.o: dmglrender.cpp dmglrender.h dmglexts.h |
100 | 83 $(call COMPILE_CXX_OBJ,) |
79
8a56cb177711
Add dmglexts.h as depency to dmglrender.o
Matti Hamalainen <ccr@tnsp.org>
parents:
78
diff
changeset
|
84 |
40 | 85 $(OBJPATH)%.o: %.cpp %.h |
100 | 86 $(call COMPILE_CXX_OBJ,) |
40 | 87 |
88 $(OBJPATH)%.o: %.cpp | |
100 | 89 $(call COMPILE_CXX_OBJ,) |
40 | 90 |
34 | 91 |
70
03aa729a9e90
Refactor PLY file parsing from dmscene.* to dmply.* and some helper functions into dmutil.h
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
92 $(BINPATH)gldragon$(BINEXT): $(addprefix $(OBJPATH), gldragon.o dmglrender.o dmscene.o dmply.o dmutil.o) |
100 | 93 $(call LINK_CXX_BIN, $(LDFLAGS) $(SDL_LDFLAGS) $(GL_LDFLAGS)) |
40 | 94 |
70
03aa729a9e90
Refactor PLY file parsing from dmscene.* to dmply.* and some helper functions into dmutil.h
Matti Hamalainen <ccr@tnsp.org>
parents:
62
diff
changeset
|
95 $(BINPATH)ply2bin$(BINEXT): $(addprefix $(OBJPATH), ply2bin.o dmscene.o dmply.o dmutil.o) |
100 | 96 $(call LINK_CXX_BIN, $(LDFLAGS) $(TOOL_LDFLAGS)) |
40 | 97 |
34 | 98 |
40 | 99 ### |
100 ### Special targets | |
101 ### | |
34 | 102 clean: |
40 | 103 -$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o |
104 | |
105 distclean: clean | |
106 -$(RM) $(DISTCLEAN_TARGETS) *~ core *.core | |
107 | |
108 .PHONY: clean distclean all |