Commit 0c12e6c8 authored by Oliver Upton's avatar Oliver Upton
Browse files

KVM: selftests: Ensure sysreg-defs.h is generated at the expected path



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.

Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
Tested-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20231212070431.145544-2-oliver.upton@linux.dev


Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
parent b1a39a71
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -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)