Re: kbuild: check the minimum compiler version in Kconfig

From: Florian Fainelli
Date: Wed Nov 16 2022 - 16:49:41 EST


Hi Masahiro, Nick,

The compiler version check performed with aec6c60a01d3a3170242d6a99372a388e1136dc6 ("kbuild: check the minimum compiler version in Kconfig") can be defeated and prevent running the *config targets if specifying LLVM=1 on the command line, in that way:

BR_BINARIES_DIR=/local/users/fainelli/buildroot-llvm/output/arm64/images LLVM=1 LLVM_IAS=1 PKG_CONFIG_PATH="" /usr/bin/make -j49 -C /local/users/fainelli/buildroot-llvm/output/arm64/build/linux-custom HOSTCC="/usr/bin/gcc" HOSTCC="/local/users/fainelli/buildroot-llvm/output/arm64/host/bin/ccache /usr/bin/gcc -O2 -I/local/users/fainelli/buildroot-llvm/output/arm64/host/include -DNDEBUG -L/local/users/fainelli/buildroot-llvm/output/arm64/host/lib -Wl,-rpath,/local/users/fainelli/buildroot-llvm/output/arm64/host/lib" ARCH=arm64 INSTALL_MOD_PATH=/local/users/fainelli/buildroot-llvm/output/arm64/target CROSS_COMPILE="/local/users/fainelli/buildroot-llvm/output/arm64/host/bin/aarch64-linux-" WERROR=0 DEPMOD=/local/users/fainelli/buildroot-llvm/output/arm64/host/sbin/depmod INSTALL_MOD_STRIP=1 HOSTCC="/usr/bin/gcc" menuconfig
UPD scripts/kconfig/mconf-cfg
HOSTCC scripts/kconfig/mconf.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTLD scripts/kconfig/mconf
***
*** Compiler is too old.
*** Your Clang version: 10.0.0
*** Minimum Clang version: 10.0.1
***
scripts/Kconfig.include:44: Sorry, this compiler is not supported.

Here, the compiler check is actually checking the host compiler clang version installed on my Ubuntu 20.04 system, as opposed to the cross compiler clang version that is being used.

It is not clear to me how to best address that, short of not specifying LLVM=1 on the kernel *config targets, but IMHO there is still an actual issue where we do not check the compiler that we would want to check.

Thanks!
--
Florian