changeset 262:847917a62ea2

Build system cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 Jan 2020 03:08:32 +0200
parents f6a99b984b8e
children f0e180b13e05
files Makefile.gen
diffstat 1 files changed, 39 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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)