rust: Add data_libs and data_bins to rust_test

Allows defining data binaries and libraries that should be installed
alongside a rust_test module, similar to cc_test.

This refactors cc_test as well so it can define rust_ffi_shared and
rust_binary modules as data.

Bug: 171710847
Test: New Soong tests pass.
Test: Example module installs data appropriately.
Change-Id: I0b56098fb475ec54f9b7a761220d260fe68cbee1
This commit is contained in:
Ivan Lozano
2021-11-04 14:09:38 -04:00
parent 8d10fc39af
commit 4e5f07d27b
5 changed files with 198 additions and 18 deletions

View File

@@ -390,6 +390,10 @@ type Deps struct {
WholeStaticLibs []string
HeaderLibs []string
// Used for data dependencies adjacent to tests
DataLibs []string
DataBins []string
CrtBegin, CrtEnd string
}
@@ -975,6 +979,8 @@ var (
procMacroDepTag = dependencyTag{name: "procMacro", procMacro: true}
testPerSrcDepTag = dependencyTag{name: "rust_unit_tests"}
sourceDepTag = dependencyTag{name: "source"}
dataLibDepTag = dependencyTag{name: "data lib"}
dataBinDepTag = dependencyTag{name: "data bin"}
)
func IsDylibDepTag(depTag blueprint.DependencyTag) bool {
@@ -1400,6 +1406,12 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
}
}
actx.AddVariationDependencies([]blueprint.Variation{
{Mutator: "link", Variation: "shared"},
}, dataLibDepTag, deps.DataLibs...)
actx.AddVariationDependencies(nil, dataBinDepTag, deps.DataBins...)
// proc_macros are compiler plugins, and so we need the host arch variant as a dependendcy.
actx.AddFarVariationDependencies(ctx.Config().BuildOSTarget.Variations(), procMacroDepTag, deps.ProcMacros...)
}