mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-21 21:17:37 -08:00
dot-a.eclass: make strip-lto remember if guarantee-fat ran
The current implementation checks repeatedly if `tc-is-lto` is true. In addition to running a small compile check redundantly, this has a potential correctness downside. An ebuild could do this: ``` lto-guarantee-fat tc-is-lto && myeconfargs+=( --enable-lto ) filter-lto ``` The idea is, the configure script has special handling and simply adding -flto is too "simple" to work. e.g. not all sources build with LTO. When this happens, strip-lto-bytecode "thinks" we didn't build with LTO at all, and returns early. By tracking state across functions -- and across phases -- we can reliably tell if `lto-guarantee-fat` actually "succeeded". Bug: https://bugs.gentoo.org/958412 Acked-by: Sam James <sam@gentoo.org> Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
This commit is contained in:
parent
786a19968d
commit
7801ce6a69
@ -50,6 +50,12 @@ _DOT_A_ECLASS=1
|
||||
|
||||
inherit flag-o-matic toolchain-funcs
|
||||
|
||||
# @VARIABLE: _DOT_A_IS_LTO
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Records the state of tc-is-lto across eclass function calls.
|
||||
_DOT_A_IS_LTO=0
|
||||
|
||||
# TODO: QA check
|
||||
|
||||
# @FUNCTION: lto-guarantee-fat
|
||||
@ -59,6 +65,7 @@ inherit flag-o-matic toolchain-funcs
|
||||
lto-guarantee-fat() {
|
||||
tc-is-lto || return
|
||||
|
||||
_DOT_A_IS_LTO=1
|
||||
# We add this for all languages as LTO obviously can't be done
|
||||
# if different compilers are used for e.g. C vs C++ anyway.
|
||||
append-flags $(test-flags-CC -ffat-lto-objects)
|
||||
@ -73,7 +80,9 @@ lto-guarantee-fat() {
|
||||
# As an optimisation, if USE=static-libs exists for a package and is disabled,
|
||||
# the default-searching behaviour with no arguments is suppressed.
|
||||
strip-lto-bytecode() {
|
||||
tc-is-lto || return
|
||||
if [[ ${_DOT_A_IS_LTO} != 1 ]] && ! tc-is-lto; then
|
||||
return
|
||||
fi
|
||||
|
||||
local files=()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user