diff options
| author | Simon Glass <[email protected]> | 2026-02-13 19:47:34 -0700 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-03-03 10:34:54 -0600 |
| commit | 4284306d22c5b6d64ecd62b462551d9d313c8104 (patch) | |
| tree | e94d3d7c485efc5db23d2b9314af56b437ba4366 | |
| parent | 8353239dabb8079a10fd34167922302288a6a1bd (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-- | Makefile | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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 |
