Build AUR packages with clang and ThinLTO by default

aurb now builds with clang + lld + ThinLTO and bind-mounts a ThinLTO cache and its clang.cfg into the chroot; --gcc keeps the old gcc build. update-kernel still uses gcc.
This commit is contained in:
Daniele Fucini
2026-10-18 21:58:23 +02:00
parent ffd6289a0f
commit 81e2ed075e
3 changed files with 39 additions and 6 deletions
+5
View File
@@ -0,0 +1,5 @@
# clang options for aurb chroot builds (CC/CXX pass --config=<this file>, see aurutils-makepkg.conf).
# Here rather than in LDFLAGS: old libtool (<2.4.7) drops -fuse-ld=lld, and these then reach GNU ld.
-fuse-ld=lld
-Wl,--thinlto-cache-dir=/home/fuxino/.cache/thinlto
-Wl,--thinlto-cache-policy=cache_size_bytes=10g
+10
View File
@@ -166,4 +166,14 @@ SRCEXT='.src.tar.gz'
#-- Command used to run pacman as root, instead of trying sudo and su
#PACMAN_AUTH=()
export CCACHE_DIR=/home/fuxino/.cache/ccache
# clang + lld + ThinLTO, only when aurb prepends AURB_CLANG=1 (its default; `aurb --gcc` doesn't).
# update-kernel uses this file as is, so the kernels stay on gcc. Linker flags live in clang.cfg
# (lld + ThinLTO cache); aurb bind-mounts its dir and the ThinLTO cache dir.
if [[ -n ${AURB_CLANG-} ]]; then
export CC="clang --config=/home/fuxino/.config/aurb/clang.cfg"
export CXX="clang++ --config=/home/fuxino/.config/aurb/clang.cfg"
export AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib
LTOFLAGS="-flto=thin"
fi
# vim: set ft=sh ts=2 sw=2 et: