Loading rust/library_test.go +26 −13 Original line number Diff line number Diff line Loading @@ -205,17 +205,28 @@ func TestAutoDeps(t *testing.T) { srcs: ["bar.rs"], crate_name: "bar", } rust_library_host_rlib { name: "librlib_only", srcs: ["bar.rs"], crate_name: "rlib_only", } rust_library_host { name: "libfoo", srcs: ["foo.rs"], crate_name: "foo", rustlibs: ["libbar"], rustlibs: [ "libbar", "librlib_only", ], } rust_ffi_host { name: "libfoo.ffi", srcs: ["foo.rs"], crate_name: "foo", rustlibs: ["libbar"], rustlibs: [ "libbar", "librlib_only", ], }`) libfooRlib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_rlib_rlib-std") Loading @@ -239,7 +250,9 @@ func TestAutoDeps(t *testing.T) { if android.InList("libbar.dylib-std", dyn.Module().(*Module).Properties.AndroidMkRlibs) { t.Errorf("libbar present as rlib dependency in dynamic lib") } if !android.InList("librlib_only.dylib-std", dyn.Module().(*Module).Properties.AndroidMkRlibs) { t.Errorf("librlib_only should be selected by rustlibs as an rlib.") } } } Loading rust/rust.go +24 −15 Original line number Diff line number Diff line Loading @@ -1368,13 +1368,12 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { } // rlibs rlibDepVariations = append(rlibDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: rlibVariation}) 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) actx.AddVariationDependencies(rlibDepVariations, depTag, lib) } // dylibs Loading @@ -1386,21 +1385,25 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { // rustlibs if deps.Rustlibs != nil && !mod.compiler.Disabled() { autoDep := mod.compiler.(autoDeppable).autoDep(ctx) if autoDep.depTag == rlibDepTag { 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) } if autoDep.depTag == rlibDepTag { // Handle the rlib deptag case addRlibDependency(actx, lib, mod, snapshotInfo, rlibDepVariations) } else { actx.AddVariationDependencies( append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}), autoDep.depTag, deps.Rustlibs...) // autoDep.depTag is a dylib depTag. Not all rustlibs may be available as a dylib however. // Check for the existence of the dylib deptag variant. Select it if available, // otherwise select the rlib variant. autoDepVariations := append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}) if actx.OtherModuleDependencyVariantExists(autoDepVariations, lib) { actx.AddVariationDependencies(autoDepVariations, autoDep.depTag, lib) } else { // If there's no dylib dependency available, try to add the rlib dependency instead. addRlibDependency(actx, lib, mod, snapshotInfo, rlibDepVariations) } } } } // stdlibs if deps.Stdlibs != nil { if mod.compiler.stdLinkage(ctx) == RlibLinkage { Loading Loading @@ -1476,6 +1479,12 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { actx.AddFarVariationDependencies(ctx.Config().BuildOSTarget.Variations(), procMacroDepTag, deps.ProcMacros...) } // addRlibDependency will add an rlib dependency, rewriting to the snapshot library if available. func addRlibDependency(actx android.BottomUpMutatorContext, lib string, mod *Module, snapshotInfo *cc.SnapshotInfo, variations []blueprint.Variation) { lib = cc.RewriteSnapshotLib(lib, cc.GetSnapshot(mod, &snapshotInfo, actx).Rlibs) actx.AddVariationDependencies(variations, rlibDepTag, lib) } func BeginMutator(ctx android.BottomUpMutatorContext) { if mod, ok := ctx.Module().(*Module); ok && mod.Enabled() { mod.beginMutator(ctx) Loading Loading
rust/library_test.go +26 −13 Original line number Diff line number Diff line Loading @@ -205,17 +205,28 @@ func TestAutoDeps(t *testing.T) { srcs: ["bar.rs"], crate_name: "bar", } rust_library_host_rlib { name: "librlib_only", srcs: ["bar.rs"], crate_name: "rlib_only", } rust_library_host { name: "libfoo", srcs: ["foo.rs"], crate_name: "foo", rustlibs: ["libbar"], rustlibs: [ "libbar", "librlib_only", ], } rust_ffi_host { name: "libfoo.ffi", srcs: ["foo.rs"], crate_name: "foo", rustlibs: ["libbar"], rustlibs: [ "libbar", "librlib_only", ], }`) libfooRlib := ctx.ModuleForTests("libfoo", "linux_glibc_x86_64_rlib_rlib-std") Loading @@ -239,7 +250,9 @@ func TestAutoDeps(t *testing.T) { if android.InList("libbar.dylib-std", dyn.Module().(*Module).Properties.AndroidMkRlibs) { t.Errorf("libbar present as rlib dependency in dynamic lib") } if !android.InList("librlib_only.dylib-std", dyn.Module().(*Module).Properties.AndroidMkRlibs) { t.Errorf("librlib_only should be selected by rustlibs as an rlib.") } } } Loading
rust/rust.go +24 −15 Original line number Diff line number Diff line Loading @@ -1368,13 +1368,12 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { } // rlibs rlibDepVariations = append(rlibDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: rlibVariation}) 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) actx.AddVariationDependencies(rlibDepVariations, depTag, lib) } // dylibs Loading @@ -1386,21 +1385,25 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { // rustlibs if deps.Rustlibs != nil && !mod.compiler.Disabled() { autoDep := mod.compiler.(autoDeppable).autoDep(ctx) if autoDep.depTag == rlibDepTag { 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) } if autoDep.depTag == rlibDepTag { // Handle the rlib deptag case addRlibDependency(actx, lib, mod, snapshotInfo, rlibDepVariations) } else { actx.AddVariationDependencies( append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}), autoDep.depTag, deps.Rustlibs...) // autoDep.depTag is a dylib depTag. Not all rustlibs may be available as a dylib however. // Check for the existence of the dylib deptag variant. Select it if available, // otherwise select the rlib variant. autoDepVariations := append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}) if actx.OtherModuleDependencyVariantExists(autoDepVariations, lib) { actx.AddVariationDependencies(autoDepVariations, autoDep.depTag, lib) } else { // If there's no dylib dependency available, try to add the rlib dependency instead. addRlibDependency(actx, lib, mod, snapshotInfo, rlibDepVariations) } } } } // stdlibs if deps.Stdlibs != nil { if mod.compiler.stdLinkage(ctx) == RlibLinkage { Loading Loading @@ -1476,6 +1479,12 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { actx.AddFarVariationDependencies(ctx.Config().BuildOSTarget.Variations(), procMacroDepTag, deps.ProcMacros...) } // addRlibDependency will add an rlib dependency, rewriting to the snapshot library if available. func addRlibDependency(actx android.BottomUpMutatorContext, lib string, mod *Module, snapshotInfo *cc.SnapshotInfo, variations []blueprint.Variation) { lib = cc.RewriteSnapshotLib(lib, cc.GetSnapshot(mod, &snapshotInfo, actx).Rlibs) actx.AddVariationDependencies(variations, rlibDepTag, lib) } func BeginMutator(ctx android.BottomUpMutatorContext) { if mod, ok := ctx.Module().(*Module); ok && mod.Enabled() { mod.beginMutator(ctx) Loading