]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
kbuild: distributed build support for Clang ThinLTO
authorRong Xu <xur@google.com>
Fri, 29 May 2026 18:53:46 +0000 (11:53 -0700)
committerNathan Chancellor <nathan@kernel.org>
Fri, 29 May 2026 20:44:29 +0000 (13:44 -0700)
commit9f2aee8f7d1842be08da860e45265d30dba0d1f7
treee54014c8a7b6f38be666b6a3b4644c73ad5f99d2
parent9c72d26e9fe3be79dd1d8a2ba00a033503ffd27d
kbuild: distributed build support for Clang ThinLTO

Add distributed ThinLTO build support for the Linux kernel.
This new mode offers several advantages: (1) Increased
flexibility in handling user-specified build options.
(2) Improved user-friendliness for developers. (3) Greater
convenience for integrating with objtool and livepatch.

Note that "distributed" in this context refers to a term
that differentiates in-process ThinLTO builds by invoking
backend compilation through the linker, not necessarily
building in distributed environments.

Distributed ThinLTO is enabled via the
`CONFIG_LTO_CLANG_THIN_DIST` Kconfig option. For example:
 > make LLVM=1 defconfig
 > scripts/config -e LTO_CLANG_THIN_DIST
 > make LLVM=1 oldconfig
 > make LLVM=1 vmlinux -j <..>

The build flow proceeds in four stages:
  1. Perform FE compilation, mirroring the in-process ThinLTO mode.
  2. Thin-link the generated IR files and object files.
  3. Find all IR files and perform BE compilation, using the flags
    stored in the .*.o.cmd files.
  4. Link the BE results to generate the final vmlinux.o.

NOTE: This patch currently implements the build for the main kernel
image (vmlinux) only. Kernel module support is planned for a
subsequent patch.

Tested on the following arch: x86, arm64, loongarch, and
riscv.

The earlier implementation details can be found here:
https://discourse.llvm.org/t/rfc-distributed-thinlto-build-for-kernel/85934

Signed-off-by: Rong Xu <xur@google.com>
Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Piotr Gorski <piotrgorski@cachyos.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Link: https://patch.msgid.link/20260529185347.2418373-4-xur@google.com
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
.gitignore
Makefile
arch/Kconfig
scripts/Makefile.lib
scripts/Makefile.thinlto [new file with mode: 0644]
scripts/Makefile.vmlinux_a
scripts/mod/modpost.c