Mercurial > hg > syntilista
view Makefile.gen @ 279:770d1ea07a49
Add LOGO_SIZE Makefile variable.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 18 Apr 2023 13:43:35 +0300 |
parents | d1f34cbc306e |
children | 755fe3f8c08f |
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_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: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 $(call COMPILE_CXX_OBJ, $(DEFINES) $(INCPATH)) $(OBJPATH)%.o: src/%.cpp $(call 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 ### 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:RCC,$@ $<,$(QT_RCC) -name "Syntilista" $< -o $@) $(OBJPATH)main.o: src/main.cpp $(APP_HDRS) VERSION $(call COMPILE_CXX_OBJ, $(DEFINES) $(INCPATH)) $(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