rust: Add rustlibs auto dependency selection
Adds the rustlibs dependency type which will automatically select between rlib and dylib based on the type of the library. Bug: 143217452 Test: cd external/rust; mma Change-Id: I97faadae98bf957090a32939cfb2d3a10f74a057
This commit is contained in:
25
rust/rust.go
25
rust/rust.go
@@ -217,6 +217,7 @@ func (mod *Module) StubDecorator() bool {
|
||||
type Deps struct {
|
||||
Dylibs []string
|
||||
Rlibs []string
|
||||
Rustlibs []string
|
||||
ProcMacros []string
|
||||
SharedLibs []string
|
||||
StaticLibs []string
|
||||
@@ -617,6 +618,7 @@ func (mod *Module) deps(ctx DepsContext) Deps {
|
||||
|
||||
deps.Rlibs = android.LastUniqueStrings(deps.Rlibs)
|
||||
deps.Dylibs = android.LastUniqueStrings(deps.Dylibs)
|
||||
deps.Rustlibs = android.LastUniqueStrings(deps.Rustlibs)
|
||||
deps.ProcMacros = android.LastUniqueStrings(deps.ProcMacros)
|
||||
deps.SharedLibs = android.LastUniqueStrings(deps.SharedLibs)
|
||||
deps.StaticLibs = android.LastUniqueStrings(deps.StaticLibs)
|
||||
@@ -639,6 +641,20 @@ var (
|
||||
testPerSrcDepTag = dependencyTag{name: "rust_unit_tests"}
|
||||
)
|
||||
|
||||
type autoDep struct {
|
||||
variation string
|
||||
depTag dependencyTag
|
||||
}
|
||||
|
||||
var (
|
||||
rlibAutoDep = autoDep{variation: "rlib", depTag: rlibDepTag}
|
||||
dylibAutoDep = autoDep{variation: "dylib", depTag: dylibDepTag}
|
||||
)
|
||||
|
||||
type autoDeppable interface {
|
||||
autoDep() autoDep
|
||||
}
|
||||
|
||||
func (mod *Module) begin(ctx BaseModuleContext) {
|
||||
if mod.coverage != nil {
|
||||
mod.coverage.begin(ctx)
|
||||
@@ -844,6 +860,15 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
||||
{Mutator: "link", Variation: ""}}...),
|
||||
dylibDepTag, deps.Dylibs...)
|
||||
|
||||
if deps.Rustlibs != nil {
|
||||
autoDep := mod.compiler.(autoDeppable).autoDep()
|
||||
actx.AddVariationDependencies(
|
||||
append(commonDepVariations, []blueprint.Variation{
|
||||
{Mutator: "rust_libraries", Variation: autoDep.variation},
|
||||
{Mutator: "link", Variation: ""}}...),
|
||||
autoDep.depTag, deps.Rustlibs...)
|
||||
}
|
||||
|
||||
actx.AddVariationDependencies(append(commonDepVariations,
|
||||
blueprint.Variation{Mutator: "link", Variation: "shared"}),
|
||||
cc.SharedDepTag, deps.SharedLibs...)
|
||||
|
Reference in New Issue
Block a user