Support -flto-incremental=/path/to/cache being used with GCC. Personally,
I am using this hook in /etc/portage/bashrc:
```
pre_src_configure() {
        if [[ -n ${PORTAGE_LTO_CACHE} ]] ; then
                local lto_path=/var/tmp/portage/lto/${CATEGORY}/${PN}
                mkdir -p "${lto_path}"
                export CFLAGS="${CFLAGS} -flto-incremental=${lto_path} 
-flto-compression-level=19"
                export CXXFLAGS="${CXXFLAGS} -flto-incremental=${lto_path} 
-flto-compression-level=19"
                export LDFLAGS="${LDFLAGS} -flto-incremental=${lto_path} 
-flto-compression-level=19"
        fi
}
```

... and then `PORTAGE_LTO_CACHE=1` in my development environment.

Signed-off-by: Sam James <[email protected]>
---
v2: Require exactly -flto-incremental=*, no substrings (and so trip 
-flto-incremental=
    prefix too).

Better? Of course there's also the other discussion we're having..

 eclass/meson.eclass | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/eclass/meson.eclass b/eclass/meson.eclass
index a2bc5537e4589..06675e02b82be 100644
--- a/eclass/meson.eclass
+++ b/eclass/meson.eclass
@@ -1,4 +1,4 @@
-# Copyright 2017-2024 Gentoo Authors
+# Copyright 2017-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: meson.eclass
@@ -305,6 +305,18 @@ setup_meson_src_configure() {
                                MESONARGS+=( -Db_lto_threads=${v} )
                                ;;
                esac
+
+               if has_version -b ">=dev-build/meson-1.10.0" ; then
+                       local v=$(get-flag -flto-incremental=)
+                       v=${v#-flto-incremental=}
+                       if [[ ${v} ]] ; then
+                               MESONARGS+=(
+                                       -Db_thinlto_cache=true
+                                       -Db_thinlto_cache_dir=${v}
+                               )
+                       fi
+               fi
+
                # finally, remove it from *FLAGS to avoid passing it:
                # - twice, with potentially different values
                # - on excluded targets
-- 
2.51.2


Reply via email to