summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <[email protected]>2026-02-13 19:47:34 -0700
committerTom Rini <[email protected]>2026-03-03 10:34:54 -0600
commit4284306d22c5b6d64ecd62b462551d9d313c8104 (patch)
treee94d3d7c485efc5db23d2b9314af56b437ba4366
parent8353239dabb8079a10fd34167922302288a6a1bd (diff)
kbuild: unexport sub_make_done to fix child make invocations
The exported sub_make_done variable leaks into the environment of all child processes. When make targets like tcheck spawn independent make invocations with O=, those child makes inherit sub_make_done=1, skip the KBUILD_OUTPUT setup and try to build in the source tree. There is a workaround that resets sub_make_done to 0 for specific test targets, but this isn't great since it has tolist every target that spawns independent make invocations. Instead, unexport sub_make_done once we are in the final make invocation. The direct sub-make already has the value in its environment from the export, and no further propagation is needed. This also allows the per-target workaround to be removed. Fixes: 27529f1cb02d ("kbuild: skip parsing pre sub-make code for recursion") Signed-off-by: Simon Glass <[email protected]>
-rw-r--r--Makefile8
1 files changed, 4 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 5df869213b6..fdaba4895fe 100644
--- a/Makefile
+++ b/Makefile
@@ -194,6 +194,10 @@ endif # sub_make_done
# We process the rest of the Makefile if this is the final invocation of make
ifeq ($(need-sub-make),)
+# Do not propagate sub_make_done to non-submake children (e.g. test scripts
+# that invoke make separately with O= need to process the KBUILD_OUTPUT block)
+unexport sub_make_done
+
# Do not print "Entering directory ...",
# but we want to display it when entering to the output directory
# so that IDEs/editors are able to understand relative filenames.
@@ -2737,10 +2741,6 @@ help:
@echo 'Execute "make" or "make all" to build all targets marked with [*] '
@echo 'For further info see the ./README file'
-ifneq ($(filter tests pcheck qcheck tcheck,$(MAKECMDGOALS)),)
-export sub_make_done := 0
-endif
-
tests check:
$(srctree)/test/run