Message ID | 20230523163811.30792-16-anthony.perard@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | build: cleanup build log, avoid user's CFLAGS, avoid too many include of Config.mk | expand |
> On 23 May 2023, at 17:38, Anthony PERARD <anthony.perard@citrix.com> wrote: > > Everything needed to build the hypervisor should already be configured > by "xen/Makefile", thus Config.mk shouldn't be needed. > > Then, Config.mk keeps on testing support of some CFLAGS with CC, the > result of this testing is not used at this stage so the build is > slowed unnecessarily. > > Likewise, GCC is checked to be at the minimum at 4.2 when entering > every sub-directory, so the check have run countless time at this > stage. > > We only need to export a few more configuration variables. And add > some variables in Kbuild.include, and macro fallbacks for Make older > than 3.81. (Adding `or` just in case. it's only used in xen/Makefile, > which includes Config.mk and so has already the fallback.) > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > --- Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> Tested-by: Luca Fancellu <luca.fancellu@arm.com>
On 23.05.2023 18:38, Anthony PERARD wrote: > Everything needed to build the hypervisor should already be configured > by "xen/Makefile", thus Config.mk shouldn't be needed. "... by xen/Rules.mk." (Or else it sounds as if yo're removing its use altogether.) > --- a/xen/Makefile > +++ b/xen/Makefile > @@ -246,10 +246,14 @@ export TARGET_ARCH := $(shell echo $(XEN_TARGET_ARCH) | \ > sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g' \ > -e s'/riscv.*/riscv/g') > > +export XEN_COMPILE_ARCH XEN_TARGET_ARCH > export CONFIG_SHELL := $(SHELL) > export CC CXX LD NM OBJCOPY OBJDUMP ADDR2LINE > +export CPP AR For these two, could I talk you into editing the earlier line instead of adding a new one? > --- a/xen/scripts/Kbuild.include > +++ b/xen/scripts/Kbuild.include > @@ -8,6 +8,13 @@ empty := > space := $(empty) $(empty) > space_escape := _-_SPACE_-_ > pound := \# > +comma := , > +open := ( > +close := ) > + > +# fallbacks for GNU Make older than 3.81 > +realpath = $(wildcard $(foreach file,$(1),$(shell cd -P $(dir $(file)) && echo "$$PWD/$(notdir $(file))"))) > +or = $(if $(strip $(1)),$(1),$(if $(strip $(2)),$(2),$(if $(strip $(3)),$(3),$(if $(strip $(4)),$(4))))) > > ### > # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o As long as they're the same, the collision with Config.mk's will be benign (for xen/Makefile), but I wonder whether, along the lines of the earlier patch, these wouldn't better be extracted into e.g. config/fallbacks.mk. (Whether the single-character macros are also extracted into somewhere is of less importance to me, at least right now.) Jan
diff --git a/xen/Makefile b/xen/Makefile index 4dc3acf2a6..9af7223c66 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -246,10 +246,14 @@ export TARGET_ARCH := $(shell echo $(XEN_TARGET_ARCH) | \ sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g' \ -e s'/riscv.*/riscv/g') +export XEN_COMPILE_ARCH XEN_TARGET_ARCH export CONFIG_SHELL := $(SHELL) export CC CXX LD NM OBJCOPY OBJDUMP ADDR2LINE +export CPP AR export YACC = $(if $(BISON),$(BISON),bison) export LEX = $(if $(FLEX),$(FLEX),flex) +export HOSTCC HOSTCXX HOSTCFLAGS +export EMBEDDED_EXTRA_CFLAGS LDFLAGS_DIRECT # Default file for 'make defconfig'. export KBUILD_DEFCONFIG := $(ARCH)_defconfig diff --git a/xen/Rules.mk b/xen/Rules.mk index 8177d405c3..8291e0a573 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -17,7 +17,6 @@ __build: -include $(objtree)/include/config/auto.conf -include $(XEN_ROOT)/Config.mk include $(srctree)/scripts/Kbuild.include include $(XEN_ROOT)/config/compiler-testing.mk diff --git a/xen/scripts/Kbuild.include b/xen/scripts/Kbuild.include index d820595e2f..dfa66f2c8a 100644 --- a/xen/scripts/Kbuild.include +++ b/xen/scripts/Kbuild.include @@ -8,6 +8,13 @@ empty := space := $(empty) $(empty) space_escape := _-_SPACE_-_ pound := \# +comma := , +open := ( +close := ) + +# fallbacks for GNU Make older than 3.81 +realpath = $(wildcard $(foreach file,$(1),$(shell cd -P $(dir $(file)) && echo "$$PWD/$(notdir $(file))"))) +or = $(if $(strip $(1)),$(1),$(if $(strip $(2)),$(2),$(if $(strip $(3)),$(3),$(if $(strip $(4)),$(4))))) ### # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
Everything needed to build the hypervisor should already be configured by "xen/Makefile", thus Config.mk shouldn't be needed. Then, Config.mk keeps on testing support of some CFLAGS with CC, the result of this testing is not used at this stage so the build is slowed unnecessarily. Likewise, GCC is checked to be at the minimum at 4.2 when entering every sub-directory, so the check have run countless time at this stage. We only need to export a few more configuration variables. And add some variables in Kbuild.include, and macro fallbacks for Make older than 3.81. (Adding `or` just in case. it's only used in xen/Makefile, which includes Config.mk and so has already the fallback.) Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- Notes: Removing Config.mk benefit: Rebuild on my computer is aboud 1 second faster overall. Save maybe 3 seconds of user time system less loaded xen/Makefile | 4 ++++ xen/Rules.mk | 1 - xen/scripts/Kbuild.include | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-)