On Mon, Apr 6, 2020 at 3:34 AM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > On Mon, Apr 6, 2020 at 8:55 AM 'Fangrui Song' via Clang Built Linux > <clang-built-linux@xxxxxxxxxxxxxxxx> wrote: > > > > On 2020-04-06, Masahiro Yamada wrote: > > >On Sat, Apr 4, 2020 at 3:24 AM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > >> > > >> On Thu, Apr 2, 2020 at 10:17 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > >> > > > >> > As Documentation/kbuild/llvm.rst implies, building the kernel with a > > >> > full set of LLVM tools gets very verbose and unwieldy. > > >> > > > >> > Provide a single switch 'LLVM' to use Clang and LLVM tools instead of > > >> > GCC and Binutils. You can pass LLVM=1 from the command line or as an > > >> > environment variable. Then, Kbuild will use LLVM toolchains in your > > >> > PATH environment. > > >> > > > >> > Please note LLVM=1 does not turn on the LLVM integrated assembler. > > >> > You need to explicitly pass AS=clang to use it. When the upstream > > >> > kernel is ready for the integrated assembler, I think we can make > > >> > it default. > > >> > > >> Having this behavior change over time may be surprising. I'd rather > > >> that if you want to not use the integrated assembler, you explicitly > > >> negate it, or just don't use the LLVM=1 syntax, ie. `make CC=clang > > >> LD=ld.lld ...`. > > >> > > >> We could modify how `-no-integrated-as` is chosen when LLVM=1. > > >> > > >> make LLVM=1 LLVMIA=0 ... # add `-no-integrated-as` > > >> # what the flag is doesn't really matter to me, something shorter might be nice. > > >> make LLVM=1 # use all LLVM tools > > >> > > >> Since we got rid of $(AS), it would be appropriate to remove/change it > > >> there, since no one really relies on AS=clang right now. (We do have 1 > > >> of our 60+ CI targets using it, but we can also change that trivially. > > >> So I think we have a lot of freedom to change how `-no-integrated-as` > > >> is set. > > >> > > >> This could even be independent of this patch. > > > > > > > > >I also thought a boolean flag is preferred. > > > > > >AS=clang will not live long anyway, and > > >I hesitated to break the compatibility > > >for the short-term workaround. > > > > > >But, if this is not a big deal, I can > > >replace AS=clang with LLVMIA=1. > > > > My mere complaint is that it may be difficult to infer the intention (integrated > > assembler) from the abbreviation "IA" in "LLVMIA" :/ > > > > Something with "AS" in the name may be easier for a user to understand, > > e.g. CLANG_AS or LLVM_AS. > > > > > I see 'llvm-as' in my PATH, > but it is a different kind of tool, right? > (converter from LLVM assembler *.ll to LLVM bit code *.bc) > > So, I thought "LLVM_AS" might be confusing. > Indeed LLVM_AS is confusing as llvm-as is different to Clang's integrated assembler. So CLANG_AS might be a better choice. - sed@ -