# HG changeset patch # User Matti Hamalainen # Date 1578964112 -7200 # Node ID 847917a62ea2d3998b9dd2ea0c48f6f73acfc97b # Parent f6a99b984b8ea932a314bb839ac5711e86a3d782 Build system cleanups. diff -r f6a99b984b8e -r 847917a62ea2 Makefile.gen --- a/Makefile.gen Tue Dec 24 05:38:12 2019 +0200 +++ b/Makefile.gen Tue Jan 14 03:08:32 2020 +0200 @@ -1,11 +1,13 @@ ### -### Main build file +### Compiler flags ### - CFLAGS += -O2 -W -Wall -Wextra CXXFLAGS += -O2 -W -Wall -Wextra -std=c++11 -# Tools + +### +### Tools, paths and directories +### ifneq ($(BINTOOL_PREFIX),) CC = $(BINTOOL_PREFIX)gcc CXX = $(BINTOOL_PREFIX)g++ @@ -14,11 +16,15 @@ RANLIB = $(BINTOOL_PREFIX)ranlib WINDRES = $(BINTOOL_PREFIX)windres + INSTALL ?= install MKDIR ?= mkdir MKDIR_P ?= $(MKDIR) -p -# Common defines + +### +### Main targets and objects +### DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG \ -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB \ -DQT_CORE_LIB @@ -68,23 +74,41 @@ CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\" +### +### Functions and compilation/link commands +### ifneq ($(V),1) -COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $< -COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CXX $<" && $(CXX) $(CXXFLAGS) -c -o $@ $< -LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+) -LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CXX) -o $@ $(filter %.o %.a,$+) -LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@ +DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) else -COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $<" && $(CC) $(CFLAGS) -c -o $@ $< -COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CXX) $(CXXFLAGS) -c -o $@ $<" && $(CXX) $(CXXFLAGS) -c -o $@ $< -LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+) -LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CXX) -o $@ $(filter %.o %.a,$+)" && $(CXX) -o $@ $(filter %.o %.a,$+) -LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@ +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) $@) ### -### Target rules +### Generic target rules ### all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)