RE: [PATCH] selftests: Fix O= and KBUILD_OUTPUT handling for relative paths

From: Tim.Bird
Date: Tue Oct 15 2019 - 19:28:05 EST


> -----Original Message-----
> From: Shuah Khan on Monday, October 14, 2019 3:45 PM
>
> 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@xxxxxxxx>
> Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
> ---
> tools/testing/selftests/Makefile | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/Makefile
> b/tools/testing/selftests/Makefile
> index 4cdbae6f4e61..3405aa26a655 100644
> --- a/tools/testing/selftests/Makefile
> +++ b/tools/testing/selftests/Makefile
> @@ -86,10 +86,10 @@ override LDFLAGS =
> endif
>
> ifneq ($(O),)
> - BUILD := $(O)
> + BUILD := $(abs_objtree)
> else
> ifneq ($(KBUILD_OUTPUT),)
> - BUILD := $(KBUILD_OUTPUT)/kselftest
> + BUILD := $(abs_objtree)/kselftest
> else
> BUILD := $(shell pwd)
> DEFAULT_INSTALL_HDR_PATH := 1
> @@ -102,6 +102,7 @@ include $(top_srcdir)/scripts/subarch.include
> ARCH ?= $(SUBARCH)
> export KSFT_KHDR_INSTALL_DONE := 1
> export BUILD
> +#$(info abd_objtree = $(abs_objtree) BUILD = $(BUILD))
>
> # build and run gpio when output directory is the src dir.
> # gpio has dependency on tools/gpio and builds tools/gpio
> --

This works great. Thanks very much.

Tested-by: Tim Bird <tim.bird@xxxxxxxx>
Acked-by: Tim Bird <tim.bird@xxxxxxxx>

-- Tim