comparison Makefile.gen @ 262:847917a62ea2

Build system cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 Jan 2020 03:08:32 +0200
parents 14ed3a2500e6
children f0e180b13e05
comparison
equal deleted inserted replaced
261:f6a99b984b8e 262:847917a62ea2
1 ### 1 ###
2 ### Main build file 2 ### Compiler flags
3 ### 3 ###
4
5 CFLAGS += -O2 -W -Wall -Wextra 4 CFLAGS += -O2 -W -Wall -Wextra
6 CXXFLAGS += -O2 -W -Wall -Wextra -std=c++11 5 CXXFLAGS += -O2 -W -Wall -Wextra -std=c++11
7 6
8 # Tools 7
8 ###
9 ### Tools, paths and directories
10 ###
9 ifneq ($(BINTOOL_PREFIX),) 11 ifneq ($(BINTOOL_PREFIX),)
10 CC = $(BINTOOL_PREFIX)gcc 12 CC = $(BINTOOL_PREFIX)gcc
11 CXX = $(BINTOOL_PREFIX)g++ 13 CXX = $(BINTOOL_PREFIX)g++
12 AR = $(BINTOOL_PREFIX)ar 14 AR = $(BINTOOL_PREFIX)ar
13 endif 15 endif
14 RANLIB = $(BINTOOL_PREFIX)ranlib 16 RANLIB = $(BINTOOL_PREFIX)ranlib
15 WINDRES = $(BINTOOL_PREFIX)windres 17 WINDRES = $(BINTOOL_PREFIX)windres
16 18
19
17 INSTALL ?= install 20 INSTALL ?= install
18 MKDIR ?= mkdir 21 MKDIR ?= mkdir
19 MKDIR_P ?= $(MKDIR) -p 22 MKDIR_P ?= $(MKDIR) -p
20 23
21 # Common defines 24
25 ###
26 ### Main targets and objects
27 ###
22 DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG \ 28 DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG \
23 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB \ 29 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB \
24 -DQT_CORE_LIB 30 -DQT_CORE_LIB
25 31
26 # Application stuff 32 # Application stuff
66 comma:= , 72 comma:= ,
67 APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION)) 73 APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION))
68 CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\" 74 CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\"
69 75
70 76
77 ###
78 ### Functions and compilation/link commands
79 ###
71 ifneq ($(V),1) 80 ifneq ($(V),1)
72 COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $< 81 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
73 COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CXX $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
74 LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+)
75 LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CXX) -o $@ $(filter %.o %.a,$+)
76 LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@
77 else 82 else
78 COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $<" && $(CC) $(CFLAGS) -c -o $@ $< 83 DO_CMD=/bin/echo -E $(3) && $(3)
79 COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CXX) $(CXXFLAGS) -c -o $@ $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
80 LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+)
81 LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CXX) -o $@ $(filter %.o %.a,$+)" && $(CXX) -o $@ $(filter %.o %.a,$+)
82 LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@
83 endif 84 endif
85 DO_MKDIR=if test ! -d "$(1)"; then mkdir -p "$(1)"; fi
86
87
88 COMPILE_C_OBJ = \
89 @$(call DO_MKDIR,$(OBJPATH)) ; \
90 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
91
92 LINK_C_BIN = \
93 @$(call DO_MKDIR,$(BINPATH)) ; \
94 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
95
96 COMPILE_CXX_OBJ = \
97 @$(call DO_MKDIR,$(OBJPATH)) ; \
98 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
99
100 LINK_CXX_BIN = \
101 @$(call DO_MKDIR,$(BINPATH)) ; \
102 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
103
104 LINK_STATIC_LIB = \
105 @$(call DO_MKDIR,$(OBJPATH)) ; \
106 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
107 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
84 108
85 109
86 ### 110 ###
87 ### Target rules 111 ### Generic target rules
88 ### 112 ###
89 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) 113 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
90 114
91 115
92 moc_predefs.h: 116 moc_predefs.h: