GNU make 3.82 apparently has a quirk where exporting an undefined variable prevents its value from subsequently being updated. This situation can arise due to our adding of -rR to MAKEFLAGS, which takes effect also on make simply re-invoking itself. Once these flags are in effect, CC (in particular) is empty (undefined), and would be defined only via Config.mk including StdGNU.mk or alike. With the quirk, CC remains empty, yet with an empty CC the compiler minimum version check fails, breaking the build.
Move the exporting of the various tool stack component variables past where they gain their (final) values. Signed-off-by: Jan Beulich <[email protected]> --- There may be further factors playing into the described quirk, as I've also observed that simply running make as 2nd time would lead to successful building of xen/. While this wasn't a problem until several weeks back, I've not been able to identify which exact commit would have caused the breakage. Hence no Fixes: tag. --- a/xen/Makefile +++ b/xen/Makefile @@ -44,8 +44,6 @@ export ARCH SRCARCH # Allow someone to change their config file export KCONFIG_CONFIG ?= .config -export CC CXX LD NM OBJCOPY OBJDUMP ADDR2LINE - export TARGET := xen .PHONY: dist @@ -244,6 +242,7 @@ export TARGET_ARCH := $(shell echo $ -e s'/riscv.*/riscv/g') export CONFIG_SHELL := $(SHELL) +export CC CXX LD NM OBJCOPY OBJDUMP ADDR2LINE export YACC = $(if $(BISON),$(BISON),bison) export LEX = $(if $(FLEX),$(FLEX),flex)
