On Tue, Jul 20, 2021 at 10:43 AM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > But clang has become a primary compiler for some kernel communities, > and I think it might be time to just re-visit that entirely. > > In particular, I think we should just make it a Kconfig option. I hate > the command flag stuff so much, that my clang tree literally has this > patch in it: > > -CC = $(CROSS_COMPILE)gcc > +CC = $(CROSS_COMPILE)clang > > so that I can just do the same "make -j128" in both my gcc tree and my > clang tree. > > But each build tree already has its own .config file, so it would be a > lot more convenient if that was how the compiler was chosen, and then > "make oldconfig" would just DTRT. > > We do most of the other heavy lifting in this area in Kconfig anyway, > why not add that compiler choice? > > Obviously it would be gated by the tests to see which compilers are > _installed_ (and that they are valid versions), so that it doesn't ask > stupid things ("do you want gcc or clang" when only one of them is > installed and/or viable). > > Hmm? So then any "LLVM=1" thing would be about the "make config" > stage, not the actual build stage. > > (It has annoyed me for years that if you want to cross-compile, you > first have to do "make ARCH=xyz config" and then remember to do "make > ARCH=xyz" for the build too, but I cross-compile so seldom that I've > never really cared). > > Let the flame wars^H^Hpolite discussions ensue.. I will concede that "why do I need to respecify all of my command line args/env vars to make when I already did so for a configure step?" is a reasonable question to ask, and may be worth pursuing. There's still some that we can eliminate for BOTH configure and actual build, like CROSS_COMPILE. :^) -- Thanks, ~Nick Desaulniers