rust: Add common interface for binaries

Structs embedding binaryDecorator (rust_test, rust_benchmark, rust_fuzz)
are binaries as well, but won't pass checks against *binaryDecorator,
such as the check in StaticExecutable().

Add a binaryInterface that can be checked instead to simplify these
checks and ensure we catch all binaries.

Bug: 170672854
Test: rust_test, rust_benchmark return true StaticallyLinked
Change-Id: I2373d3663373a6977260785602a02d39a41320fe
This commit is contained in:
Ivan Lozano
2021-11-01 09:19:45 -04:00
parent fdadcd7937
commit 21fa0a5844
3 changed files with 18 additions and 7 deletions

View File

@@ -31,6 +31,11 @@ type BinaryCompilerProperties struct {
Static_executable *bool `android:"arch_variant"`
}
type binaryInterface interface {
binary() bool
staticallyLinked() bool
}
type binaryDecorator struct {
*baseCompiler
stripper Stripper
@@ -155,3 +160,11 @@ func (binary *binaryDecorator) stdLinkage(ctx *depsContext) RustLinkage {
}
return binary.baseCompiler.stdLinkage(ctx)
}
func (binary *binaryDecorator) binary() bool {
return true
}
func (binary *binaryDecorator) staticallyLinked() bool {
return Bool(binary.Properties.Static_executable)
}