Update runpath for jni libs
To support stem, cc libraries will be generated in <pacakge_name>/<label.name>. Update RUNPATH of java binaries so that it can find its jni deps Test: bp2build Test: TH Bug: 240563612 Change-Id: Ia2f70f0424a8526ee35856225c1a8cd1067a8570
This commit is contained in:
@@ -68,7 +68,7 @@ func TestJavaBinaryHost(t *testing.T) {
|
||||
}),
|
||||
MakeBazelTarget("java_binary", "java-binary-host-1", AttrNameToString{
|
||||
"main_class": `"com.android.test.MainClass"`,
|
||||
"jvm_flags": `["-Djava.library.path=$${RUNPATH}other"]`,
|
||||
"jvm_flags": `["-Djava.library.path=$${RUNPATH}other/jni-lib-1"]`,
|
||||
"target_compatible_with": `select({
|
||||
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
|
||||
"//conditions:default": [],
|
||||
|
21
java/java.go
21
java/java.go
@@ -3104,24 +3104,15 @@ func javaBinaryHostBp2Build(ctx android.TopDownMutatorContext, m *Binary) {
|
||||
// Attribute jvm_flags
|
||||
var jvmFlags bazel.StringListAttribute
|
||||
if m.binaryProperties.Jni_libs != nil {
|
||||
jniLibPackages := map[string]bool{}
|
||||
for _, jniLibLabel := range android.BazelLabelForModuleDeps(ctx, m.binaryProperties.Jni_libs).Includes {
|
||||
jniLibPackage := jniLibLabel.Label
|
||||
indexOfColon := strings.Index(jniLibLabel.Label, ":")
|
||||
if indexOfColon > 0 {
|
||||
// JNI lib from other package
|
||||
jniLibPackage = jniLibLabel.Label[2:indexOfColon]
|
||||
} else if indexOfColon == 0 {
|
||||
// JNI lib in the same package of java_binary
|
||||
packageOfCurrentModule := m.GetBazelLabel(ctx, m)
|
||||
jniLibPackage = packageOfCurrentModule[2:strings.Index(packageOfCurrentModule, ":")]
|
||||
}
|
||||
if _, inMap := jniLibPackages[jniLibPackage]; !inMap {
|
||||
jniLibPackages[jniLibPackage] = true
|
||||
jniLibPackages := []string{}
|
||||
for _, jniLib := range m.binaryProperties.Jni_libs {
|
||||
if jniLibModule, exists := ctx.ModuleFromName(jniLib); exists {
|
||||
otherDir := ctx.OtherModuleDir(jniLibModule)
|
||||
jniLibPackages = append(jniLibPackages, filepath.Join(otherDir, jniLib))
|
||||
}
|
||||
}
|
||||
jniLibPaths := []string{}
|
||||
for jniLibPackage, _ := range jniLibPackages {
|
||||
for _, jniLibPackage := range jniLibPackages {
|
||||
// See cs/f:.*/third_party/bazel/.*java_stub_template.txt for the use of RUNPATH
|
||||
jniLibPaths = append(jniLibPaths, "$${RUNPATH}"+jniLibPackage)
|
||||
}
|
||||
|
Reference in New Issue
Block a user