Message ID | 20231212070431.145544-2-oliver.upton@linux.dev (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: selftests: Ensure sysreg-defs.h is generated at the expected path | expand |
On Tue, Dec 12 2023, Oliver Upton <oliver.upton@linux.dev> wrote: > Building the KVM selftests from the main selftests Makefile (as opposed > to the kvm subdirectory) doesn't work as OUTPUT is set, forcing the > generated header to spill into the selftests directory. Additionally, > relative paths do not work when building outside of the srctree, as the > canonical selftests path is replaced with 'kselftest' in the output. > > Work around both of these issues by explicitly overriding OUTPUT on the > submake cmdline. Move the whole fragment below the point lib.mk gets > included such that $(abs_objdir) is available. > > Signed-off-by: Oliver Upton <oliver.upton@linux.dev> > --- > tools/testing/selftests/kvm/Makefile | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com>
On Tue, Dec 12, 2023 at 07:04:32AM +0000, Oliver Upton wrote: > Building the KVM selftests from the main selftests Makefile (as opposed > to the kvm subdirectory) doesn't work as OUTPUT is set, forcing the > generated header to spill into the selftests directory. Additionally, > relative paths do not work when building outside of the srctree, as the > canonical selftests path is replaced with 'kselftest' in the output. Tested-by: Mark Brown <broonie@kernel.org> Hopefully we can get this to Linus' tree quickly!
On Tue, 12 Dec 2023 07:04:32 +0000, Oliver Upton wrote: > Building the KVM selftests from the main selftests Makefile (as opposed > to the kvm subdirectory) doesn't work as OUTPUT is set, forcing the > generated header to spill into the selftests directory. Additionally, > relative paths do not work when building outside of the srctree, as the > canonical selftests path is replaced with 'kselftest' in the output. > > Work around both of these issues by explicitly overriding OUTPUT on the > submake cmdline. Move the whole fragment below the point lib.mk gets > included such that $(abs_objdir) is available. > > [...] Thanks folks for the quick review / testing. I'll get this out ASAP, the VGIC RD changes from Marc need to go in for 6.7 anyway. [1/1] KVM: selftests: Ensure sysreg-defs.h is generated at the expected path https://git.kernel.org/kvmarm/kvmarm/c/0c12e6c8267f -- Best, Oliver
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index 52c59bad7213..5f4f6be7a866 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -17,16 +17,6 @@ else ARCH_DIR := $(ARCH) endif -ifeq ($(ARCH),arm64) -tools_dir := $(top_srcdir)/tools -arm64_tools_dir := $(tools_dir)/arch/arm64/tools/ -GEN_HDRS := $(top_srcdir)/tools/arch/arm64/include/generated/ -CFLAGS += -I$(GEN_HDRS) - -$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*) - $(MAKE) -C $(arm64_tools_dir) O=$(tools_dir) -endif - LIBKVM += lib/assert.c LIBKVM += lib/elf.c LIBKVM += lib/guest_modes.c @@ -234,6 +224,22 @@ CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \ ifeq ($(ARCH),s390) CFLAGS += -march=z10 endif +ifeq ($(ARCH),arm64) +tools_dir := $(top_srcdir)/tools +arm64_tools_dir := $(tools_dir)/arch/arm64/tools/ + +ifneq ($(abs_objdir),) +arm64_hdr_outdir := $(abs_objdir)/tools/ +else +arm64_hdr_outdir := $(tools_dir)/ +endif + +GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/ +CFLAGS += -I$(GEN_HDRS) + +$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*) + $(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir) +endif no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \ $(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
Building the KVM selftests from the main selftests Makefile (as opposed to the kvm subdirectory) doesn't work as OUTPUT is set, forcing the generated header to spill into the selftests directory. Additionally, relative paths do not work when building outside of the srctree, as the canonical selftests path is replaced with 'kselftest' in the output. Work around both of these issues by explicitly overriding OUTPUT on the submake cmdline. Move the whole fragment below the point lib.mk gets included such that $(abs_objdir) is available. Signed-off-by: Oliver Upton <oliver.upton@linux.dev> --- tools/testing/selftests/kvm/Makefile | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) base-commit: 33cc938e65a98f1d29d0a18403dbbee050dcad9a