# clang is built with +default-lld. $ cd /etc/portage/ $ cat package.env # clang + thinlto is default. ## Move package downwards in the list until it compiles. ## Bug# is for bugs.gentoo.org # clang, no lto media-libs/alsa-lib clang-no-lto.conf #616108 #669086 media-libs/dav1d clang-no-lto.conf #801172 sys-apps/pciutils clang-no-lto.conf #852929 sys-fs/fuse clang-no-lto.conf #853058 sys-libs/libxcrypt clang-no-lto.conf #852917 (doesn't work with lto says upstream) # gcc, with lto media-video/pipewire gcc-with-lto.conf #802162 sys-devel/gcc gcc-with-lto.conf sys-libs/glibc gcc-with-lto.conf # gcc, no lto media-libs/x264 gcc-no-lto.conf #497714 media-video/ffmpeg gcc-no-lto.conf #772854 sys-kernel/gentoo-kernel gcc-no-lto.conf # needs some workarounds for clang+thinlto, easier with gentoo-sources # textrels (https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide) media-libs/libass clang-lto-textrels.conf media-libs/openh264 clang-lto-textrels.conf media-libs/x265 clang-lto-textrels.conf media-libs/xvid clang-lto-textrels.conf # misc, package-specific solutions, other env overrides # mail-client/thunderbird firefox2.conf # www-client/firefox firefox2.conf $ cat make.conf ACCEPT_KEYWORDS="amd64" CC="clang" CXX="clang++" CFLAGS="-march=native -O3 -pipe -flto=thin" CXXFLAGS="${CFLAGS}" LDFLAGS="-Wl,-O2 -Wl,--as-needed" AR="llvm-ar" NM="llvm-nm" RANLIB="llvm-ranlib" MAKEOPTS="-j32" ACCEPT_LICENSE="*" EMERGE_DEFAULT_OPTS="--jobs=10" FEATURES="parallel-fetch parallel-install" GENTOO_MIRRORS="https://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/" PORTAGE_NICENESS=19 PORTAGE_TMPDIR="/var/tmp" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sha sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" INPUT_DEVICES="joystick libinput" SANE_BACKENDS="pixma" VIDEO_CARDS="amdgpu radeonsi" L10N=" en en_US en-US fi sv " LINGUAS="${L10N}" ABI_X86="64 32" SYMLINK_LIB=no LIBDIR_x86=lib USE=" archive -avahi -bluetooth -cdda clang -consolekit dbus drm -dvd elogind -emoji ffmpeg fontconfig freetype -geolocation -gnome -gnome-online-accounts -gold gstreamer -gtk-doc gtk3 harfbuzz -ibus -ipv6 jpeg2k -ldap libglvnd -libsecret lto -networkmanager -nls openrc pulseaudio -qt5 rar -spell -static-libs -systemd theora threads udev vaapi vdpau vim-syntax voikko vulkan -weather -wifi -wlan xinerama -zeroconf " $ cat env/clang-no-lto.conf CC="clang" CXX="clang++" CFLAGS="-march=native -O3 -pipe" CXXFLAGS="${CFLAGS}" LDFLAGS="-Wl,-O2 -Wl,--as-needed" $ cat env/clang-lto-textrels.conf CC="clang" CXX="clang++" CFLAGS="-march=native -O3 -pipe -flto=thin" CXXFLAGS="${CFLAGS}" LDFLAGS="-Wl,-z,notext" $ cat env/gcc-no-lto.conf CC="gcc" CXX="g++" CFLAGS="-march=native -O3 -pipe" CXXFLAGS="${CFLAGS}" LDFLAGS="-Wl,-O2 -Wl,--as-needed" AR="gcc-ar" NM="gcc-nm" RANLIB="gcc-ranlib" $ cat env/gcc-with-lto.conf CC="gcc" CXX="g++" CFLAGS="-flto=32 -march=native -O3 -pipe" CXXFLAGS="${CFLAGS}" LDFLAGS="-Wl,-O2 -Wl,--as-needed" AR="gcc-ar" NM="gcc-nm" RANLIB="gcc-ranlib" $ cat env/firefox.conf CFLAGS="-march=native -O3 -pipe -fno-sized-deallocation -fno-aligned-new -fno-strict-aliasing -fPIC -fno-math-errno -fno-exceptions" CXXFLAGS="${CFLAGS}"