selftests: drop khdr make target
Drop the "khdr" make target as it fails when the build directory is a sub-directory of the source tree. Rely on the "headers_install" target to have been run first instead. For example, here's a typical error this patch is addressing: $ make O=build -j32 kselftest-gen_tar make[1]: Entering directory '/home/kernelci/linux/build' make --no-builtin-rules INSTALL_HDR_PATH=/home/kernelci/linux/build/usr \ ARCH=x86 -C ../../.. headers_install make[3]: Entering directory '/home/kernelci/linux' Makefile:1022: ../scripts/Makefile.extrawarn: No such file or directory The source directory is determined in the top-level Makefile as ".." relatively to the "build" directory, but then the kselftest Makefile switches to "-C ../../.." so "../scripts" then points one level higher than the source tree e.g. "linux/../scripts" - which fails obviously. There is no other use-case in the kernel tree where a sub-directory Makefile tries to call a top-level make target, and it appears this isn't really a valid thing to do. Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com> Tested-by: Anders Roxell <anders.roxell@linaro.org> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
dbeb232726
commit
3bb267a361
|
@ -151,30 +151,7 @@ export KHDR_INCLUDES
|
|||
# all isn't the first target in the file.
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
# Install headers here once for all tests. KSFT_KHDR_INSTALL_DONE
|
||||
# is used to avoid running headers_install from lib.mk.
|
||||
# Invoke headers install with --no-builtin-rules to avoid circular
|
||||
# dependency in "make kselftest" case. In this case, second level
|
||||
# make inherits builtin-rules which will use the rule generate
|
||||
# Makefile.o and runs into
|
||||
# "Circular Makefile.o <- prepare dependency dropped."
|
||||
# and headers_install fails and test compile fails.
|
||||
#
|
||||
# O= KBUILD_OUTPUT cases don't run into this error, since main Makefile
|
||||
# invokes them as sub-makes and --no-builtin-rules is not necessary,
|
||||
# but doesn't cause any failures. Keep it simple and use the same
|
||||
# flags in both cases.
|
||||
# Local build cases: "make kselftest", "make -C" - headers are installed
|
||||
# in the default INSTALL_HDR_PATH usr/include.
|
||||
khdr:
|
||||
ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
|
||||
$(MAKE) --no-builtin-rules ARCH=$(ARCH) -C $(top_srcdir) headers_install
|
||||
else
|
||||
$(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$(abs_objtree)/usr \
|
||||
ARCH=$(ARCH) -C $(top_srcdir) headers_install
|
||||
endif
|
||||
|
||||
all: khdr
|
||||
all:
|
||||
@ret=1; \
|
||||
for TARGET in $(TARGETS); do \
|
||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||
|
@ -274,4 +251,4 @@ clean:
|
|||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
||||
done;
|
||||
|
||||
.PHONY: khdr all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|
||||
.PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|
||||
|
|
Loading…
Reference in New Issue