On Wed, Mar 22, 2023 at 9:40 AM Sedat Dilek <sedat.di...@gmail.com> wrote: > > You have to pass `make LLVM=1` in any case... to `oldconfig` or when > adding any MAKEFLAGS like -j${number-of-available-cpus}.
I actually think we should look (again) at just making the compiler choice (and the prefix) be a Kconfig option. That would simplify *so* many use cases. It used to be that gcc was "THE compiler" and anything else was just an odd toy special case, but that's clearly not true any more. So it would be lovely to make the kernel choice a Kconfig choice - so you'd set it only at config time, and then after that a kernel build wouldn't need special flags any more, and you'd never need to play games with GNUmakefile or anything like that. Yes, you'd still use environment variables (or make arguments) for that initial Kconfig, but that's no different from the other environment variables we already have, like KCONFIG_SEED that kconfig uses internally, but also things like "$(ARCH)" that we already use *inside* the Kconfig files themselves. I really dislike how you have to set ARCH and CROSS_COMPILE etc externally, and can't just have them *in* the config file. So when you do cross-compiles, right now you have to do something like make ARCH=i386 allmodconfig to build the .config file, but then you have to *repeat* that ARCH=i386 when you actually build things: make ARCH=i386 because the ARCH choice ends up being in the .config file, but the makefiles themselves always take it from the environment. There are good historical reasons for our behavior (and probably a number of extant practical reasons too), but it's a bit annoying, and it would be lovely if we could start moving away from this model. Linus