Mercurial > hg > syntilista
comparison Makefile.common @ 309:18bef142108d
Rename Makefile.gen to Makefile.common
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 03 Aug 2023 12:49:58 +0300 |
parents | Makefile.gen@52f0da883469 |
children | 8541509ff8a0 |
comparison
equal
deleted
inserted
replaced
308:abebda3ec9cd | 309:18bef142108d |
---|---|
1 ### | |
2 ### Generic | |
3 ### | |
4 QT_MODULES = Core Gui Widgets Sql PrintSupport Network | |
5 | |
6 QT_FLAGS += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DUNICODE \ | |
7 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB \ | |
8 -DQT_SQL_LIB -DQT_PRINTSUPPORT_LIB -DQT_NETWORK_LIB | |
9 | |
10 | |
11 ### | |
12 ### Compiler flags | |
13 ### | |
14 XCFLAGS += -g -pipe -W -Wall -Wextra | |
15 | |
16 ifneq ($(ASAN),) | |
17 XCFLAGS += -fsanitize=address | |
18 XLDFLAGS += -lasan | |
19 else | |
20 XCFLAGS += -O2 | |
21 endif | |
22 | |
23 CFLAGS += -std=c11 $(XCFLAGS) | |
24 CXXFLAGS += -std=c++17 $(XCFLAGS) | |
25 LDFLAGS += $(XLDFLAGS) | |
26 | |
27 | |
28 ### | |
29 ### Tools, paths and directories | |
30 ### | |
31 ifneq ($(BINTOOL_PREFIX),) | |
32 CC = $(BINTOOL_PREFIX)gcc | |
33 CXX = $(BINTOOL_PREFIX)g++ | |
34 AR = $(BINTOOL_PREFIX)ar | |
35 endif | |
36 RANLIB = $(BINTOOL_PREFIX)ranlib | |
37 WINDRES = $(BINTOOL_PREFIX)windres | |
38 | |
39 | |
40 INSTALL ?= install | |
41 MKDIR ?= mkdir | |
42 MKDIR_P ?= $(MKDIR) -p | |
43 | |
44 # Qt tools | |
45 QT_RCC = $(QT_TOOL_PREFIX)rcc | |
46 QT_MOC = $(QT_TOOL_PREFIX)moc | |
47 QT_UIC = $(QT_TOOL_PREFIX)uic | |
48 | |
49 | |
50 ### | |
51 ### Main targets and objects | |
52 ### | |
53 APP_IMG=img/ | |
54 APP_BIN=$(BINPATH)Syntilista$(BINEXT) | |
55 | |
56 APP_HDRS=\ | |
57 src/main.h \ | |
58 src/util.h \ | |
59 src/ui_viewtransactions.h \ | |
60 src/ui_mainwindow.h \ | |
61 src/ui_editperson.h \ | |
62 src/ui_aboutwindow.h | |
63 | |
64 APP_OBJS=\ | |
65 main.o \ | |
66 util.o \ | |
67 editperson.o \ | |
68 viewtransactions.o \ | |
69 aboutwindow.o \ | |
70 sqlmodels.o \ | |
71 printing.o \ | |
72 resources.o \ | |
73 moc_main.o \ | |
74 runguard.o | |
75 | |
76 LOGO_SVG ?= kampuscafe4.svg | |
77 LOGO_SRC_PNG ?= CafeKampus_logo_FINAL_RGB.png | |
78 | |
79 ICON_PNGS = icon-64.png icon-48.png icon-32.png icon-16.png | |
80 LOGO_PNG = logo.png | |
81 LOGO_SIZE = 256 | |
82 | |
83 APP_RESOURCES += $(addprefix $(APP_IMG),$(LOGO_PNG) $(ICON_PNGS)) \ | |
84 COPYING.html | |
85 | |
86 DISTCLEAN_TARGETS += $(addprefix $(APP_IMG),$(LOGO_PNG) $(ICON_PNGS)) | |
87 | |
88 | |
89 # And target lists | |
90 TARGETS = $(APP_BIN) | |
91 NOBUILD_TARGETS += | |
92 NOINST_TARGETS += | |
93 CLEAN_TARGETS += icon.ico src/moc_*.cpp src/ui_*.h | |
94 DISTCLEAN_TARGETS += | |
95 | |
96 | |
97 # Version | |
98 APP_VERSION := $(shell cat VERSION) | |
99 comma:= , | |
100 APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION)) | |
101 CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\" | |
102 | |
103 | |
104 ### | |
105 ### Functions and compilation/link commands | |
106 ### | |
107 ifneq ($(V),1) | |
108 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) | |
109 else | |
110 DO_CMD=/bin/echo -E $(3) && $(3) | |
111 endif | |
112 DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi | |
113 | |
114 | |
115 COMPILE_C_OBJ = \ | |
116 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
117 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) | |
118 | |
119 LINK_C_BIN = \ | |
120 @$(call DO_MKDIR,$(BINPATH)) ; \ | |
121 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) | |
122 | |
123 COMPILE_CXX_OBJ = \ | |
124 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
125 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) | |
126 | |
127 LINK_CXX_BIN = \ | |
128 @$(call DO_MKDIR,$(BINPATH)) ; \ | |
129 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) | |
130 | |
131 LINK_STATIC_LIB = \ | |
132 @$(call DO_MKDIR,$(OBJPATH)) ; \ | |
133 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ | |
134 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) | |
135 | |
136 | |
137 ### | |
138 ### Generic target rules | |
139 ### | |
140 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) | |
141 | |
142 | |
143 moc_predefs.h: | |
144 @echo "" > $(OBJPATH)dummy.cpp | |
145 @$(call DO_CMD,CXX,$@,$(CXX) $(CXXFLAGS) -dM -E -o $@ $(OBJPATH)dummy.cpp) | |
146 | |
147 moc_%.cpp: %.h $(QT_MOC_RULES) | |
148 @$(call DO_CMD,$(QT_VERSION_PREFIX):MOC,$@ $<,$(QT_MOC) $(QT_FLAGS) $(QT_MOC_FLAGS) $(QT_INCLUDES) $< -o $@) | |
149 | |
150 ui_%.h: %.ui | |
151 @$(call DO_CMD,$(QT_VERSION_PREFIX):UIC,$@ $<,$(QT_UIC) $(QT_UIC_FLAGS) $< -o $@) | |
152 | |
153 | |
154 $(OBJPATH)%.o: src/%.cpp src/%.h | |
155 $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) | |
156 | |
157 $(OBJPATH)%.o: src/%.cpp | |
158 $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) | |
159 | |
160 | |
161 ### | |
162 ### Windows specific rules | |
163 ### | |
164 %.rc: %.rc.in icon.ico VERSION | |
165 @sed -e "s/@APP_VERSION@/$(APP_VERSION)/g;s/@APP_VERSION_COM@/$(APP_VERSION_COM)/g;s#@APP_EXE@#$(notdir $(APP_BIN))#g" < $< > $@ | |
166 | |
167 $(OBJPATH)%.o: src/%.rc | |
168 @$(call DO_CMD,WINDRES,$<,$(WINDRES) $< -O coff -o $@) | |
169 | |
170 | |
171 ### | |
172 ### Application rules | |
173 ### | |
174 ifneq ($(LOGO_SRC_SVG),) | |
175 $(APP_IMG)icon-%.png: $(APP_IMG)$(LOGO_SRC_SVG) | |
176 inkscape --export-area-page --export-type=png -w $(patsubst $(APP_IMG)icon-%.png,%,$@) -h $(patsubst $(APP_IMG)icon-%.png,%,$@) --export-filename="$@" "$<" | |
177 | |
178 $(APP_IMG)$(LOGO_PNG): $(APP_IMG)$(LOGO_SRC_SVG) | |
179 inkscape --export-area-page --export-type=png -w $(LOGO_SIZE) -h $(LOGO_SIZE) --export-filename="$@" "$<" | |
180 else | |
181 $(APP_IMG)icon-%.png: $(APP_IMG)$(LOGO_SRC_PNG) | |
182 convert "$<" -scale "$(patsubst $(APP_IMG)icon-%.png,%,$@)x$(patsubst $(APP_IMG)icon-%.png,%,$@)" "$@" | |
183 | |
184 $(APP_IMG)$(LOGO_PNG): $(APP_IMG)$(LOGO_SRC_PNG) | |
185 convert "$<" -scale "$(LOGO_SIZE)x$(LOGO_SIZE)" "$@" | |
186 endif | |
187 | |
188 icon.ico: $(addprefix $(APP_IMG),$(ICON_PNGS)) | |
189 @$(call DO_CMD,CONVERT,$+ -> $@,convert $+ $@) | |
190 | |
191 src/%.cpp: src/%.qrc $(APP_RESOURCES) | |
192 @$(call DO_CMD,$(QT_VERSION_PREFIX):RCC,$@ $<,$(QT_RCC) -name "Syntilista" $< -o $@) | |
193 | |
194 $(OBJPATH)main.o: src/main.cpp $(APP_HDRS) VERSION | |
195 $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) | |
196 | |
197 $(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) $(APP_DEP_LIBS) | $(APP_DEPS) | |
198 $(call LINK_CXX_BIN, $(APP_LIBS)) | |
199 | |
200 | |
201 ### | |
202 ### Special targets | |
203 ### | |
204 clean: | |
205 -$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o | |
206 | |
207 distclean: clean | |
208 -$(RM) $(DISTCLEAN_TARGETS) *~ core *.core | |
209 | |
210 .PHONY: clean distclean all |