On Thu, 27 Jun 2024 12:55:38 -0700 Mina Almasry wrote:
`git clean -fdx && make headers_install && make -C ./tools/testing/selftests/net` works
`git clean -fdx && make headers_install && make -C ./tools/testing/selftests/net ncdevmem` doesn't work with this error:
Hm, I haven't tested this exact combination. Makefiles are fun!
I think in this case you're just hitting the built-in make rule, you're not exercising our Makefile logic much. This should make it work:
diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk index 429535816dbd..a274ae8cd72b 100644 --- a/tools/testing/selftests/lib.mk +++ b/tools/testing/selftests/lib.mk @@ -45,7 +45,7 @@ endif # LLVM
ifeq (0,$(MAKELEVEL)) ifeq ($(OUTPUT),) - OUTPUT := $(shell pwd) + OUTPUT := . DEFAULT_INSTALL_HDR_PATH := 1 endif endif
But it will probably break the makefile for others?
All our targets are defined (or magically redefined) as $(OUTPUT)/name if you call make directly OUTPUT is not defined, so our rules would mathc on /name, which obviously doesn't exist. Adding OUTPUT=. on command line would also work (I think):
make -C ./tools/testing/selftests/net OUTPUT=. ncdevmem
Another option would be for OUTPUT to contain the trailing /, always, to avoid the /name problem, but:
$ git grep '$(OUTPUT)/' -- tools/testing/selftests/ | wc -l 414
so good luck changing that :(
Long story short what you're trying doesn't really appear to be supported by kselftest makefile infra, so don't worry about it.