public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH] kbuild: unexport sub_make_done to fix child make invocations
@ 2026-02-14  2:47 Simon Glass
  2026-03-03 18:50 ` Tom Rini
  0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2026-02-14  2:47 UTC (permalink / raw)
  To: u-boot; +Cc: Ilias Apalodimas, Simon Glass, Sughosh Ganu, Tom Rini

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 <simon.glass@canonical.com>
---

 Makefile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index d38fa5d6aca..f539c6f82f3 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.
@@ -2738,10 +2742,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
 
-- 
2.43.0

base-commit: eae0ca2125933c3d1742deba723d2cc4b4955ef0
branch: fix-kbuild

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-03-04 18:03 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-14  2:47 [PATCH] kbuild: unexport sub_make_done to fix child make invocations Simon Glass
2026-03-03 18:50 ` Tom Rini
2026-03-04  9:54   ` Conor Dooley
2026-03-04 15:01     ` Tom Rini
2026-03-04 15:09       ` Conor Dooley
2026-03-04 15:11         ` Tom Rini
2026-03-04 15:24           ` Conor Dooley
2026-03-04 15:45             ` Tom Rini
2026-03-04 16:57               ` Ilias Apalodimas
2026-03-04 17:34                 ` Tom Rini
2026-03-04 18:02                   ` Simon Glass

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox