reworked LTO to have no-lto package, gcc defaults to gnu-ld, clang defaults to lld now

This commit is contained in:
Moritz Gmeiner 2023-08-28 17:52:19 +02:00
commit 75f64148b7
13 changed files with 50 additions and 27 deletions

15
env/clang vendored
View file

@ -1,4 +1,5 @@
COMMON_FLAGS="-O2 -pipe -march=native"
COMMON_FLAGS="-O2 -pipe -march=native -flto=full"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
@ -8,9 +9,19 @@ CC="clang"
CXX="clang++"
AR="llvm-ar"
AS="clang -c"
CPP="clang-cpp"
NM="llvm-nm"
STRIP="llvm-strip"
RANLIB="llvm-ranlib"
OBJCOPY="llvm-objcopy"
STRINGS="llvm-strings"
OBJDUMP="llvm-objdump"
READELF="llvm-readelf"
ADDR2LINE="llvm-addr2line"
LDFLAGS="-Wl,--as-needed -rtlib=compiler-rt -unwindlib=libunwind"
LD="ld.lld"
LDFLAGS="-Wl,--as-needed -rtlib=compiler-rt -unwindlib=libunwind -fuse-ld=lld -flto"
USE="clang llvm-libunwind"

4
env/gcc vendored
View file

@ -1,4 +1,4 @@
COMMON_FLAGS="-O2 -pipe -march=native"
COMMON_FLAGS="-O2 -pipe -march=native -flto=auto"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
@ -11,7 +11,7 @@ CXX="g++"
LD="ld"
LDFLAGS="-Wl,--as-needed"
LDFLAGS="-Wl,--as-needed -flto"
AR="ar"
AS="as"

6
env/lto vendored
View file

@ -1,6 +0,0 @@
CFLAGS="${CFLAGS} -flto"
CXXFLAGS="${CXXFLAGS} -flto"
LDFLAGS="${LDFLAGS} -flto"
USE="lto"

7
env/no-lto vendored Normal file
View file

@ -0,0 +1,7 @@
CFLAGS="${CFLAGS} -fno-lto"
CXXFLAGS="${CXXFLAGS} -fno-lto"
FCFLAGS="${FCFLAGS} -fno-lto"
FFLAGS="${FFLAGS} -fno-lto"
LDFLAGS="${LDFLAGS} -fno-lto"

View file

@ -1,4 +1,4 @@
COMMON_FLAGS="-O2 -pipe -march=native -flto"
COMMON_FLAGS="-O2 -pipe -march=native -flto=full"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
@ -11,10 +11,6 @@ RUSTFLAGS="-C target-cpu=native -C opt-level=3 -C linker=clang -C link-arg=-fuse
CC="clang"
CXX="clang++"
LD="ld.mold"
LDFLAGS="${LDFLAGS} -fuse-ld=mold -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed -flto"
AR="llvm-ar"
AS="clang -c"
CPP="clang-cpp"
@ -27,11 +23,12 @@ OBJDUMP="llvm-objdump"
READELF="llvm-readelf"
ADDR2LINE="llvm-addr2line"
# don't strip comment section of binaries
# assumes STRIP will be gnu-strip
PORTAGE_STRIP_FLAGS="--strip-unneeded -N __gentoo_check_ldflags__ -R .GCC.command.line -R .note.gnu.gold-version"
LD="ld.mold"
# EMERGE_DEFAULT_OPTS="--jobs 2"
LDFLAGS="${LDFLAGS} -fuse-ld=mold -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed -flto"
# don't strip comment section of binaries
PORTAGE_STRIP_FLAGS="--strip-unneeded -N __gentoo_check_ldflags__ -R .GCC.command.line -R .note.gnu.gold-version"
USE="clang dist-kernel llvm-libunwind lto pulseaudio X -systemd -wayland"

View file

@ -9,3 +9,7 @@ media-libs/mesa ccache
www-client/firefox ccache
mail-client/thunderbird ccache
www-client/chromium
net-libs/nodejs

1
package.env/chromium Normal file
View file

@ -0,0 +1 @@
# www-client/chromium clang lld

View file

@ -1,2 +1,2 @@
dev-lang/ghc gcc mold
app-admin/haskell-updater gcc lto mold
dev-lang/ghc gcc mold no-lto
app-admin/haskell-updater gcc mold

View file

@ -1 +1 @@
dev-libs/libtomcrypt clang mold
dev-libs/libtomcrypt clang mold no-lto

View file

@ -1 +1 @@
dev-qt/qtcore clang mold
dev-qt/qtcore clang mold no-lto

View file

@ -1,4 +1,4 @@
sys-kernel/* clang lld
sys-kernel/* clang lld no-lto
sys-libs/efivar gcc mold
sys-libs/glibc gcc lto mold
sys-libs/efivar gcc mold no-lto
sys-libs/glibc gcc lto mold no-lto

9
package.use/chromium Normal file
View file

@ -0,0 +1,9 @@
# required by www-client/chromium-116.0.5845.96::gentoo
# required by www-client/chromium (argument)
>=sys-libs/zlib-1.2.13-r1 minizip
# required by www-client/chromium-116.0.5845.96::gentoo
# required by www-client/chromium (argument)
>=net-libs/nodejs-20.5.1 inspector
www-client/chromium custom-cflags

View file

@ -1,2 +1,2 @@
sys-devel/clang-common default-compiler-rt llvm-libunwind
sys-devel/clang-common default-compiler-rt default-lld llvm-libunwind
sys-libs/llvm-libunwind static-libs