summaryrefslogtreecommitdiff
path: root/rust/rust.go
diff options
context:
space:
mode:
author Ivan Lozano <ivanlozano@google.com> 2021-06-01 15:09:53 -0400
committer Ivan Lozano <ivanlozano@google.com> 2021-06-03 08:36:09 -0400
commit3149e6ed1882786fc9e1defd0b5540c0147a0209 (patch)
treeedee79e9487fdbc90116eb3d71f9f867746ac28a /rust/rust.go
parentd1dec54988630cabaf15b2353e55460f79c05b0c (diff)
Rust rlib vendor snapshot support.
Adds support for snapshotting Rust rlibs. This allows us vendor-specific code that uses rlib-only linkage until dylib snapshot support is added. Bug: 184042776 Test: m nothing # new Soong tests pass Test: Example test Rust vendor module builds Test: m dist vendor-snapshot # includes rlibs Change-Id: I4976d3e1efec0ee778cc97730d45be471dffb678
Diffstat (limited to 'rust/rust.go')
-rw-r--r--rust/rust.go32
1 files changed, 22 insertions, 10 deletions
diff --git a/rust/rust.go b/rust/rust.go
index 7a8687c8b..b8c8be5a2 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -1209,10 +1209,14 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
}
// rlibs
- actx.AddVariationDependencies(
- append(rlibDepVariations, []blueprint.Variation{
- {Mutator: "rust_libraries", Variation: rlibVariation}}...),
- rlibDepTag, deps.Rlibs...)
+ for _, lib := range deps.Rlibs {
+ depTag := rlibDepTag
+ lib = cc.RewriteSnapshotLib(lib, cc.GetSnapshot(mod, &snapshotInfo, actx).Rlibs)
+
+ actx.AddVariationDependencies(append(rlibDepVariations, []blueprint.Variation{
+ {Mutator: "rust_libraries", Variation: rlibVariation},
+ }...), depTag, lib)
+ }
// dylibs
actx.AddVariationDependencies(
@@ -1224,9 +1228,13 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
if deps.Rustlibs != nil && !mod.compiler.Disabled() {
autoDep := mod.compiler.(autoDeppable).autoDep(ctx)
if autoDep.depTag == rlibDepTag {
- actx.AddVariationDependencies(
- append(rlibDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}),
- autoDep.depTag, deps.Rustlibs...)
+ for _, lib := range deps.Rustlibs {
+ depTag := autoDep.depTag
+ lib = cc.RewriteSnapshotLib(lib, cc.GetSnapshot(mod, &snapshotInfo, actx).Rlibs)
+ actx.AddVariationDependencies(append(rlibDepVariations, []blueprint.Variation{
+ {Mutator: "rust_libraries", Variation: autoDep.variation},
+ }...), depTag, lib)
+ }
} else {
actx.AddVariationDependencies(
append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}),
@@ -1237,9 +1245,13 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
// stdlibs
if deps.Stdlibs != nil {
if mod.compiler.stdLinkage(ctx) == RlibLinkage {
- actx.AddVariationDependencies(
- append(commonDepVariations, []blueprint.Variation{{Mutator: "rust_libraries", Variation: "rlib"}}...),
- rlibDepTag, deps.Stdlibs...)
+ for _, lib := range deps.Stdlibs {
+ depTag := rlibDepTag
+ lib = cc.RewriteSnapshotLib(lib, cc.GetSnapshot(mod, &snapshotInfo, actx).Rlibs)
+
+ actx.AddVariationDependencies(append(commonDepVariations, []blueprint.Variation{{Mutator: "rust_libraries", Variation: "rlib"}}...),
+ depTag, lib)
+ }
} else {
actx.AddVariationDependencies(
append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: "dylib"}),