mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
selftests/nolibc: support out-of-tree builds
Out of tree builds are much more convenient when building for multiple architectures or configurations in parallel. Only absolute O= parameters are supported as Makefile.include will always resolve relative paths in relation to $(srctree) instead of the current directory. Add a call to "make outputmakefile" to verify that the sourcetree is clean. This is based on Zhangjins out-of-tree patch. It extends that work for get_init_cpio support and also drops relative O= specifications explicitly. Link: https://lore.kernel.org/lkml/06d96bd81fe812a9718098a383678ad3beba98b1.1691215074.git.falcon@tinylab.org/ Co-developed-by: Zhangjin Wu <falcon@tinylab.org> Signed-off-by: Zhangjin Wu <falcon@tinylab.org> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Willy Tarreau <w@1wt.eu> Link: https://lore.kernel.org/r/20231031-nolibc-out-of-tree-v1-3-47c92f73590a@weissschuh.net
This commit is contained in:
parent
7263c9d9b6
commit
69620b3a5b
|
|
@ -1,9 +1,16 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Makefile for nolibc tests
|
||||
include ../../../scripts/Makefile.include
|
||||
include ../../../scripts/utilities.mak
|
||||
# We need this for the "cc-option" macro.
|
||||
include ../../../build/Build.include
|
||||
|
||||
ifneq ($(O),)
|
||||
ifneq ($(call is-absolute,$(O)),y)
|
||||
$(error Only absolute O= parameters are supported)
|
||||
endif
|
||||
endif
|
||||
|
||||
# we're in ".../tools/testing/selftests/nolibc"
|
||||
ifeq ($(srctree),)
|
||||
srctree := $(patsubst %/tools/testing/selftests/,%,$(dir $(CURDIR)))
|
||||
|
|
@ -14,6 +21,8 @@ include $(srctree)/scripts/subarch.include
|
|||
ARCH = $(SUBARCH)
|
||||
endif
|
||||
|
||||
objtree ?= $(srctree)
|
||||
|
||||
# XARCH extends the kernel's ARCH with a few variants of the same
|
||||
# architecture that only differ by the configuration, the toolchain
|
||||
# and the Qemu program used. It is copied as-is into ARCH except for
|
||||
|
|
@ -52,7 +61,7 @@ IMAGE_ppc64le = arch/powerpc/boot/zImage
|
|||
IMAGE_riscv = arch/riscv/boot/Image
|
||||
IMAGE_s390 = arch/s390/boot/bzImage
|
||||
IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi
|
||||
IMAGE = $(IMAGE_$(XARCH))
|
||||
IMAGE = $(objtree)/$(IMAGE_$(XARCH))
|
||||
IMAGE_NAME = $(notdir $(IMAGE))
|
||||
|
||||
# default kernel configurations that appear to be usable
|
||||
|
|
@ -174,6 +183,7 @@ sysroot: sysroot/$(ARCH)/include
|
|||
sysroot/$(ARCH)/include:
|
||||
$(Q)rm -rf sysroot/$(ARCH) sysroot/sysroot
|
||||
$(QUIET_MKDIR)mkdir -p sysroot
|
||||
$(Q)$(MAKE) -C $(srctree) outputmakefile
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/include/nolibc ARCH=$(ARCH) OUTPUT=$(CURDIR)/sysroot/ headers_standalone
|
||||
$(Q)mv sysroot/sysroot sysroot/$(ARCH)
|
||||
|
||||
|
|
@ -206,7 +216,7 @@ run-user: nolibc-test
|
|||
$(Q)$(REPORT) $(CURDIR)/run.out
|
||||
|
||||
initramfs.cpio: kernel nolibc-test
|
||||
$(QUIET_GEN)echo 'file /init nolibc-test 755 0 0' | $(srctree)/usr/gen_init_cpio - > initramfs.cpio
|
||||
$(QUIET_GEN)echo 'file /init nolibc-test 755 0 0' | $(objtree)/usr/gen_init_cpio - > initramfs.cpio
|
||||
|
||||
initramfs: nolibc-test
|
||||
$(QUIET_MKDIR)mkdir -p initramfs
|
||||
|
|
@ -224,12 +234,12 @@ kernel-standalone: initramfs
|
|||
|
||||
# run the tests after building the kernel
|
||||
run: kernel initramfs.cpio
|
||||
$(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out"
|
||||
$(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out"
|
||||
$(Q)$(REPORT) $(CURDIR)/run.out
|
||||
|
||||
# re-run the tests from an existing kernel
|
||||
rerun:
|
||||
$(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out"
|
||||
$(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out"
|
||||
$(Q)$(REPORT) $(CURDIR)/run.out
|
||||
|
||||
# report with existing test log
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user