From cb87d2b27882982111a88b518eee5bfa96c0469d Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 3 Mar 2019 14:50:05 +0000 Subject: [PATCH] defs.mk, defs-cpp.mk: Some more reordering of compiler flags Signed-off-by: Jan Lindemann --- make/defs-cpp.mk | 127 +++++++++++++++++++++++++---------------------- make/defs.mk | 23 ++++++--- 2 files changed, 85 insertions(+), 65 deletions(-) diff --git a/make/defs-cpp.mk b/make/defs-cpp.mk index 44592b57..36276ec7 100644 --- a/make/defs-cpp.mk +++ b/make/defs-cpp.mk @@ -72,28 +72,30 @@ endif ifneq ($(TARGET_TRIPLET),$(HOST_TRIPLET)) # we're cross-compiling - TC_BIN_PREFIX = $(TARGET_TRIPLET)- + TC_BIN_PREFIX ?= $(TARGET_TRIPLET)- TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET) - PROJECT_LDFLAGS += -L$(TC_SYS_ROOT)/lib - PROJECT_CFLAGS += -I$(TC_SYS_ROOT)/include - PROJECT_CPPFLAGS += -I$(TC_SYS_ROOT)/include ifeq ($(TARGET),mingw) ifneq ($(wildcard $(TC_BIN_PREFIX)gcc),) - PROJECT_CFLAGS += -D_WINDOWS - PROJECT_CPPFLAGS += -D_WINDOWS - TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET)/sys-root/mingw CROSS_TOOL_DIR ?= + TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET)/sys-root/mingw else CROSS_TOOL_DIR ?= /opt/cross-tools TC_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32- endif - WINDRES ?= $(TC_BIN_PREFIX)windres + + PROJECT_CFLAGS += -D_WINDOWS + PROJECT_CPPFLAGS += -D_WINDOWS BUILD_LDFLAGS += -lws2_32 + WINDRES ?= $(TC_BIN_PREFIX)windres USE_GFILTER ?= false MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE - endif # ifeq ($(TARGET),mingw) + endif + + PROJECT_CFLAGS += -I$(TC_SYS_ROOT)/include + PROJECT_CPPFLAGS += -I$(TC_SYS_ROOT)/include + PROJECT_LDFLAGS += -L$(TC_SYS_ROOT)/lib else # we're not cross-compiling @@ -108,51 +110,70 @@ ifeq ($(TARGET_ARCH),x86_64) LIBFLAGS += endif -GCC ?= $(TC_BIN_PREFIX)gcc -GPP ?= $(TC_BIN_PREFIX)g++ -CPP ?= $(GPP) -LD ?= $(TC_BIN_PREFIX)ld -CLANG ?= $(TC_BIN_PREFIX)clang -CLANGPP ?= $(TC_BIN_PREFIX)clang++ -STRIP ?= $(TC_BIN_PREFIX)strip -RANLIB ?= $(TC_BIN_PREFIX)ranlib -AR ?= $(TC_BIN_PREFIX)ar -PKG_CONFIG ?= $(TC_BIN_PREFIX)pkg-config +ifeq ($(TARGET_TRIPLET),arm-none-eabi) + BUILD_CFLAGS += -mcpu=cortex-m3 -mthumb + BUILD_CPPFLAGS += -mcpu=cortex-m3 -mthumb +endif -# compiler and linker -# gcc -GCC_VERSION := $(shell $(GCC) -v 2>&1 | $(SED) '/gcc.version/I !d; s/.*version *//I; s/ \+.*//') -GCC_VERSION_NUMBERS := $(subst ., ,$(GCC_VERSION)) -GCC_MAJOR := $(word 1,$(GCC_VERSION_NUMBERS)) -GCC_MINOR := $(word 2,$(GCC_VERSION_NUMBERS)) -GCC_REV := $(word 3,$(GCC_VERSION_NUMBERS)) +ifeq ($(COMPILER_SUITE),gcc) -LD_VERSION := $(shell $(LD) -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//') -LD_VERSION_NUMBERS := $(subst ., ,$(LD_VERSION)) -LD_MAJOR := $(word 1,$(LD_VERSION_NUMBERS)) -LD_MINOR := $(word 2,$(LD_VERSION_NUMBERS)) -LD_REV := $(word 3,$(LD_VERSION_NUMBERS)) + GCC ?= $(TC_BIN_PREFIX)gcc + GPP ?= $(TC_BIN_PREFIX)g++ + CPP ?= $(GPP) + GNU_LD ?= $(TC_BIN_PREFIX)ld + CLANG ?= $(TC_BIN_PREFIX)clang + CLANGPP ?= $(TC_BIN_PREFIX)clang++ + STRIP ?= $(TC_BIN_PREFIX)strip + RANLIB ?= $(TC_BIN_PREFIX)ranlib + AR ?= $(TC_BIN_PREFIX)ar + PKG_CONFIG ?= $(TC_BIN_PREFIX)pkg-config + + # compiler and linker + # gcc + GCC_VERSION := $(shell $(GCC) -v 2>&1 | $(SED) '/gcc.version/I !d; s/.*version *//I; s/ \+.*//') + GCC_VERSION_NUMBERS := $(subst ., ,$(GCC_VERSION)) + GCC_MAJOR := $(word 1,$(GCC_VERSION_NUMBERS)) + GCC_MINOR := $(word 2,$(GCC_VERSION_NUMBERS)) + GCC_REV := $(word 3,$(GCC_VERSION_NUMBERS)) -# clang -CLANG_CPPFLAGS += -Wno-unused-private-field -Wno-self-assign-field -Wno-overloaded-virtual + # Not needed anywhere + #GNU_LD_VERSION := $(shell $(LD) -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//') + #GNU_LD_VERSION_NUMBERS:= $(subst ., ,$(GNU_LD_VERSION)) + #GNU_LD_MAJOR := $(word 1,$(GNU_LD_VERSION_NUMBERS)) + #GNU_LD_MINOR := $(word 2,$(GNU_LD_VERSION_NUMBERS)) + #GNU_LD_REV := $(word 3,$(GNU_LD_VERSION_NUMBERS)) -ifneq ($(GCC_VERSION),4.1.0) - ifneq ($(GCC_VERSION),4.5.1) - BUILD_CFLAGS += -std=gnu99 - BUILD_CPPFLAGS += -std=c++11 - #BUILD_CPPFLAGS += -Wsuggest-override + CC = $(GCC) + CPP = $(GPP) + LD = $(GPP) + + ifneq ($(GCC_VERSION),4.1.0) + ifneq ($(GCC_VERSION),4.5.1) + BUILD_CFLAGS += -std=gnu11 + BUILD_CPPFLAGS += -std=c++11 + #BUILD_CPPFLAGS += -Wsuggest-override + endif endif -endif - -ifeq ($(shell test $(GCC_MAJOR) -ge 5; echo $$?),0) - ifeq ($(USE_CPP_FORCE_OVERRIDE),true) - GCC_CPPFLAGS += -Werror=suggest-override + + ifeq ($(shell $(TEST) $(GCC_MAJOR) -ge 5; $(ECHO) $$?),0) + ifeq ($(USE_CPP_FORCE_OVERRIDE),true) + GCC_CPPFLAGS += -Werror=suggest-override + endif endif -endif -ifeq ($(USE_CPP_WARN_INCONSISTENT_OVERRIDE),true) - CLANG_CPPFLAGS += -Winconsistent-missing-override -endif +else ifeq ($(COMPILER_SUITE),clang) + + # clang + CLANG_CPPFLAGS += -Wno-unused-private-field -Wno-self-assign-field -Wno-overloaded-virtual + CC = $(CLANG) + CPP = $(CLANGPP) + LD = $(CLANGPP) + + ifeq ($(USE_CPP_WARN_INCONSISTENT_OVERRIDE),true) + CLANG_CPPFLAGS += -Winconsistent-missing-override + endif + +endif # COMPILER_SUITE # -- target files and dirs @@ -259,18 +280,6 @@ ifeq ($(USE_GFILTER),true) endif endif -ifeq "$(COMPILER_SUITE)" "gcc" -CC = $(GCC) -CPP = $(GPP) -LD = $(GPP) -endif - -ifeq "$(COMPILER_SUITE)" "clang" -CC = $(CLANG) -CPP = $(CLANGPP) -LD = $(CLANGPP) -endif - ifeq ($(USE_PROJECT_LIB),true) PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib -l$(LIBNAME) endif diff --git a/make/defs.mk b/make/defs.mk index 6a649509..fd59d7f5 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -22,10 +22,18 @@ endif ifndef GREP GREP := $(shell $(WHICH) grep) endif +ifndef ECHO + ECHO := $(shell $(WHICH) echo) +endif +ifndef TEST + TEST := $(shell $(WHICH) test) +endif ifndef SED SED := $(shell $(WHICH) sed) endif +ifndef CAT CAT := $(shell $(WHICH) cat) +endif ifndef BROWSER BROWSER := $(shell $(WHICH) xdg-open) endif @@ -135,10 +143,10 @@ endif define install_links cwd="$(CWD)"; \ - echo "o in $(INSTALL_$(1)DIR):" ;\ + $(ECHO) "o in $(INSTALL_$(1)DIR):" ;\ for f in $(notdir $(INSTALLED_$(1))); do \ cd $(INSTALL_$(1)DIR); \ - echo " $(SUDO) ln -sf $$cwd/$$f" ; \ + $(ECHO) " $(SUDO) ln -sf $$cwd/$$f" ; \ $(SUDO) ln -sf $$cwd/$$f; \ done; endef @@ -147,7 +155,7 @@ endef # ----- standard variables ifeq ($(PROJECT),) - PROJECT := $(shell echo $(patsubst $(FLAVOUR_PREFIX)%,%,$(notdir $(realpath $(TOPDIR)))) | $(SED) 's/-[0-9].*//') + PROJECT := $(shell $(ECHO) $(patsubst $(FLAVOUR_PREFIX)%,%,$(notdir $(realpath $(TOPDIR)))) | $(SED) 's/-[0-9].*//') endif ifneq ($(wildcard $(TOPDIR)/.git),) @@ -161,6 +169,9 @@ endif ifndef BUILD_USER BUILD_USER := $(shell $(ID) -un) endif +ifndef BUILD_GROUP + BUILD_GROUP := $(shell $(ID) -gn) +endif JANWARE_USER ?= $(BUILD_USER) export JANWARE_USER ifndef FULL_NAME @@ -204,7 +215,7 @@ endif PROJECT_DESCR_FILE ?= $(wildcard $(TOPDIR)/make/project.conf) PROJECT_SHORT_NAME ?= $(PROJECT) -PROJECT_CAPNAME := $(shell echo $(PROJECT) | tr [a-z] [A-Z] | $(SED) 's/-/_/g') +PROJECT_CAPNAME := $(shell $(ECHO) $(PROJECT) | tr [a-z] [A-Z] | $(SED) 's/-/_/g') PROJECT_DESCR ?= $(call proj_query, summary $(PROJECT)) PROJECT_SUMMARY ?= $(PROJECT_DESCR) @@ -220,9 +231,9 @@ ifeq ($(VERSION),) endif endif DIST_VERSION ?= $(patsubst %-dev,%,$(VERSION)) -HEX_VERSION := $(shell echo $(DIST_VERSION) | \ +HEX_VERSION := $(shell $(ECHO) $(DIST_VERSION) | \ $(SED) 's/-dev//; s/pre[^\.]*//; s/F[^\.]//; s/[\.-]/ /g' | $(XARGS) $(PRINTF) "0x%02x%02x%02x%02x") -BINARY_VERSION := $(shell echo $(PROJECT)_$(DIST_VERSION) | tr [a-z] [A-Z] | $(SED) 's/-[^-]*$$//; s/-/_/g') +BINARY_VERSION := $(shell $(ECHO) $(PROJECT)_$(DIST_VERSION) | tr [a-z] [A-Z] | $(SED) 's/-[^-]*$$//; s/-/_/g') WINVERSION = $(subst .,_,$(VERSION)) LOCAL_VERSION = $(VERSION) LOCAL_WINVERSION = $(subst .,_,$(VERSION))