On Wed, Dec 15, 2021 at 1:37 PM James Beddek <tel...@posteo.de> wrote:

> 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 <manojgu...@chromium.org>
> > Signed-off-by: Adrian Ratiu <adrian.ra...@collabora.com>
> > ---
> >  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?
>
> This patch is about respecting the current CC value in portage. It could
be clang, icc, or something else
What should be the value of CC should be up to the user's portage config.

In Chrome OS e.g., we have multiple possible CC's with variants like
<abi>-clang. So hardcoding clang
also does not look correct.

Thanks,
Manoj


> Cheers

Reply via email to