Mercurial > hg > syntilista
view Makefile.common @ 310:8541509ff8a0 default tip
Fix verbose build echos.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 29 Feb 2024 21:49:20 +0200 |
parents | 18bef142108d |
children |
line wrap: on
line source
### ### Generic ### QT_MODULES = Core Gui Widgets Sql PrintSupport Network QT_FLAGS += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DUNICODE \ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB \ -DQT_SQL_LIB -DQT_PRINTSUPPORT_LIB -DQT_NETWORK_LIB ### ### Compiler flags ### XCFLAGS += -g -pipe -W -Wall -Wextra ifneq ($(ASAN),) XCFLAGS += -fsanitize=address XLDFLAGS += -lasan else XCFLAGS += -O2 endif CFLAGS += -std=c11 $(XCFLAGS) CXXFLAGS += -std=c++17 $(XCFLAGS) LDFLAGS += $(XLDFLAGS) ### ### Tools, paths and directories ### ifneq ($(BINTOOL_PREFIX),) CC = $(BINTOOL_PREFIX)gcc CXX = $(BINTOOL_PREFIX)g++ AR = $(BINTOOL_PREFIX)ar endif RANLIB = $(BINTOOL_PREFIX)ranlib WINDRES = $(BINTOOL_PREFIX)windres INSTALL ?= install MKDIR ?= mkdir MKDIR_P ?= $(MKDIR) -p # Qt tools QT_RCC = $(QT_TOOL_PREFIX)rcc QT_MOC = $(QT_TOOL_PREFIX)moc QT_UIC = $(QT_TOOL_PREFIX)uic ### ### Main targets and objects ### APP_IMG=img/ APP_BIN=$(BINPATH)Syntilista$(BINEXT) APP_HDRS=\ src/main.h \ src/util.h \ src/ui_viewtransactions.h \ src/ui_mainwindow.h \ src/ui_editperson.h \ src/ui_aboutwindow.h APP_OBJS=\ main.o \ util.o \ editperson.o \ viewtransactions.o \ aboutwindow.o \ sqlmodels.o \ printing.o \ resources.o \ moc_main.o \ runguard.o LOGO_SVG ?= kampuscafe4.svg LOGO_SRC_PNG ?= CafeKampus_logo_FINAL_RGB.png ICON_PNGS = icon-64.png icon-48.png icon-32.png icon-16.png LOGO_PNG = logo.png LOGO_SIZE = 256 APP_RESOURCES += $(addprefix $(APP_IMG),$(LOGO_PNG) $(ICON_PNGS)) \ COPYING.html DISTCLEAN_TARGETS += $(addprefix $(APP_IMG),$(LOGO_PNG) $(ICON_PNGS)) # And target lists TARGETS = $(APP_BIN) NOBUILD_TARGETS += NOINST_TARGETS += CLEAN_TARGETS += icon.ico src/moc_*.cpp src/ui_*.h DISTCLEAN_TARGETS += # Version APP_VERSION := $(shell cat VERSION) comma:= , APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION)) CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\" ### ### Functions and compilation/link commands ### ifneq ($(V),1) DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) else DO_CMD=/bin/echo -E "$(3)" && $(3) endif DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi COMPILE_C_OBJ = \ @$(call DO_MKDIR,$(OBJPATH)) ; \ $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) LINK_C_BIN = \ @$(call DO_MKDIR,$(BINPATH)) ; \ $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) COMPILE_CXX_OBJ = \ @$(call DO_MKDIR,$(OBJPATH)) ; \ $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) LINK_CXX_BIN = \ @$(call DO_MKDIR,$(BINPATH)) ; \ $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) LINK_STATIC_LIB = \ @$(call DO_MKDIR,$(OBJPATH)) ; \ $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) ### ### Generic target rules ### all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) moc_predefs.h: @echo "" > $(OBJPATH)dummy.cpp @$(call DO_CMD,CXX,$@,$(CXX) $(CXXFLAGS) -dM -E -o $@ $(OBJPATH)dummy.cpp) moc_%.cpp: %.h $(QT_MOC_RULES) @$(call DO_CMD,$(QT_VERSION_PREFIX):MOC,$@ $<,$(QT_MOC) $(QT_FLAGS) $(QT_MOC_FLAGS) $(QT_INCLUDES) $< -o $@) ui_%.h: %.ui @$(call DO_CMD,$(QT_VERSION_PREFIX):UIC,$@ $<,$(QT_UIC) $(QT_UIC_FLAGS) $< -o $@) $(OBJPATH)%.o: src/%.cpp src/%.h $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) $(OBJPATH)%.o: src/%.cpp $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) ### ### Windows specific rules ### %.rc: %.rc.in icon.ico VERSION @sed -e "s/@APP_VERSION@/$(APP_VERSION)/g;s/@APP_VERSION_COM@/$(APP_VERSION_COM)/g;s#@APP_EXE@#$(notdir $(APP_BIN))#g" < $< > $@ $(OBJPATH)%.o: src/%.rc @$(call DO_CMD,WINDRES,$<,$(WINDRES) $< -O coff -o $@) ### ### Application rules ### ifneq ($(LOGO_SRC_SVG),) $(APP_IMG)icon-%.png: $(APP_IMG)$(LOGO_SRC_SVG) inkscape --export-area-page --export-type=png -w $(patsubst $(APP_IMG)icon-%.png,%,$@) -h $(patsubst $(APP_IMG)icon-%.png,%,$@) --export-filename="$@" "$<" $(APP_IMG)$(LOGO_PNG): $(APP_IMG)$(LOGO_SRC_SVG) inkscape --export-area-page --export-type=png -w $(LOGO_SIZE) -h $(LOGO_SIZE) --export-filename="$@" "$<" else $(APP_IMG)icon-%.png: $(APP_IMG)$(LOGO_SRC_PNG) convert "$<" -scale "$(patsubst $(APP_IMG)icon-%.png,%,$@)x$(patsubst $(APP_IMG)icon-%.png,%,$@)" "$@" $(APP_IMG)$(LOGO_PNG): $(APP_IMG)$(LOGO_SRC_PNG) convert "$<" -scale "$(LOGO_SIZE)x$(LOGO_SIZE)" "$@" endif icon.ico: $(addprefix $(APP_IMG),$(ICON_PNGS)) @$(call DO_CMD,CONVERT,$+ -> $@,convert $+ $@) src/%.cpp: src/%.qrc $(APP_RESOURCES) @$(call DO_CMD,$(QT_VERSION_PREFIX):RCC,$@ $<,$(QT_RCC) -name "Syntilista" $< -o $@) $(OBJPATH)main.o: src/main.cpp $(APP_HDRS) VERSION $(call COMPILE_CXX_OBJ, $(QT_FLAGS) $(QT_INCLUDES)) $(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) $(APP_DEP_LIBS) | $(APP_DEPS) $(call LINK_CXX_BIN, $(APP_LIBS)) ### ### Special targets ### clean: -$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o distclean: clean -$(RM) $(DISTCLEAN_TARGETS) *~ core *.core .PHONY: clean distclean all