# HG changeset patch # User Matti Hamalainen # Date 1691056198 -10800 # Node ID 18bef142108d2f7fb9c1f4cd80a98d9821025fef # Parent abebda3ec9cd70275c6558db95efbce87a7e52e7 Rename Makefile.gen to Makefile.common diff -r abebda3ec9cd -r 18bef142108d Makefile --- a/Makefile Wed May 17 11:42:11 2023 +0300 +++ b/Makefile Thu Aug 03 12:49:58 2023 +0300 @@ -1,6 +1,6 @@ ### ### Configuration settings for Linux and generic UNIX -### See other Makefile.gen etc files for more options. +### See other Makefile.common etc files for more options. ### QT_VERSION_PREFIX = Qt6 @@ -27,4 +27,4 @@ QT_MOC_RULES = QT_UIC_FLAGS = -include Makefile.gen +include Makefile.common diff -r abebda3ec9cd -r 18bef142108d Makefile.common --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.common Thu Aug 03 12:49:58 2023 +0300 @@ -0,0 +1,210 @@ +### +### 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 diff -r abebda3ec9cd -r 18bef142108d Makefile.cross-mingw --- a/Makefile.cross-mingw Wed May 17 11:42:11 2023 +0300 +++ b/Makefile.cross-mingw Thu Aug 03 12:49:58 2023 +0300 @@ -54,7 +54,7 @@ CLEAN_TARGETS += src/winres.rc -include Makefile.gen +include Makefile.common install: all diff -r abebda3ec9cd -r 18bef142108d Makefile.gen --- a/Makefile.gen Wed May 17 11:42:11 2023 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -### -### 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