kbuild: refactor the check for missing config files

This commit refactors the check for missing configuration files, making
it easier to add more files to the list.

The format of the error message has been slightly changed, as follows:

[Before]

    ERROR: Kernel configuration is invalid.
           include/generated/autoconf.h or include/config/auto.conf are missing.
           Run 'make oldconfig && make prepare' on kernel src to fix it.

[After]

  ***
  ***  ERROR: Kernel configuration is invalid. The following files are missing:
  ***    - include/generated/autoconf.h
  ***    - include/config/auto.conf
  ***  Run "make oldconfig && make prepare" on kernel source to fix it.
  ***

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <n.schier@avm.de>
Tested-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
Masahiro Yamada 2024-09-17 23:16:38 +09:00
parent 5390d99fdb
commit ec873a4c55

View File

@ -781,17 +781,22 @@ $(KCONFIG_CONFIG):
else # !may-sync-config else # !may-sync-config
# External modules and some install targets need include/generated/autoconf.h # External modules and some install targets need include/generated/autoconf.h
# and include/config/auto.conf but do not care if they are up-to-date. # and include/config/auto.conf but do not care if they are up-to-date.
# Use auto.conf to trigger the test # Use auto.conf to show the error message
checked-configs := include/generated/autoconf.h include/config/auto.conf
missing-configs := $(filter-out $(wildcard $(checked-configs)), $(checked-configs))
ifdef missing-configs
PHONY += include/config/auto.conf PHONY += include/config/auto.conf
include/config/auto.conf: include/config/auto.conf:
@test -e include/generated/autoconf.h -a -e $@ || ( \ @echo >&2 '***'
echo >&2; \ @echo >&2 '*** ERROR: Kernel configuration is invalid. The following files are missing:'
echo >&2 " ERROR: Kernel configuration is invalid."; \ @printf >&2 '*** - %s\n' $(missing-configs)
echo >&2 " include/generated/autoconf.h or $@ are missing.";\ @echo >&2 '*** Run "make oldconfig && make prepare" on kernel source to fix it.'
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ @echo >&2 '***'
echo >&2 ; \ @/bin/false
/bin/false) endif
endif # may-sync-config endif # may-sync-config
endif # need-config endif # need-config