summaryrefslogtreecommitdiff
path: root/java/java.go
diff options
context:
space:
mode:
author Zi Wang <mrziwang@google.com> 2023-09-21 16:00:45 -0700
committer Zi Wang <mrziwang@google.com> 2023-09-22 11:20:06 -0700
commit4dbd0e868875c6a839fc00b62f3701f8d9db6445 (patch)
treeaca3d9461bd6d59d395e01f025add09d08522217 /java/java.go
parenteba2a2af2270585aefccad590fc5f683567a784a (diff)
Pass java_library libs and static_libs to java_*_proto_library
If a java_library module has proto srcs, a java_*_proto_library target will be created for it. Proto sources are generated and then compiled by a java_library target. We need to pass the libs and static_libs of the java_library module to this java_library target so that the compile-time classpath is correct. Test: updated unit tests and CI Bug: 301469542 Change-Id: I05b2efce6fda2223e85728b3c4c7b1815d04c3dd
Diffstat (limited to 'java/java.go')
-rw-r--r--java/java.go25
1 files changed, 14 insertions, 11 deletions
diff --git a/java/java.go b/java/java.go
index d5aeb7cb2..fbad4f390 100644
--- a/java/java.go
+++ b/java/java.go
@@ -3067,17 +3067,6 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.Bp2buildMutatorContext
}
}
- protoDepLabel := bp2buildProto(ctx, &m.Module, srcPartitions[protoSrcPartition])
- // Soong does not differentiate between a java_library and the Bazel equivalent of
- // a java_proto_library + proto_library pair. Instead, in Soong proto sources are
- // listed directly in the srcs of a java_library, and the classes produced
- // by protoc are included directly in the resulting JAR. Thus upstream dependencies
- // that depend on a java_library with proto sources can link directly to the protobuf API,
- // and so this should be a static dependency.
- if protoDepLabel != nil {
- staticDeps.Append(bazel.MakeSingleLabelListAttribute(*protoDepLabel))
- }
-
depLabels := &javaDependencyLabels{}
depLabels.Deps = deps
@@ -3093,6 +3082,20 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.Bp2buildMutatorContext
}
depLabels.StaticDeps.Append(staticDeps)
+ var additionalProtoDeps bazel.LabelListAttribute
+ additionalProtoDeps.Append(depLabels.Deps)
+ additionalProtoDeps.Append(depLabels.StaticDeps)
+ protoDepLabel := bp2buildProto(ctx, &m.Module, srcPartitions[protoSrcPartition], additionalProtoDeps)
+ // Soong does not differentiate between a java_library and the Bazel equivalent of
+ // a java_proto_library + proto_library pair. Instead, in Soong proto sources are
+ // listed directly in the srcs of a java_library, and the classes produced
+ // by protoc are included directly in the resulting JAR. Thus upstream dependencies
+ // that depend on a java_library with proto sources can link directly to the protobuf API,
+ // and so this should be a static dependency.
+ if protoDepLabel != nil {
+ depLabels.StaticDeps.Append(bazel.MakeSingleLabelListAttribute(*protoDepLabel))
+ }
+
hasKotlin := !kotlinSrcs.IsEmpty()
commonAttrs.kotlinAttributes = &kotlinAttributes{
Kotlincflags: &m.properties.Kotlincflags,