From 2bec15e310de37398cf5bb8135f15d15ab2bb54b Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Wed, 29 Jan 2020 15:35:17 -0500 Subject: [PATCH 71/86] Make scan-build and CC=clang work again. Signed-off-by: Peter Jones --- src/Makefile | 3 +++ src/include/defaults.mk | 58 ++++++++++++++++++++++++++++++++--------- src/include/deps.mk | 4 +-- src/include/rules.mk | 2 -- 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/Makefile b/src/Makefile index 1d0e217c89b..144289d4709 100644 --- a/src/Makefile +++ b/src/Makefile @@ -53,8 +53,11 @@ include/efivar/efivar-guids.h : makeguids guids.txt makeguids : CPPFLAGS=$(HOST_CPPFLAGS) makeguids : LIBS=dl +makeguids : CC=$(HOSTCC) makeguids : CCLD=$(HOSTCCLD) makeguids : CFLAGS=$(HOST_CFLAGS) +makeguids : LDFLAGS=$(HOST_LDFLAGS) +makeguids : CCLDFLAGS=$(HOST_CCLDFLAGS) makeguids : $(MAKEGUIDS_SOURCES) guids.o : guids.S | guids.bin names.bin diff --git a/src/include/defaults.mk b/src/include/defaults.mk index 781587b4215..bc515e36305 100644 --- a/src/include/defaults.mk +++ b/src/include/defaults.mk @@ -9,13 +9,18 @@ PCDIR ?= $(LIBDIR)/pkgconfig DESTDIR ?= CROSS_COMPILE ?= -COMPILER ?= gcc +COMPILER ?= gcc +ifeq ($(origin CC),command line) +override COMPILER := $(CC) +override CC := $(CROSS_COMPILE)$(COMPILER) +endif $(call set-if-undefined,CC,$(CROSS_COMPILE)$(COMPILER)) $(call set-if-undefined,CCLD,$(CC)) $(call set-if-undefined,HOSTCC,$(COMPILER)) $(call set-if-undefined,HOSTCCLD,$(HOSTCC)) -OPTIMIZE ?= -O2 -flto +OPTIMIZE_GCC = -flto +OPTIMIZE ?= -O2 $(call family,OPTIMIZE) DEBUGINFO ?= -g3 WARNINGS_GCC ?= -Wmaybe-uninitialized \ -Wno-nonnull-compare @@ -30,7 +35,7 @@ override _CPPFLAGS := $(CPPFLAGS) override CPPFLAGS = $(_CPPFLAGS) -DLIBEFIVAR_VERSION=$(VERSION) \ -D_GNU_SOURCE \ -I$(TOPDIR)/src/include/ -CFLAGS ?= $(OPTIMIZE) $(DEBUGINFO) $(WARNINGS) $(ERRORS) +CFLAGS ?= $(FULL_OPTIMIZE) $(DEBUGINFO) $(WARNINGS) $(ERRORS) CFLAGS_GCC ?= -specs=$(TOPDIR)/src/include/gcc.specs \ -fno-merge-constants override _CFLAGS := $(CFLAGS) @@ -40,22 +45,32 @@ override CFLAGS = $(_CFLAGS) \ -fvisibility=hidden \ $(call family,CFLAGS) \ $(call pkg-config-cflags) -LDFLAGS_CLANG ?= -Wl,--fatal-warnings,-pie,-z,relro +LDFLAGS_CLANG ?= -rtlib=compiler-rt +CCLDFLAGS ?= LDFLAGS ?= +override _CCLDFLAGS := $(CCLDFLAGS) override _LDFLAGS := $(LDFLAGS) -override LDFLAGS = $(_LDFLAGS) \ +override LDFLAGS = $(CFLAGS) -L. $(_LDFLAGS) $(_CCLDFLAGS) \ -Wl,--add-needed \ -Wl,--build-id \ -Wl,--no-allow-shlib-undefined \ -Wl,--no-undefined-version \ -Wl,-z,now \ -Wl,-z,muldefs \ - $(call family,LDFLAGS) -CCLDFLAGS ?= -override _CCLDFLAGS := $(CCLDFLAGS) -override CCLDFLAGS = $(CFLAGS) -L. $(_CCLDFLAGS) \ - $(LDFLAGS) \ - $(call pkg-config-ccldflags) + -Wl,-z,relro \ + -Wl,--fatal-warnings \ + $(call family,LDFLAGS) $(call family,CCLDFLAGS) \ + $(call pkg-config-ccldflags) +override CCLDFLAGS = $(LDFLAGS) +SOFLAGS_GCC = +SOFLAGS_CLANG = +SOFLAGS ?= +override _SOFLAGS := $(SOFLAGS) +override SOFLAGS = $(_SOFLAGS) \ + -shared -Wl,-soname,$@.1 \ + -Wl,--version-script=$(MAP) \ + $(call family,SOFLAGS) + HOST_ARCH=$(shell uname -m) ifneq ($(HOST_ARCH),ia64) HOST_MARCH=-march=native @@ -66,9 +81,27 @@ HOST_CPPFLAGS ?= $(CPPFLAGS) override _HOST_CPPFLAGS := $(HOST_CPPFLAGS) override HOST_CPPFLAGS = $(_HOST_CPPFLAGS) \ -DEFIVAR_BUILD_ENVIRONMENT $(HOST_MARCH) -HOST_CFLAGS ?= $(CFLAGS) +HOST_CFLAGS_CLANG ?= +HOST_CFLAGS ?= $(CFLAGS) $(call family,HOST_CFLAGS) override _HOST_CFLAGS := $(HOST_CFLAGS) override HOST_CFLAGS = $(_HOST_CFLAGS) +HOST_LDFLAGS_CLANG ?= -Wl,--fatal-warnings,-z,relro -rtlib=compiler-rt +HOST_LDFLAGS_GCC ?= -Wl,--no-undefined-version +HOST_LDFLAGS ?= +HOST_CCLDFLAGS ?= +override _HOST_LDFLAGS := $(HOST_LDFLAGS) +override _HOST_CCLDFLAGS := $(HOST_CCLDFLAGS) +override HOST_LDFLAGS = $(HOST_CFLAGS) -L. \ + $(_HOST_LDFLAGS) $(_HOST_CCLDFLAGS) \ + -Wl,--add-needed \ + -Wl,--build-id \ + -Wl,--no-allow-shlib-undefined \ + -Wl,-z,now \ + -Wl,-z,muldefs \ + $(call family,HOST_LDFLAGS) \ + $(call family,HOST_CCLDFLAGS) \ + $(call pkg-config-ccldflags) +override HOST_CCLDFLAGS = $(HOST_LDFLAGS) PKG_CONFIG = $(shell if [ -e "$$(env $(CROSS_COMPILE)pkg-config 2>&1)" ]; then echo $(CROSS_COMPILE)pkg-config ; else echo pkg-config ; fi) INSTALL ?= install @@ -80,7 +113,6 @@ ABIDIFF := abidiff PKGS = -SOFLAGS=-shared $(call family,SOFLAGS) LDLIBS=$(foreach lib,$(LIBS),-l$(lib)) $(call pkg-config-ldlibs) COMMIT_ID=$(shell git log -1 --pretty=%H 2>/dev/null || echo master) diff --git a/src/include/deps.mk b/src/include/deps.mk index a797d1bdbf5..3c8243144dc 100644 --- a/src/include/deps.mk +++ b/src/include/deps.mk @@ -7,10 +7,10 @@ include $(TOPDIR)/src/include/rules.mk include $(TOPDIR)/src/include/defaults.mk .%.d : %.c - $(CC) $(cflags) $(CPPFLAGS) -MM -MG -MF $@ $^ + $(CC) $(CFLAGS) $(CPPFLAGS) -MM -MG -MF $@ $^ .%.d : %.S - $(CC) $(cflags) $(CPPFLAGS) -MM -MG -MF $@ $^ + $(CC) $(CFLAGS) $(CPPFLAGS) -MM -MG -MF $@ $^ SOURCES ?= diff --git a/src/include/rules.mk b/src/include/rules.mk index ff0ff4ef61b..99a6329e3fe 100644 --- a/src/include/rules.mk +++ b/src/include/rules.mk @@ -30,8 +30,6 @@ family = $(foreach FAMILY_SUFFIX,$(FAMILY_SUFFIXES),$($(1)_$(FAMILY_SUFFIX))) %.so : $(CCLD) $(CCLDFLAGS) $(CPPFLAGS) $(SOFLAGS) \ - -Wl,-soname,$@.1 \ - -Wl,--version-script=$(MAP) \ -o $@ $^ $(LDLIBS) ln -vfs $@ $@.1 -- 2.24.1