diff options
Diffstat (limited to 'rust/rust.go')
-rw-r--r-- | rust/rust.go | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/rust/rust.go b/rust/rust.go index b9afc7f82..93dbd0010 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -130,9 +130,10 @@ type BaseProperties struct { // Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX). Min_sdk_version *string - PreventInstall bool - HideFromMake bool - Installable *bool + HideFromMake bool `blueprint:"mutated"` + PreventInstall bool `blueprint:"mutated"` + + Installable *bool } type Module struct { @@ -177,8 +178,8 @@ func (mod *Module) SetHideFromMake() { mod.Properties.HideFromMake = true } -func (c *Module) HiddenFromMake() bool { - return c.Properties.HideFromMake +func (mod *Module) HiddenFromMake() bool { + return mod.Properties.HideFromMake } func (mod *Module) SanitizePropDefined() bool { @@ -526,10 +527,6 @@ func (mod *Module) PreventInstall() bool { return mod.Properties.PreventInstall } -func (mod *Module) HideFromMake() { - mod.Properties.HideFromMake = true -} - func (mod *Module) MarkAsCoverageVariant(coverage bool) { mod.coverage.Properties.IsCoverageVariant = coverage } @@ -898,8 +895,24 @@ func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { } apexInfo := actx.Provider(android.ApexInfoProvider).(android.ApexInfo) - if mod.installable(apexInfo) { + if !proptools.BoolDefault(mod.Installable(), mod.EverInstallable()) { + // 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 + // modules can be hidden from make as some are needed for resolving make + // side dependencies. + mod.HideFromMake() + } else if !mod.installable(apexInfo) { + mod.SkipInstall() + } + + // Still call install though, the installs will be stored as PackageSpecs to allow + // using the outputs in a genrule. + if mod.OutputFile().Valid() { mod.compiler.install(ctx) + if ctx.Failed() { + return + } } ctx.Phony("rust", ctx.RustModule().OutputFile().Path()) |