diff --git a/cc/cc.go b/cc/cc.go index 1c6554924..32652c118 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -325,7 +325,7 @@ type BaseProperties struct { SnapshotStaticLibs []string `blueprint:"mutated"` SnapshotRuntimeLibs []string `blueprint:"mutated"` - Installable *bool + Installable *bool `android:"arch_variant"` // Set by factories of module types that can only be referenced from variants compiled against // the SDK. @@ -1865,7 +1865,7 @@ func (c *Module) maybeUnhideFromMake() { } func (c *Module) maybeInstall(ctx ModuleContext, apexInfo android.ApexInfo) { - if !proptools.BoolDefault(c.Properties.Installable, true) { + if !proptools.BoolDefault(c.Installable(), true) { // If the module has been specifically configure to not be installed then // hide from make as otherwise it will break when running inside make // as the output path to install will not be specified. Not all uninstallable @@ -3260,6 +3260,11 @@ func (c *Module) PreventInstall() bool { } func (c *Module) Installable() *bool { + if c.library != nil { + if i := c.library.installable(); i != nil { + return i + } + } return c.Properties.Installable } diff --git a/cc/fuzz.go b/cc/fuzz.go index 40f16f358..e987fe43b 100644 --- a/cc/fuzz.go +++ b/cc/fuzz.go @@ -123,7 +123,7 @@ func IsValidSharedDependency(dependency android.Module) bool { } // Discard installable:false libraries because they are expected to be absent // in runtime. - if !proptools.BoolDefault(ccLibrary.Properties.Installable, true) { + if !proptools.BoolDefault(ccLibrary.Installable(), true) { return false } } diff --git a/cc/library.go b/cc/library.go index d63acfbf7..055932351 100644 --- a/cc/library.go +++ b/cc/library.go @@ -159,6 +159,8 @@ type StaticOrSharedProperties struct { Export_static_lib_headers []string `android:"arch_variant"` Apex_available []string `android:"arch_variant"` + + Installable *bool `android:"arch_variant"` } type LibraryMutatedProperties struct { @@ -1046,6 +1048,8 @@ type libraryInterface interface { availableFor(string) bool getAPIListCoverageXMLPath() android.ModuleOutPath + + installable() *bool } type versionedInterface interface { @@ -1971,6 +1975,15 @@ func (library *libraryDecorator) availableFor(what string) bool { return android.CheckAvailableForApex(what, list) } +func (library *libraryDecorator) installable() *bool { + if library.static() { + return library.StaticProperties.Static.Installable + } else if library.shared() { + return library.SharedProperties.Shared.Installable + } + return nil +} + func (library *libraryDecorator) makeUninstallable(mod *Module) { if library.static() && library.buildStatic() && !library.buildStubs() { // If we're asked to make a static library uninstallable we don't do