Mercurial > hg > syntilista
view Makefile.gen @ 267:2400c2fac4b1
Add Makefile option for building with ASAN.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 13 Feb 2021 12:33:46 +0200 |
parents | f0e180b13e05 |
children | 7276fe5efff6 |
line wrap: on
line source
### ### Compiler flags ### CFLAGS += -W -Wall -Wextra CXXFLAGS += -W -Wall -Wextra -std=c++11 ifneq ($(ASAN),) XCFLAGS = -fsanitize=address LDFLAGS += -lasan else XCFLAGS = -O2 endif CFLAGS += $(XCFLAGS) CXXFLAGS += $(XCFLAGS) ### ### 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 ### ### Main targets and objects ### DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG \ -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB \ -DQT_CORE_LIB # Application stuff 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_IMG ?= CafeKampus_logo_FINAL_RGB.png ICON_PNGS = icon-64.png icon-48.png icon-32.png icon-16.png APP_RESOURCES += $(addprefix $(APP_IMG),logo.png $(ICON_PNGS)) COPYING.html # 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:MOC,$@ $<,$(QT_MOC) $(DEFINES) $(QT_MOC_FLAGS) $(INCPATH) $< -o $@) ui_%.h: %.ui @$(call DO_CMD,Qt:UIC,$@ $<,$(QT_UIC) $(QT_UIC_FLAGS) $< -o $@) $(OBJPATH)%.o: src/%.cpp src/%.h $(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH) $(OBJPATH)%.o: src/%.cpp $(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH) ### ### 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 ### #$(APP_IMG)icon-%.png: $(addprefix $(APP_IMG),$(LOGO_SVG)) # inkscape --export-area-page -w $(patsubst $(APP_IMG)icon-%.png,%,$@) -h $(patsubst $(APP_IMG)icon-%.png,%,$@) -e "$@" "$<" #$(APP_IMG)logo.png: $(addprefix $(APP_IMG),$(LOGO_SVG)) # inkscape --export-area-page -w 258 -h 220 -e "$@" "$<" $(APP_IMG)icon-%.png: $(addprefix $(APP_IMG),$(LOGO_IMG)) convert "$<" -scale "$(patsubst $(APP_IMG)icon-%.png,%,$@)x$(patsubst $(APP_IMG)icon-%.png,%,$@)" "$@" $(APP_IMG)logo.png: $(addprefix $(APP_IMG),$(LOGO_IMG)) convert "$<" -scale "258x220" "$@" icon.ico: $(addprefix $(APP_IMG),$(ICON_PNGS)) @$(call DO_CMD,CONVERT,$+ -> $@,convert $+ $@) src/%.cpp: src/%.qrc $(APP_RESOURCES) @$(call DO_CMD,Qt:RCC,$@ $<,$(QT_RCC) -name "Syntilista" $< -o $@) $(OBJPATH)main.o: src/main.cpp $(APP_HDRS) VERSION $(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH) $(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) $(APP_DEP_LIBS) | $(APP_DEPS) $(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