Merge "rust: Allow rustlibs to fallback to rlibs."
This commit is contained in:
39
rust/rust.go
39
rust/rust.go
@@ -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
|
||||
@@ -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)
|
||||
for _, lib := range deps.Rustlibs {
|
||||
if autoDep.depTag == rlibDepTag {
|
||||
// Handle the rlib deptag case
|
||||
addRlibDependency(actx, lib, mod, snapshotInfo, rlibDepVariations)
|
||||
} else {
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
actx.AddVariationDependencies(
|
||||
append(commonDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: autoDep.variation}),
|
||||
autoDep.depTag, deps.Rustlibs...)
|
||||
}
|
||||
}
|
||||
|
||||
// stdlibs
|
||||
if deps.Stdlibs != nil {
|
||||
if mod.compiler.stdLinkage(ctx) == RlibLinkage {
|
||||
@@ -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)
|
||||
|
Reference in New Issue
Block a user