On Thursday, 16 December 2021 3:58:26 AM NZDT Adrian Ratiu wrote: > Starting with kernel>=v5.7 the build system can override the > tools vars by setting LLVM=1 [1], but older kernels still use > the default GNU tools, so to be able to use a full LLVM/Clang > build, CC should be set together with AR to the portage set > values. > > Doing this avoids situations like building the kernel with > clang (using the set HOSTCC) but using gcc/gnu-ar for headers. > > [1] a0d1c951ef08 kbuild: support LLVM=1 to switch the default tools to > Clang/LLVM > > Co-authored-by: Manoj Gupta > Signed-off-by: Adrian Ratiu > --- > eclass/kernel-2.eclass | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass > index adc1425bc2e..caeec86ff59 100644 > --- a/eclass/kernel-2.eclass > +++ b/eclass/kernel-2.eclass > @@ -692,7 +692,7 @@ env_setup_xmakeopts() { > elif type -p ${CHOST}-ar >/dev/null; then > xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-" > fi > - xmakeopts="${xmakeopts} HOSTCC=$(tc-getBUILD_CC)" > + xmakeopts="${xmakeopts} HOSTCC=$(tc-getBUILD_CC) CC=$(tc-getCC) > AR=$(tc-getAR)" export xmakeopts > } What's the reason for not using $LLVM here? To preserve building with clang for kernels < 5.7 ? I might be missing the point, but wouldn't something along the lines of "LLVM=$(! [[ $(tc-getCC) =~ clang ]]; echo $?)" work to preserve the correct compiler tools? Cheers