Skip to content
  • Masahiro Yamada's avatar
    kbuild: ensure full rebuild when the compiler is updated · 8b59cd81
    Masahiro Yamada authored
    Commit 21c54b77
    
     ("kconfig: show compiler version text in the top
    comment") added the environment variable, CC_VERSION_TEXT in the comment
    of the top Kconfig file. It can detect the compiler update, and invoke
    the syncconfig because all environment variables referenced in Kconfig
    files are recorded in include/config/auto.conf.cmd
    
    This commit makes it a CONFIG option in order to ensure the full rebuild
    when the compiler is updated.
    
    This works like follows:
    
    include/config/kconfig.h contains "CONFIG_CC_VERSION_TEXT" in the comment
    block.
    
    The top Makefile specifies "-include $(srctree)/include/linux/kconfig.h"
    to guarantee it is included from all kernel source files.
    
    fixdep parses every source file and all headers included from it,
    searching for words prefixed with "CONFIG_". Then, fixdep finds
    CONFIG_CC_VERSION_TEXT in include/config/kconfig.h and adds
    include/config/cc/version/text.h into every .*.cmd file.
    
    When the compiler is updated, syncconfig is invoked because init/Kconfig
    contains the reference to the environment variable CC_VERTION_TEXT.
    CONFIG_CC_VERSION_TEXT is updated to the new version string, and
    include/config/cc/version/text.h is touched.
    
    In the next rebuild, Make will rebuild every files since the timestamp
    of include/config/cc/version/text.h is newer than that of target.
    
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    8b59cd81