Mercurial > hg > syntilista
view 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 |
line wrap: on
line source
### ### Compiler flags ### CFLAGS += -O2 -W -Wall -Wextra CXXFLAGS += -O2 -W -Wall -Wextra -std=c++11 ### ### 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$(EXEEXT) 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 ! -d "$(1)"; then 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 @$(CXX) $(CXXFLAGS) -dM -E -o $@ $(OBJPATH)dummy.cpp moc_%.cpp: %.h $(QT_MOC_RULES) @echo " Qt::MOC $@ $<" @$(QT_MOC) $(DEFINES) $(QT_MOC_FLAGS) $(INCPATH) $< -o $@ ui_%.h: %.ui @echo " 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 @echo " 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)) @echo " CONVERT $+ -> $@" @convert $+ $@ src/%.cpp: src/%.qrc $(APP_RESOURCES) @echo " 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