Re: kbuild: check the minimum compiler version in Kconfig

From: Nick Desaulniers
Date: Wed Nov 16 2022 - 17:48:33 EST


On Wed, Nov 16, 2022 at 1:48 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:
>
> 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.

LLVM=1 will use `clang` as found by your $PATH. Where did you express
to make what the "cross compiler clang version" is? (And why do you
set HOSTCC three times)

>
> 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



--
Thanks,
~Nick Desaulniers