Re: kbuild: check the minimum compiler version in Kconfig

From: Florian Fainelli
Date: Wed Nov 16 2022 - 18:16:46 EST


On 11/16/22 15:11, Nick Desaulniers wrote:
On Wed, Nov 16, 2022 at 3:10 PM Nick Desaulniers
<ndesaulniers@xxxxxxxxxx> wrote:

On Wed, Nov 16, 2022 at 2:56 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:

On 11/16/22 14:48, Nick Desaulniers wrote:
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)

We are setting CROSS_COMPILE to express the cross compiler clang prefix
to use.

Can you try setting CLANG_PREFIX rather than CROSS_COMPILE (to the same value)?

CLANG_PREFIX=/local/users/fainelli/buildroot-llvm/output/arm64/host/bin/aarch64-linux-

sorry, I meant LLVM_PREFIX

Same results unfortunately.
--
Florian