From 080d5caa17db3648723bbf5e4db4342a47a9a83f Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Wed, 10 Jun 2020 18:54:14 +0200 Subject: [PATCH 1/3] makefiles/toolchain: don't export all variables There are already exported globally in vars.inc.mk --- makefiles/toolchain/afl.inc.mk | 8 +++---- makefiles/toolchain/gnu.inc.mk | 32 +++++++++++++-------------- makefiles/toolchain/llvm.inc.mk | 38 ++++++++++++++++----------------- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/makefiles/toolchain/afl.inc.mk b/makefiles/toolchain/afl.inc.mk index 643bd47c01..ced11c1258 100644 --- a/makefiles/toolchain/afl.inc.mk +++ b/makefiles/toolchain/afl.inc.mk @@ -1,6 +1,6 @@ include $(RIOTMAKE)/toolchain/gnu.inc.mk -export CC = $(PREFIX)afl-gcc -export CXX = $(PREFIX)afl-g++ -export LINK = $(PREFIX)afl-gcc -export LINKXX = $(PREFIX)afl-g++ +CC = $(PREFIX)afl-gcc +CXX = $(PREFIX)afl-g++ +LINK = $(PREFIX)afl-gcc +LINKXX = $(PREFIX)afl-g++ diff --git a/makefiles/toolchain/gnu.inc.mk b/makefiles/toolchain/gnu.inc.mk index 651cbf2510..74e2120473 100644 --- a/makefiles/toolchain/gnu.inc.mk +++ b/makefiles/toolchain/gnu.inc.mk @@ -1,26 +1,26 @@ -export CC = $(PREFIX)gcc -export CXX = $(PREFIX)g++ -export CCAS ?= $(CC) +CC = $(PREFIX)gcc +CXX = $(PREFIX)g++ +CCAS ?= $(CC) ifeq ($(LTO),1) -export AR = $(PREFIX)gcc-ar -export RANLIB = $(PREFIX)gcc-ranlib + AR = $(PREFIX)gcc-ar + RANLIB = $(PREFIX)gcc-ranlib else -export AR = $(PREFIX)ar -export RANLIB = $(PREFIX)ranlib + AR = $(PREFIX)ar + RANLIB = $(PREFIX)ranlib endif -export AS = $(PREFIX)as -export NM = $(PREFIX)nm -export LINK = $(PREFIX)gcc -export LINKXX = $(PREFIX)g++ -export SIZE = $(PREFIX)size +AS = $(PREFIX)as +NM = $(PREFIX)nm +LINK = $(PREFIX)gcc +LINKXX = $(PREFIX)g++ +SIZE = $(PREFIX)size _OBJCOPY := $(shell command -v $(PREFIX)objcopy || command -v gobjcopy || command -v objcopy) -export OBJCOPY ?= $(_OBJCOPY) +OBJCOPY ?= $(_OBJCOPY) ifeq ($(OBJCOPY),) -$(warning objcopy not found. Hex file will not be created.) -export OBJCOPY = true + $(warning objcopy not found. Hex file will not be created.) + OBJCOPY = true endif # Default to the native (g)objdump, helps when using toolchain from docker _OBJDUMP := $(or $(shell command -v $(PREFIX)objdump || command -v gobjdump),objdump) -export OBJDUMP ?= $(_OBJDUMP) +OBJDUMP ?= $(_OBJDUMP) # We use GDB for debugging include $(RIOTMAKE)/tools/gdb.inc.mk diff --git a/makefiles/toolchain/llvm.inc.mk b/makefiles/toolchain/llvm.inc.mk index 80c081e815..9898f10f86 100644 --- a/makefiles/toolchain/llvm.inc.mk +++ b/makefiles/toolchain/llvm.inc.mk @@ -1,35 +1,35 @@ -export LLVMPREFIX ?= llvm- +LLVMPREFIX ?= llvm- # Apple XCode doesn't prefix its tools with llvm-, but manually installed LLVM # on OSX might have the llvm- prefix, we can't simply test against uname -s. # Test if llvm-ar exists ifeq (,$(shell command -v $(LLVMPREFIX)ar 2>/dev/null)) -# fall back to system tools -export LLVMPREFIX := + # fall back to system tools + LLVMPREFIX := endif -export CC = clang -export CXX = clang++ -export CCAS ?= $(CC) -export AS = $(LLVMPREFIX)as -export AR = $(LLVMPREFIX)ar -export NM = $(LLVMPREFIX)nm +CC = clang +CXX = clang++ +CCAS ?= $(CC) +AS = $(LLVMPREFIX)as +AR = $(LLVMPREFIX)ar +NM = $(LLVMPREFIX)nm # LLVM does have a linker, however, it is not entirely # compatible with GCC. For instance spec files as used in # `makefiles/libc/newlib.mk` are not supported. Therefore # we just use GCC for now. -export LINK = $(PREFIX)gcc -export LINKXX = $(PREFIX)g++ +LINK = $(PREFIX)gcc +LINKXX = $(PREFIX)g++ # objcopy does not have a clear substitute in LLVM, use GNU binutils -#export OBJCOPY = $(LLVMPREFIX)objcopy -_OBJCOPY := $(shell command -v $(PREFIX)objcopy || command -v gobjcopy || command -v objcopy) -export OBJCOPY ?= $(_OBJCOPY) +# OBJCOPY = $(LLVMPREFIX)objcopy +_OBJCOPY := $(shell command -v $(PREFIX)objcopy || command -v gobjcopy || command -v objcopy) +OBJCOPY ?= $(_OBJCOPY) ifeq ($(OBJCOPY),) -$(warning objcopy not found. Hex file will not be created.) -export OBJCOPY = true + $(warning objcopy not found. Hex file will not be created.) + OBJCOPY = true endif # Default to the native (g)objdump, helps when using toolchain from docker -_OBJDUMP := $(or $(shell command -v $(LLVMPREFIX)objdump || command -v gobjdump),objdump) -export OBJDUMP ?= $(_OBJDUMP) -export SIZE = $(LLVMPREFIX)size +_OBJDUMP := $(or $(shell command -v $(LLVMPREFIX)objdump || command -v gobjdump),objdump) +OBJDUMP ?= $(_OBJDUMP) +SIZE = $(LLVMPREFIX)size # LLVM lacks a binutils strip tool as well... #export STRIP = $(LLVMPREFIX)strip # We use GDB for debugging for now, maybe LLDB will be supported in the future. From c36109516a8c7e53f11fa06f26a92543f05bc278 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Wed, 10 Jun 2020 18:54:46 +0200 Subject: [PATCH 2/3] dist/buildsystem_check: ensure no export of toolchains vars --- dist/tools/buildsystem_sanity_check/check.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dist/tools/buildsystem_sanity_check/check.sh b/dist/tools/buildsystem_sanity_check/check.sh index 5ef5f01fac..2b1faf8bf9 100755 --- a/dist/tools/buildsystem_sanity_check/check.sh +++ b/dist/tools/buildsystem_sanity_check/check.sh @@ -108,6 +108,7 @@ UNEXPORTED_VARIABLES+=('PYOCD_ADAPTER_INIT') UNEXPORTED_VARIABLES+=('JLINK_DEVICE' 'JLINK_IF') UNEXPORTED_VARIABLES+=('JLINK_PRE_FLASH' 'JLINK_RESET_FILE') UNEXPORTED_VARIABLES+=('GIT_CACHE' 'GIT_CACHE_DIR') +UNEXPORTED_VARIABLES+=('LINKXX') EXPORTED_VARIABLES_ONLY_IN_VARS=() EXPORTED_VARIABLES_ONLY_IN_VARS+=('APPDEPS') @@ -121,6 +122,10 @@ EXPORTED_VARIABLES_ONLY_IN_VARS+=('TARGET_ARCH') EXPORTED_VARIABLES_ONLY_IN_VARS+=('TOOLCHAIN') EXPORTED_VARIABLES_ONLY_IN_VARS+=('WERROR') EXPORTED_VARIABLES_ONLY_IN_VARS+=('WPEDANTIC') +EXPORTED_VARIABLES_ONLY_IN_VARS+=('CC[ =]' 'CXX' 'CCAS') +EXPORTED_VARIABLES_ONLY_IN_VARS+=('AR[ =]' 'RANLIB') +EXPORTED_VARIABLES_ONLY_IN_VARS+=('AS' 'NM' 'SIZE' 'LINK') +EXPORTED_VARIABLES_ONLY_IN_VARS+=('OBJDUMP' 'OBJCOPY') check_not_exporting_variables() { local patterns=() From 499cd934a265d9645a377797051adb1c2e289012 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Wed, 24 Jun 2020 09:43:58 +0200 Subject: [PATCH 3/3] makefiles/vars.inc.mk: export NM and RANLIB variables --- makefiles/vars.inc.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/makefiles/vars.inc.mk b/makefiles/vars.inc.mk index 61cd8b2bec..66876c734a 100644 --- a/makefiles/vars.inc.mk +++ b/makefiles/vars.inc.mk @@ -68,6 +68,8 @@ export ARFLAGS # Command-line options to pass to AR, default `rcs` export AS # The assembler. export ASFLAGS # Flags for the assembler. export LINK # The command used to link the files. Must take the same parameters as GCC, i.e. "ld" won't work. +export NM # The command used to list symbols from objet files +export RANLIB # The command used to generate an index to the contents of an archive # LINKFLAGS # Flags to supply in the linking step. export LTOFLAGS # extra CFLAGS for compiling with link time optimization export OBJCOPY # The command used to create the HEXFILE and BINFILE.