summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/arch.go17
-rw-r--r--java/java.go9
-rw-r--r--java/java_test.go5
3 files changed, 20 insertions, 11 deletions
diff --git a/android/arch.go b/android/arch.go
index f4b0d66d9..f505ec653 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -811,10 +811,16 @@ func osMutator(bpctx blueprint.BottomUpMutatorContext) {
}
}
+type archDepTag struct {
+ blueprint.BaseDependencyTag
+ name string
+}
+
// Identifies the dependency from CommonOS variant to the os specific variants.
-type commonOSTag struct{ blueprint.BaseDependencyTag }
+var commonOsToOsSpecificVariantTag = archDepTag{name: "common os to os specific"}
-var commonOsToOsSpecificVariantTag = commonOSTag{}
+// Identifies the dependency from arch variant to the common variant for a "common_first" multilib.
+var firstArchToCommonArchDepTag = archDepTag{name: "first arch to common arch"}
// Get the OsType specific variants for the current CommonOS variant.
//
@@ -831,7 +837,6 @@ func GetOsSpecificVariantsOfCommonOSVariant(mctx BaseModuleContext) []Module {
}
}
})
-
return variants
}
@@ -955,6 +960,12 @@ func archMutator(bpctx blueprint.BottomUpMutatorContext) {
addTargetProperties(m, targets[i], multiTargets, i == 0)
m.base().setArchProperties(mctx)
}
+
+ if multilib == "common_first" && len(modules) >= 2 {
+ for i := range modules[1:] {
+ mctx.AddInterVariantDependency(firstArchToCommonArchDepTag, modules[i+1], modules[0])
+ }
+ }
}
func addTargetProperties(m Module, target Target, multiTargets []Target, primaryTarget bool) {
diff --git a/java/java.go b/java/java.go
index b06e604a9..615cbadfb 100644
--- a/java/java.go
+++ b/java/java.go
@@ -2472,12 +2472,11 @@ func (j *Binary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
j.wrapperFile = android.PathForSource(ctx, "build/soong/scripts/jar-wrapper.sh")
}
- // Depend on the installed jar so that the wrapper doesn't get executed by
- // another build rule before the jar has been installed.
- jarFile := ctx.PrimaryModule().(*Binary).installFile
-
+ // The host installation rules make the installed wrapper depend on all the dependencies
+ // of the wrapper variant, which will include the common variant's jar file. This is
+ // verified by TestBinary.
j.binaryFile = ctx.InstallExecutable(android.PathForModuleInstall(ctx, "bin"),
- ctx.ModuleName(), j.wrapperFile, jarFile)
+ ctx.ModuleName(), j.wrapperFile)
}
}
diff --git a/java/java_test.go b/java/java_test.go
index a43e2a8c9..a727812b5 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -467,9 +467,8 @@ func TestBinary(t *testing.T) {
barWrapperDeps := barWrapper.Output("bar").Implicits.Strings()
// Test that the install binary wrapper depends on the installed jar file
- if len(barWrapperDeps) != 1 || barWrapperDeps[0] != barJar {
- t.Errorf("expected binary wrapper implicits [%q], got %v",
- barJar, barWrapperDeps)
+ if g, w := barWrapperDeps, barJar; !android.InList(w, g) {
+ t.Errorf("expected binary wrapper implicits to contain %q, got %q", w, g)
}
}