kbuild: fix building with redirected output.
Jan Altenberg <jan.altenberg@linutronix.de> reported that building with redirected input like this failed: make O=dir oldconfig bzImage < /dev/null The problem were caused by a make silentoldconfig being run before oldconfig and with a non-recent .config the build failed because silentoldconfig requires non-redirected stdin. Silentoldconfig was run as a side-effect of having the top-level Makefile re-made by make. Introducing an empty rule for the top-level Makefile (and Kbuild.include) fixed the issue. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
94545baded
commit
1cacc9ab8b
1 changed files with 6 additions and 5 deletions
11
Makefile
11
Makefile
|
@ -108,6 +108,9 @@ endif
|
|||
PHONY := _all
|
||||
_all:
|
||||
|
||||
# Cancel implicit rules on top Makefile
|
||||
$(CURDIR)/Makefile Makefile: ;
|
||||
|
||||
ifneq ($(KBUILD_OUTPUT),)
|
||||
# Invoke a second make in the output directory, passing relevant variables
|
||||
# check that the output directory actually exists
|
||||
|
@ -121,7 +124,7 @@ $(if $(filter-out $(KBUILD_OUTPUT),$(shell /bin/pwd)),, \
|
|||
|
||||
PHONY += $(MAKECMDGOALS) sub-make
|
||||
|
||||
$(filter-out _all sub-make,$(MAKECMDGOALS)) _all: sub-make
|
||||
$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
|
||||
$(Q)@:
|
||||
|
||||
sub-make: FORCE
|
||||
|
@ -291,7 +294,8 @@ export quiet Q KBUILD_VERBOSE
|
|||
# Look for make include files relative to root of kernel src
|
||||
MAKEFLAGS += --include-dir=$(srctree)
|
||||
|
||||
# We need some generic definitions.
|
||||
# We need some generic definitions (do not try to remake the file).
|
||||
$(srctree)/scripts/Kbuild.include: ;
|
||||
include $(srctree)/scripts/Kbuild.include
|
||||
|
||||
# Make variables (CC, etc...)
|
||||
|
@ -1560,9 +1564,6 @@ endif # skip-makefile
|
|||
PHONY += FORCE
|
||||
FORCE:
|
||||
|
||||
# Cancel implicit rules on top Makefile, `-rR' will apply to sub-makes.
|
||||
Makefile: ;
|
||||
|
||||
# Declare the contents of the .PHONY variable as phony. We keep that
|
||||
# information in a variable se we can use it in if_changed and friends.
|
||||
.PHONY: $(PHONY)
|
||||
|
|
Loading…
Reference in a new issue