diff --git a/Makefile b/Makefile index 0ad6e8d9b0b3..679094a9b2dd 100644 --- a/Makefile +++ b/Makefile @@ -118,12 +118,17 @@ $(if $(KBUILD_OUTPUT),, \ # Check that OUTPUT directory is not the same as where we have kernel src $(if $(filter-out $(KBUILD_OUTPUT),$(shell /bin/pwd)),, \ $(error Output directory (O=...) specifies kernel src dir)) -PHONY += $(MAKECMDGOALS) -$(filter-out _all,$(MAKECMDGOALS)) _all: +PHONY += $(MAKECMDGOALS) sub-make + +$(filter-out _all sub-make,$(MAKECMDGOALS)) _all: sub-make + $(Q)@: + +sub-make: FORCE $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ KBUILD_SRC=$(CURDIR) \ - KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $@ + KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \ + $(filter-out _all sub-make,$(MAKECMDGOALS)) # Leave processing to above invocation of make skip-makefile := 1 diff --git a/scripts/mkmakefile b/scripts/mkmakefile index 7f9d544f9b6c..ee39facee152 100644 --- a/scripts/mkmakefile +++ b/scripts/mkmakefile @@ -26,11 +26,13 @@ MAKEFLAGS += --no-print-directory .PHONY: all \$(MAKECMDGOALS) +all := \$(filter-out all Makefile,\$(MAKECMDGOALS)) + all: - \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) + \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$(all) Makefile:; -\$(filter-out all Makefile,\$(MAKECMDGOALS)) %/: - \$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@ +\$(all) %/: all + @: EOF