Sam James <[email protected]> writes:

> 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
> +

I'm going to push this for now as I keep wishing I had it, but we can
revisit in light of some discussions we've had wrt get-flag if/when
those land.

>               # finally, remove it from *FLAGS to avoid passing it:
>               # - twice, with potentially different values
>               # - on excluded targets

Reply via email to