Message ID | 20230622153005.31604-2-anthony.perard@citrix.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | build: reduce number of $(shell) execution on make 4.4 | expand |
On 22.06.2023 17:30, Anthony PERARD wrote: > Defining ARCH and SRCARCH later in xen/Makefile allows to switch to > immediate evaluation variable type. > > ARCH and SRCARCH depends on value defined in Config.mk and aren't used > TARGET_SUBARCH or TARGET_ARCH, and not before it's needed in a > sub-make or a rule. Something looks to be missing in this sentence. I first thought it was merely a "by", but I don't see how TARGET_{,SUB}ARCH matter here. > This will help reduce the number of times the shell rune is been > run. > > With GNU make 4.4, the number of execution of the command present in > these $(shell ) increased greatly. This is probably because as of make > 4.4, exported variable are also added to the environment of $(shell ) > construct. > > Also, `make -d` shows a lot of these: > Makefile:39: not recursively expanding SRCARCH to export to shell function > Makefile:38: not recursively expanding ARCH to export to shell function > > Reported-by: Jason Andryuk <jandryuk@gmail.com> > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > Tested-by: Jason Andryuk <jandryuk@gmail.com> With some suitable adjustment Reviewed-by: Jan Beulich <jbeulich@suse.com> Jan
diff --git a/xen/Makefile b/xen/Makefile index e89fc461fc..78d176f04e 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -35,12 +35,6 @@ MAKEFLAGS += -rR EFI_MOUNTPOINT ?= $(BOOT_DIR)/efi -ARCH=$(XEN_TARGET_ARCH) -SRCARCH=$(shell echo $(ARCH) | \ - sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g' \ - -e s'/riscv.*/riscv/g') -export ARCH SRCARCH - # Allow someone to change their config file export KCONFIG_CONFIG ?= .config @@ -241,6 +235,13 @@ include scripts/Kbuild.include include $(XEN_ROOT)/Config.mk # Set ARCH/SUBARCH appropriately. + +ARCH := $(XEN_TARGET_ARCH) +SRCARCH := $(shell echo $(ARCH) | \ + sed -e 's/x86.*/x86/' -e 's/arm\(32\|64\)/arm/g' \ + -e 's/riscv.*/riscv/g') +export ARCH SRCARCH + export TARGET_SUBARCH := $(XEN_TARGET_ARCH) export TARGET_ARCH := $(shell echo $(XEN_TARGET_ARCH) | \ sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g' \