Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2577141 authored by Yi Kong's avatar Yi Kong
Browse files

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
parent 6c76f18a
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -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)
}