From 3968d8f6780b33ab26c7f9ec06e2fdb6c0f7d26f Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Mon, 14 Dec 2020 11:27:52 -0500 Subject: Refactor CC to prep for Rust sanitizable modules. Adds a PlatformSanitizable interface which both CC and Rust can implement so that the sanitizer mutators in CC can sanitize Rust shared/static libraries appropriately. Bug: 147140513 Test: m nothing Change-Id: Ib31103b6c4902a4d5df2565c0d7c981298d100a3 --- rust/rust.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'rust/rust.go') diff --git a/rust/rust.go b/rust/rust.go index 105384676..1fa97af96 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -106,6 +106,42 @@ type Module struct { hideApexVariantFromMake bool } +func (mod *Module) Header() bool { + //TODO: If Rust libraries provide header variants, this needs to be updated. + return false +} + +func (mod *Module) SetPreventInstall() { + mod.Properties.PreventInstall = true +} + +// Returns true if the module is "vendor" variant. Usually these modules are installed in /vendor +func (mod *Module) InVendor() bool { + return mod.Properties.ImageVariationPrefix == cc.VendorVariationPrefix +} + +func (mod *Module) SetHideFromMake() { + mod.Properties.HideFromMake = true +} + +func (mod *Module) SanitizePropDefined() bool { + return false +} + +func (mod *Module) IsDependencyRoot() bool { + if mod.compiler != nil { + return mod.compiler.isDependencyRoot() + } + panic("IsDependencyRoot called on a non-compiler Rust module") +} + +func (mod *Module) IsPrebuilt() bool { + if _, ok := mod.compiler.(*prebuiltLibraryDecorator); ok { + return true + } + return false +} + func (mod *Module) OutputFiles(tag string) (android.Paths, error) { switch tag { case "": @@ -281,6 +317,7 @@ type compiler interface { SetDisabled() stdLinkage(ctx *depsContext) RustLinkage + isDependencyRoot() bool } type exportedFlagsProducer interface { -- cgit v1.2.3-59-g8ed1b