Before this patch, using 'make --always-make' would always result in the
error message about the missing .config being displayed.

Detect the -B/--always-make flag and leave this rule out, which allows the
rest of the build to proceed. See [1] for an explanation of this particular
construction.

[1]: https://www.gnu.org/software/make/manual/make.html#Testing-Flags

Signed-off-by: Vegard Nossum <[email protected]>
---
 Makefile | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Makefile b/Makefile
index 44c02a6f60a14..f09c036daf2f5 100644
--- a/Makefile
+++ b/Makefile
@@ -757,6 +757,10 @@ ifdef may-sync-config
 # because some architectures define CROSS_COMPILE there.
 include include/config/auto.conf.cmd
 
+ifeq (,$(findstring B,$(firstword -$(MAKEFLAGS))))
+# This is a dummy target, only meant as a help for the user invoking make.
+# We don't want it to take effect when running 'make --always-make', since
+# that renders the --always-make option effectively useless.
 $(KCONFIG_CONFIG):
        @echo >&2 '***'
        @echo >&2 '*** Configuration file "$@" not found!'
@@ -765,6 +769,7 @@ $(KCONFIG_CONFIG):
        @echo >&2 '*** "make menuconfig" or "make xconfig").'
        @echo >&2 '***'
        @/bin/false
+endif
 
 # The actual configuration files used during the build are stored in
 # include/generated/ and include/config/. Update them if .config is newer than
-- 
2.34.1


Reply via email to