Skip to content

Add support for kernel.org LLVM

I maintain builds of LLVM on kernel.org: https://mirrors.edge.kernel.org/pub/tools/llvm/

I would like to integrate these into TuxSuite (which means I would need to integrate them here first, hence this issue) to allow our continuous integration to use them, as I build them with PGO (and BOLT when possible), making them markedly faster than Debian's:

Benchmark 1: Building ARCH=arm64 allmodconfig @ ffd2cb6b718e ("Merge tag 'block-6.8-2024-02-22' of git://git.kernel.dk/linux") with Debian clang version 17.0.6 (++20231208085813+6009708b4367-1~exp1~20231208085906.81)
  Time (mean ± σ):     598.076 s ±  1.246 s    [User: 40598.261 s, System: 3810.492 s]
  Range (min … max):   597.194 s … 598.957 s    2 runs

Benchmark 2: Building ARCH=arm64 allmodconfig @ ffd2cb6b718e ("Merge tag 'block-6.8-2024-02-22' of git://git.kernel.dk/linux") with ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
  Time (mean ± σ):     371.164 s ±  0.725 s    [User: 23312.427 s, System: 3053.658 s]
  Range (min … max):   370.651 s … 371.677 s    2 runs

Summary
  Building ARCH=arm64 allmodconfig @ ffd2cb6b718e ("Merge tag 'block-6.8-2024-02-22' of git://git.kernel.dk/linux") with ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) ran
    1.61 ± 0.00 times faster than Building ARCH=arm64 allmodconfig @ ffd2cb6b718e ("Merge tag 'block-6.8-2024-02-22' of git://git.kernel.dk/linux") with Debian clang version 17.0.6 (++20231208085813+6009708b4367-1~exp1~20231208085906.81)

which would ultimately save us a lot of time in the matrix.

I do not mind tackling this task myself. However, I may need a little guidance into what exactly I should modify. I have a rough idea that I plan on prototyping soon but it may save me time if there was any guidance beforehand (including "we don't want this altogether" :)

I have not tested if these toolchains work for compiling any of the other targets such as the selftests, so they may be broken for those targets.