defs.mk, defs-cpp.mk: Some more reordering of compiler flags

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2019-03-03 14:50:05 +00:00
commit cb87d2b278
2 changed files with 85 additions and 65 deletions

View file

@ -72,28 +72,30 @@ endif
ifneq ($(TARGET_TRIPLET),$(HOST_TRIPLET)) # we're cross-compiling 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) 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) ifeq ($(TARGET),mingw)
ifneq ($(wildcard $(TC_BIN_PREFIX)gcc),) 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 ?= CROSS_TOOL_DIR ?=
TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET)/sys-root/mingw
else else
CROSS_TOOL_DIR ?= /opt/cross-tools CROSS_TOOL_DIR ?= /opt/cross-tools
TC_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32- TC_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32-
endif endif
WINDRES ?= $(TC_BIN_PREFIX)windres
PROJECT_CFLAGS += -D_WINDOWS
PROJECT_CPPFLAGS += -D_WINDOWS
BUILD_LDFLAGS += -lws2_32 BUILD_LDFLAGS += -lws2_32
WINDRES ?= $(TC_BIN_PREFIX)windres
USE_GFILTER ?= false USE_GFILTER ?= false
MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE 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 else # we're not cross-compiling
@ -108,51 +110,70 @@ ifeq ($(TARGET_ARCH),x86_64)
LIBFLAGS += LIBFLAGS +=
endif endif
GCC ?= $(TC_BIN_PREFIX)gcc ifeq ($(TARGET_TRIPLET),arm-none-eabi)
GPP ?= $(TC_BIN_PREFIX)g++ BUILD_CFLAGS += -mcpu=cortex-m3 -mthumb
CPP ?= $(GPP) BUILD_CPPFLAGS += -mcpu=cortex-m3 -mthumb
LD ?= $(TC_BIN_PREFIX)ld endif
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 ifeq ($(COMPILER_SUITE),gcc)
# 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))
LD_VERSION := $(shell $(LD) -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//') GCC ?= $(TC_BIN_PREFIX)gcc
LD_VERSION_NUMBERS := $(subst ., ,$(LD_VERSION)) GPP ?= $(TC_BIN_PREFIX)g++
LD_MAJOR := $(word 1,$(LD_VERSION_NUMBERS)) CPP ?= $(GPP)
LD_MINOR := $(word 2,$(LD_VERSION_NUMBERS)) GNU_LD ?= $(TC_BIN_PREFIX)ld
LD_REV := $(word 3,$(LD_VERSION_NUMBERS)) 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
# clang # compiler and linker
CLANG_CPPFLAGS += -Wno-unused-private-field -Wno-self-assign-field -Wno-overloaded-virtual # 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))
ifneq ($(GCC_VERSION),4.1.0) # Not needed anywhere
ifneq ($(GCC_VERSION),4.5.1) #GNU_LD_VERSION := $(shell $(LD) -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//')
BUILD_CFLAGS += -std=gnu99 #GNU_LD_VERSION_NUMBERS:= $(subst ., ,$(GNU_LD_VERSION))
BUILD_CPPFLAGS += -std=c++11 #GNU_LD_MAJOR := $(word 1,$(GNU_LD_VERSION_NUMBERS))
#BUILD_CPPFLAGS += -Wsuggest-override #GNU_LD_MINOR := $(word 2,$(GNU_LD_VERSION_NUMBERS))
#GNU_LD_REV := $(word 3,$(GNU_LD_VERSION_NUMBERS))
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
endif
ifeq ($(shell test $(GCC_MAJOR) -ge 5; echo $$?),0) ifeq ($(shell $(TEST) $(GCC_MAJOR) -ge 5; $(ECHO) $$?),0)
ifeq ($(USE_CPP_FORCE_OVERRIDE),true) ifeq ($(USE_CPP_FORCE_OVERRIDE),true)
GCC_CPPFLAGS += -Werror=suggest-override GCC_CPPFLAGS += -Werror=suggest-override
endif
endif endif
endif
ifeq ($(USE_CPP_WARN_INCONSISTENT_OVERRIDE),true) else ifeq ($(COMPILER_SUITE),clang)
CLANG_CPPFLAGS += -Winconsistent-missing-override
endif # 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 # -- target files and dirs
@ -259,18 +280,6 @@ ifeq ($(USE_GFILTER),true)
endif endif
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) ifeq ($(USE_PROJECT_LIB),true)
PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib -l$(LIBNAME) PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib -l$(LIBNAME)
endif endif

