Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: Fix O= and KBUILD_OUTPUT handling for relative paths

Fix O= and KBUILD_OUTPUT handling for relative paths.

export KBUILD_OUTPUT=../kselftest_size
make TARGETS=size kselftest-all

or

make O=../kselftest_size TARGETS=size kselftest-all

In both of these cases, targets get built in ../kselftest_size which is
a one level up from the size test directory.

make[1]: Entering directory '/mnt/data/lkml/kselftest_size'
make --no-builtin-rules INSTALL_HDR_PATH=$BUILD/usr \
ARCH=x86 -C ../../.. headers_install
INSTALL ../kselftest_size/usr/include
gcc -static -ffreestanding -nostartfiles -s get_size.c -o ../kselftest_size/size/get_size
/usr/bin/ld: cannot open output file ../kselftest_size/size/get_size: No such file or directory
collect2: error: ld returned 1 exit status
make[3]: *** [../lib.mk:138: ../kselftest_size/size/get_size] Error 1
make[2]: *** [Makefile:143: all] Error 2
make[1]: *** [/mnt/data/lkml/linux_5.4/Makefile:1221: kselftest-all] Error 2
make[1]: Leaving directory '/mnt/data/lkml/kselftest_size'
make: *** [Makefile:179: sub-make] Error 2

Use abs_objtree exported by the main Makefile.

Reported-by: Tim Bird <Tim.Bird@sony.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Tested-by: Tim Bird <tim.bird@sony.com>
Acked-by: Tim Bird <tim.bird@sony.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

+3 -2
+3 -2
tools/testing/selftests/Makefile
··· 86 86 endif 87 87 88 88 ifneq ($(O),) 89 - BUILD := $(O) 89 + BUILD := $(abs_objtree) 90 90 else 91 91 ifneq ($(KBUILD_OUTPUT),) 92 - BUILD := $(KBUILD_OUTPUT)/kselftest 92 + BUILD := $(abs_objtree)/kselftest 93 93 else 94 94 BUILD := $(shell pwd) 95 95 DEFAULT_INSTALL_HDR_PATH := 1 ··· 102 102 ARCH ?= $(SUBARCH) 103 103 export KSFT_KHDR_INSTALL_DONE := 1 104 104 export BUILD 105 + #$(info abd_objtree = $(abs_objtree) BUILD = $(BUILD)) 105 106 106 107 # build and run gpio when output directory is the src dir. 107 108 # gpio has dependency on tools/gpio and builds tools/gpio