Do not implicitly turn on lto for static libraries

For global ThinLTO, don't implicitly turn on LTO for static libraries,
but instead rely on mutator to generate correct variants.

Bug: 169004486
Test: GLBOAL_THINLTO=true m
Change-Id: I9cdeea706ec6dd4ad31f55b9e12a96b42176aa89
This commit is contained in:
Yi Kong
2020-09-29 08:44:45 +08:00
parent 6c76f18aae
commit e2577141ba

View File

@@ -45,8 +45,6 @@ type LTOProperties struct {
Thin *bool `android:"arch_variant"`
} `android:"arch_variant"`
GlobalThin *bool `blueprint:"mutated"`
// Dep properties indicate that this module needs to be built with LTO
// since it is an object dependency of an LTO module.
FullDep bool `blueprint:"mutated"`
@@ -71,7 +69,13 @@ func (lto *lto) begin(ctx BaseModuleContext) {
if ctx.Config().IsEnvTrue("DISABLE_LTO") {
lto.Properties.Lto.Never = boolPtr(true)
} else if ctx.Config().IsEnvTrue("GLOBAL_THINLTO") {
lto.Properties.GlobalThin = boolPtr(true)
staticLib := ctx.static() && !ctx.staticBinary()
hostBin := ctx.Host()
if !staticLib && !hostBin {
if !lto.Never() && !lto.FullLTO() {
lto.Properties.Lto.Thin = boolPtr(true)
}
}
}
}
@@ -145,12 +149,6 @@ func (lto *lto) FullLTO() bool {
}
func (lto *lto) ThinLTO() bool {
if Bool(lto.Properties.GlobalThin) {
if !lto.Never() && !lto.FullLTO() {
return true
}
}
return Bool(lto.Properties.Lto.Thin)
}