View file

@ -22,10 +22,18 @@ endif
ifndef GREP ifndef GREP
GREP := $(shell $(WHICH) grep) GREP := $(shell $(WHICH) grep)
endif endif
ifndef ECHO
ECHO := $(shell $(WHICH) echo)
endif
ifndef TEST
TEST := $(shell $(WHICH) test)
endif
ifndef SED ifndef SED
SED := $(shell $(WHICH) sed) SED := $(shell $(WHICH) sed)
endif endif
ifndef CAT
CAT := $(shell $(WHICH) cat) CAT := $(shell $(WHICH) cat)
endif
ifndef BROWSER ifndef BROWSER
BROWSER := $(shell $(WHICH) xdg-open) BROWSER := $(shell $(WHICH) xdg-open)
endif endif
@ -135,10 +143,10 @@ endif
define install_links define install_links
cwd="$(CWD)"; \ cwd="$(CWD)"; \
echo "o in $(INSTALL_$(1)DIR):" ;\ $(ECHO) "o in $(INSTALL_$(1)DIR):" ;\
for f in $(notdir $(INSTALLED_$(1))); do \ for f in $(notdir $(INSTALLED_$(1))); do \
cd $(INSTALL_$(1)DIR); \ cd $(INSTALL_$(1)DIR); \
echo " $(SUDO) ln -sf $$cwd/$$f" ; \ $(ECHO) " $(SUDO) ln -sf $$cwd/$$f" ; \
$(SUDO) ln -sf $$cwd/$$f; \ $(SUDO) ln -sf $$cwd/$$f; \
done; done;
endef endef
@ -147,7 +155,7 @@ endef
# ----- standard variables # ----- standard variables
ifeq ($(PROJECT),) 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 endif
ifneq ($(wildcard $(TOPDIR)/.git),) ifneq ($(wildcard $(TOPDIR)/.git),)
@ -161,6 +169,9 @@ endif
ifndef BUILD_USER ifndef BUILD_USER
BUILD_USER := $(shell $(ID) -un) BUILD_USER := $(shell $(ID) -un)
endif endif
ifndef BUILD_GROUP
BUILD_GROUP := $(shell $(ID) -gn)
endif
JANWARE_USER ?= $(BUILD_USER) JANWARE_USER ?= $(BUILD_USER)
export JANWARE_USER export JANWARE_USER
ifndef FULL_NAME ifndef FULL_NAME
@ -204,7 +215,7 @@ endif
PROJECT_DESCR_FILE ?= $(wildcard $(TOPDIR)/make/project.conf) PROJECT_DESCR_FILE ?= $(wildcard $(TOPDIR)/make/project.conf)
PROJECT_SHORT_NAME ?= $(PROJECT) 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_DESCR ?= $(call proj_query, summary $(PROJECT))
PROJECT_SUMMARY ?= $(PROJECT_DESCR) PROJECT_SUMMARY ?= $(PROJECT_DESCR)
@ -220,9 +231,9 @@ ifeq ($(VERSION),)
endif endif
endif endif
DIST_VERSION ?= $(patsubst %-dev,%,$(VERSION)) 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") $(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)) WINVERSION = $(subst .,_,$(VERSION))
LOCAL_VERSION = $(VERSION) LOCAL_VERSION = $(VERSION)
LOCAL_WINVERSION = $(subst .,_,$(VERSION)) LOCAL_WINVERSION = $(subst .,_,$(VERSION))