Moving compiler option tests to Kconfig means you need to re-run Kconfig when you update your compiler. All CC_HAS_... symbols and other symbols that depend on them must be re-calculated. It will be nice to detect the compiler update and automatically invoke silentoldconfig. This can be done by adding one environment. With this, silentoldconfig will add something like follows into include/config/auto.conf.cmd: ifneq "$(CC_VERSION_TEXT)" "gcc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609" include/config/auto.conf: FORCE endif CC_VERSION_TEXT contains the first line of "$(CC) --version". If this text is changed, silentoldconfig will be invoked. Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> --- Makefile | 2 ++ init/Kconfig | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/Makefile b/Makefile index 2ee49c9..9afd617 100644 --- a/Makefile +++ b/Makefile @@ -441,6 +441,8 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL export KBUILD_ARFLAGS +export CC_VERSION_TEXT := $(shell $(CC) --version | head -n 1) + # When compiling out-of-tree modules, put MODVERDIR in the module # tree rather than in the kernel tree. The kernel tree might # even be read-only. diff --git a/init/Kconfig b/init/Kconfig index e37f4b2..64f9dd2 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -16,6 +16,15 @@ config DEFCONFIG_LIST default "$ARCH_DEFCONFIG" default "arch/$ARCH/defconfig" +# CC_VERSION_TEXT is needed here to invoke Kconfig when compiler is updated +config CC_VERSION_TEXT + string + option env="CC_VERSION_TEXT" + help + This is used to detect if the compiler is changed. If the version + text does not match, silentoldconfig will be invoked because we need + to re-compute compiler capabilities and symbols that depends on them. + config CONSTRUCTORS bool depends on !UML -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html