Message ID | 20230523163811.30792-13-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: > > The variable $(CFLAGS) is too often set in the environment, > especially when building a package for a distribution. Often, those > CFLAGS are intended to be use to build user spaces binaries, not a NIT: s/use/used/ But I’m not a native speaker so I might be wrong on this > kernel. This mean packager needs to takes extra steps to build Xen by > overriding the CFLAGS provided by the package build environment. > > With this patch, we avoid using the variable $(CFLAGS). Also, the > hypervisor's build system have complete control over which CFLAGS are > used. > > No change intended to XEN_CFLAGS used, beside some flags which may be > in a different order on the command line. > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > --- > > Notes: > There's still $(EXTRA_CFLAGS_XEN_CORE) which allows to add more CFLAGS > if someone building Xen needs to add more CFLAGS to the hypervisor > build. > 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: > The variable $(CFLAGS) is too often set in the environment, > especially when building a package for a distribution. Often, those > CFLAGS are intended to be use to build user spaces binaries, not a > kernel. This mean packager needs to takes extra steps to build Xen by > overriding the CFLAGS provided by the package build environment. > > With this patch, we avoid using the variable $(CFLAGS). Also, the > hypervisor's build system have complete control over which CFLAGS are > used. "..., apart from $(EXTRA_CFLAGS_XEN_CORE)", as you say ... > No change intended to XEN_CFLAGS used, beside some flags which may be > in a different order on the command line. > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > --- > > Notes: > There's still $(EXTRA_CFLAGS_XEN_CORE) which allows to add more CFLAGS > if someone building Xen needs to add more CFLAGS to the hypervisor > build. ... only here. > --- a/xen/Makefile > +++ b/xen/Makefile > @@ -259,7 +259,16 @@ export KBUILD_DEFCONFIG := $(ARCH)_defconfig > export XEN_TREEWIDE_CFLAGS := $(CFLAGS) > > XEN_AFLAGS = > -XEN_CFLAGS = $(CFLAGS) > +XEN_CFLAGS = > +ifeq ($(XEN_OS),SunOS) > + XEN_CFLAGS += -Wa,--divide -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ So this (and the arch.mk additions) duplicate stuff we have in config/*.mk. Such duplication isn't really nice. Setting AS, CC, etc also happens there, and hence I expect you're going to duplicate that as well in a later patch. Can't we massage (if necessary) the config/*.mk relevant to the hypervisor build, so they can be included from xen/Makefile? That way all such basic settings could remain in a central place, which has been well known for many years. Jan
diff --git a/xen/Makefile b/xen/Makefile index b3bffe8c6f..4dc3acf2a6 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -259,7 +259,16 @@ export KBUILD_DEFCONFIG := $(ARCH)_defconfig export XEN_TREEWIDE_CFLAGS := $(CFLAGS) XEN_AFLAGS = -XEN_CFLAGS = $(CFLAGS) +XEN_CFLAGS = +ifeq ($(XEN_OS),SunOS) + XEN_CFLAGS += -Wa,--divide -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ +endif +XEN_CFLAGS += -fno-strict-aliasing +XEN_CFLAGS += -std=gnu99 +XEN_CFLAGS += -Wall -Wstrict-prototypes +$(call cc-option-add,XEN_CFLAGS,CC,-Wdeclaration-after-statement) +$(call cc-option-add,XEN_CFLAGS,CC,-Wno-unused-but-set-variable) +$(call cc-option-add,XEN_CFLAGS,CC,-Wno-unused-local-typedefs) # CLANG_FLAGS needs to be calculated before calling Kconfig ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk index 300b8bf7ae..0478fadde2 100644 --- a/xen/arch/arm/arch.mk +++ b/xen/arch/arm/arch.mk @@ -1,6 +1,10 @@ ######################################## # arm-specific definitions +ifeq ($(XEN_TARGET_ARCH),arm32) + XEN_CFLAGS += -marm +endif + $(call cc-options-add,XEN_CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) $(call cc-option-add,XEN_CFLAGS,CC,-Wnested-externs) diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk index 5df3cf6bc3..fc3b1dc922 100644 --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -1,6 +1,8 @@ ######################################## # x86-specific definitions +XEN_CFLAGS += -m64 + export XEN_IMG_OFFSET := 0x200000 XEN_CFLAGS += -I$(srctree)/arch/x86/include/asm/mach-generic
The variable $(CFLAGS) is too often set in the environment, especially when building a package for a distribution. Often, those CFLAGS are intended to be use to build user spaces binaries, not a kernel. This mean packager needs to takes extra steps to build Xen by overriding the CFLAGS provided by the package build environment. With this patch, we avoid using the variable $(CFLAGS). Also, the hypervisor's build system have complete control over which CFLAGS are used. No change intended to XEN_CFLAGS used, beside some flags which may be in a different order on the command line. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- Notes: There's still $(EXTRA_CFLAGS_XEN_CORE) which allows to add more CFLAGS if someone building Xen needs to add more CFLAGS to the hypervisor build. xen/Makefile | 11 ++++++++++- xen/arch/arm/arch.mk | 4 ++++ xen/arch/x86/arch.mk | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-)