comparison Makefile.gen @ 77:cc1c35357e39

Build system cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 Jan 2020 03:03:01 +0200
parents 03aa729a9e90
children 159cc5f14092
comparison
equal deleted inserted replaced
76:9ee0edff3940 77:cc1c35357e39
1 ###
2 ### Compiler flags
3 ###
1 CXXFLAGS += -O3 -W -Wall -std=c++11 4 CXXFLAGS += -O3 -W -Wall -std=c++11
2 LDFLAGS += 5 LDFLAGS +=
3 CXXFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS) 6 CXXFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS)
4 7
8
9 ###
10 ### Tools, paths and directories
11 ###
5 MKDIR ?= mkdir 12 MKDIR ?= mkdir
6 MKDIR_P ?= $(MKDIR) -p 13 MKDIR_P ?= $(MKDIR) -p
7 BINPATH ?= ./ 14 BINPATH ?= ./
8 15
9 ifneq ($(V),1)
10 COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $<
11 COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CXX $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
12 LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+)
13 LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CXX) -o $@ $(filter %.o %.a,$+)
14 LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@
15 else
16 COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $<" && $(CC) $(CFLAGS) -c -o $@ $<
17 COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CXX) $(CXXFLAGS) -c -o $@ $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
18 LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+)
19 LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CXX) -o $@ $(filter %.o %.a,$+)" && $(CXX) -o $@ $(filter %.o %.a,$+)
20 LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@
21 endif
22 16
17 ###
18 ### Main targets and objects
19 ###
23 BINARIES = gldragon ply2bin 20 BINARIES = gldragon ply2bin
24 21
25 TARGETS += \ 22 TARGETS += \
26 $(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) 23 $(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES)))
27 24
30 CLEAN_TARGETS += 27 CLEAN_TARGETS +=
31 DISTCLEAN_TARGETS += 28 DISTCLEAN_TARGETS +=
32 29
33 30
34 ### 31 ###
35 ### Target rules 32 ### Functions and compilation/link commands
33 ###
34 ifneq ($(V),1)
35 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
36 else
37 DO_CMD=/bin/echo -E $(3) && $(3)
38 endif
39 DO_MKDIR=if test ! -d "$(1)"; then mkdir -p "$(1)"; fi
40
41
42 COMPILE_C_OBJ = \
43 @$(call DO_MKDIR,$(OBJPATH)) ; \
44 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
45
46 LINK_C_BIN = \
47 @$(call DO_MKDIR,$(BINPATH)) ; \
48 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
49
50 COMPILE_CXX_OBJ = \
51 @$(call DO_MKDIR,$(OBJPATH)) ; \
52 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
53
54 LINK_CXX_BIN = \
55 @$(call DO_MKDIR,$(BINPATH)) ; \
56 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
57
58 LINK_STATIC_LIB = \
59 @$(call DO_MKDIR,$(OBJPATH)) ; \
60 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
61 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
62
63
64 ###
65 ### Generic target rules
36 ### 66 ###
37 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) 67 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
38 68
39 69
40 $(OBJPATH)%.o: %.cpp %.h 70 $(OBJPATH)%.o: %.cpp %.h