xref: /aosp_15_r20/external/protobuf/java/kotlin/BUILD.bazel (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
2load("@rules_java//java:defs.bzl", "java_proto_library")
3load("@rules_jvm_external//:kt_defs.bzl", "kt_jvm_export")
4load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
5load("@rules_proto//proto:defs.bzl", "proto_library")
6load("//:protobuf_version.bzl", "PROTOBUF_JAVA_VERSION")
7load("//:protobuf.bzl", "internal_gen_kt_protos")
8
9exports_files([
10    "src/test/kotlin/com/google/protobuf/Proto3Test.kt",
11])
12
13# Kotlin generated protos depend on this and only this.
14kt_jvm_library(
15    name = "shared_runtime",
16    srcs = [
17        "src/main/kotlin/com/google/protobuf/DslList.kt",
18        "src/main/kotlin/com/google/protobuf/DslMap.kt",
19        "src/main/kotlin/com/google/protobuf/DslProxy.kt",
20        "src/main/kotlin/com/google/protobuf/ExtensionList.kt",
21        "src/main/kotlin/com/google/protobuf/ProtoDslMarker.kt",
22        "src/main/kotlin/com/google/protobuf/UnmodifiableCollections.kt",
23    ],
24    visibility = ["//visibility:public"],
25    deps = [
26        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
27        "//java/lite",
28    ],
29)
30
31kt_jvm_library(
32    name = "only_for_use_in_proto_generated_code_its_generator_and_tests",
33    srcs = ["src/main/kotlin/com/google/protobuf/OnlyForUseByGeneratedProtoCode.kt"],
34    visibility = ["//java:__subpackages__"],
35)
36
37kt_jvm_library(
38    name = "bytestring_lib",
39    srcs = ["src/main/kotlin/com/google/protobuf/ByteStrings.kt"],
40    visibility = ["//java:__subpackages__"],
41    deps = ["//java/lite"],
42)
43
44kt_jvm_library(
45    name = "full_extensions",
46    srcs = [
47        "src/main/kotlin/com/google/protobuf/Anies.kt",
48        "src/main/kotlin/com/google/protobuf/ExtendableMessageExtensions.kt",
49    ],
50    deps = ["//java/core"],
51)
52
53kt_jvm_export(
54    name = "kotlin_mvn",
55    deploy_env = [
56        "@com_github_jetbrains_kotlin//:kotlin-stdlib",
57        "//java/core",
58    ],
59    maven_coordinates = "com.google.protobuf:protobuf-kotlin:%s" % PROTOBUF_JAVA_VERSION,
60    pom_template = "//java/kotlin:pom_template.xml",
61    resources = [
62        "//:built_in_runtime_protos",
63        "//:well_known_type_protos",
64    ],
65    tags = ["manual"],
66    runtime_deps = [
67        ":bytestring_lib",
68        ":full_extensions",
69        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
70        ":shared_runtime",
71        ":well_known_protos_kotlin",
72    ],
73)
74
75filegroup(
76    name = "release",
77    srcs = [
78        ":kotlin_mvn-docs",
79        ":kotlin_mvn-maven-source",
80        ":kotlin_mvn-pom",
81        ":kotlin_mvn-project",
82    ],
83    visibility = ["//java:__pkg__"],
84)
85
86test_suite(
87    name = "tests",
88    tests = [
89        "bytestring_test",
90        "proto2_test",
91        "proto3_test",
92        "shared_tests",
93        "test_extensions",
94    ],
95)
96
97kt_jvm_library(
98    name = "bytestring_test_library",
99    srcs = ["src/test/kotlin/com/google/protobuf/ByteStringsTest.kt"],
100    deps = [
101        ":bytestring_lib",
102        "//java/lite",
103        "@com_github_jetbrains_kotlin//:kotlin-test",
104        "@maven//:com_google_truth_truth",
105        "@maven//:junit_junit",
106    ],
107)
108
109java_test(
110    name = "bytestring_test",
111    test_class = "com.google.protobuf.kotlin.ByteStringsTest",
112    runtime_deps = [":bytestring_test_library"],
113)
114
115proto_library(
116    name = "example_extensible_message_proto",
117    srcs = ["src/test/proto/com/google/protobuf/example_extensible_message.proto"],
118    visibility = ["//java:__subpackages__"],
119)
120
121java_proto_library(
122    name = "example_extensible_message_java_proto",
123    deps = [":example_extensible_message_proto"],
124)
125
126kt_jvm_library(
127    name = "shared_tests_library",
128    srcs = [
129        "src/test/kotlin/com/google/protobuf/DslListTest.kt",
130        "src/test/kotlin/com/google/protobuf/DslMapTest.kt",
131        "src/test/kotlin/com/google/protobuf/ExtensionListTest.kt",
132    ],
133    deps = [
134        ":bytestring_lib",
135        ":example_extensible_message_java_proto",
136        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
137        ":shared_runtime",
138        "@com_github_jetbrains_kotlin//:kotlin-test",
139        "@maven//:com_google_guava_guava_testlib",
140        "@maven//:com_google_truth_truth",
141        "@maven//:junit_junit",
142    ],
143)
144
145java_test(
146    name = "shared_tests",
147    test_class = "com.google.protobuf.kotlin.DslListTest",
148    runtime_deps = [":shared_tests_library"],
149)
150
151kt_jvm_library(
152    name = "test_extensions_library",
153    srcs = [
154        "src/test/kotlin/com/google/protobuf/AniesTest.kt",
155        "src/test/kotlin/com/google/protobuf/ExtendableMessageExtensionsTest.kt",
156    ],
157    deps = [
158        ":example_extensible_message_java_proto",
159        ":full_extensions",
160        ":kotlin_unittest",
161        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
162        ":shared_runtime",
163        "//java/core",
164        "@com_github_jetbrains_kotlin//:kotlin-test",
165        "@maven//:com_google_truth_truth",
166        "@maven//:junit_junit",
167    ],
168)
169
170java_test(
171    name = "test_extensions",
172    test_class = "com.google.protobuf.kotlin.ExtendableMessageExtensionsTest",
173    runtime_deps = [":test_extensions_library"],
174)
175
176proto_library(
177    name = "evil_names_proto2",
178    srcs = ["src/test/proto/com/google/protobuf/evil_names_proto2.proto"],
179    visibility = ["//:__subpackages__"],
180)
181
182java_proto_library(
183    name = "evil_names_proto2_java_proto",
184    deps = [":evil_names_proto2"],
185)
186
187internal_gen_kt_protos(
188    name = "gen_evil_names_proto2",
189    deps = [":evil_names_proto2"],
190)
191
192proto_library(
193    name = "evil_names_proto3",
194    srcs = ["src/test/proto/com/google/protobuf/evil_names_proto3.proto"],
195    visibility = ["//:__subpackages__"],
196)
197
198java_proto_library(
199    name = "evil_names_proto3_java_proto",
200    deps = [":evil_names_proto3"],
201)
202
203internal_gen_kt_protos(
204    name = "gen_evil_names_proto3",
205    deps = [":evil_names_proto3"],
206)
207
208proto_library(
209    name = "multiple_files_proto3",
210    srcs = ["src/test/proto/com/google/protobuf/multiple_files_proto3.proto"],
211    visibility = ["//:__subpackages__"],
212)
213
214java_proto_library(
215    name = "multiple_files_proto3_java_proto",
216    deps = [":multiple_files_proto3"],
217)
218
219internal_gen_kt_protos(
220    name = "gen_kotlin_proto3_java_multiple_files",
221    deps = [":multiple_files_proto3"],
222)
223
224internal_gen_kt_protos(
225    name = "gen_kotlin_unittest",
226    visibility = ["//java:__subpackages__"],
227    deps = ["//:kt_unittest"],
228)
229
230kt_jvm_library(
231    name = "kotlin_unittest",
232    srcs = [
233        ":gen_evil_names_proto2",
234        ":gen_kotlin_unittest",
235    ],
236    deps = [
237        ":evil_names_proto2_java_proto",
238        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
239        ":shared_runtime",
240        ":well_known_protos_kotlin",
241        "//java/core",
242        "//java/core:generic_test_protos_java_proto",
243    ],
244)
245
246internal_gen_kt_protos(
247    name = "gen_kotlin_proto3_unittest",
248    deps = ["//:kt_proto3_unittest"],
249)
250
251kt_jvm_library(
252    name = "kotlin_proto3_unittest",
253    srcs = [
254        ":gen_evil_names_proto3",
255        ":gen_kotlin_proto3_java_multiple_files",
256        ":gen_kotlin_proto3_unittest",
257    ],
258    deps = [
259        ":evil_names_proto3_java_proto",
260        ":multiple_files_proto3_java_proto",
261        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
262        ":shared_runtime",
263        "//java/core",
264        "//java/core:generic_test_protos_java_proto",
265    ],
266)
267
268kt_jvm_library(
269    name = "proto2_test_library",
270    srcs = ["src/test/kotlin/com/google/protobuf/Proto2Test.kt"],
271    deps = [
272        ":kotlin_unittest",
273        "//java/core:test_util",
274        "@maven//:com_google_truth_truth",
275        "@maven//:junit_junit",
276    ],
277)
278
279java_test(
280    name = "proto2_test",
281    test_class = "com.google.protobuf.kotlin.Proto2Test",
282    runtime_deps = [":proto2_test_library"],
283)
284
285kt_jvm_library(
286    name = "proto3_test_library",
287    srcs = ["src/test/kotlin/com/google/protobuf/Proto3Test.kt"],
288    deps = [
289        ":kotlin_proto3_unittest",
290        "//java/core:test_util",
291        "@maven//:com_google_truth_truth",
292        "@maven//:junit_junit",
293    ],
294)
295
296java_test(
297    name = "proto3_test",
298    test_class = "com.google.protobuf.kotlin.Proto3Test",
299    runtime_deps = [":proto3_test_library"],
300)
301
302internal_gen_kt_protos(
303    name = "gen_well_known_protos_kotlin",
304    visibility = [
305        "//java:__subpackages__",
306    ],
307    deps = [
308        "//:any_proto",
309        "//:api_proto",
310        "//:compiler_plugin_proto",
311        "//:descriptor_proto",
312        "//:duration_proto",
313        "//:empty_proto",
314        "//:field_mask_proto",
315        "//:source_context_proto",
316        "//:struct_proto",
317        "//:timestamp_proto",
318        "//:type_proto",
319        "//:wrappers_proto",
320    ],
321)
322
323kt_jvm_library(
324    name = "well_known_protos_kotlin",
325    srcs = [
326        ":gen_well_known_protos_kotlin",
327    ],
328    deps = [
329        ":only_for_use_in_proto_generated_code_its_generator_and_tests",
330        ":shared_runtime",
331        "//java/core",
332    ],
333)
334
335pkg_files(
336    name = "dist_files",
337    srcs = glob([
338        "src/main/kotlin/com/google/protobuf/*.kt",
339        "src/test/kotlin/**/*.kt",
340        "src/test/proto/**/*.proto",
341    ]) + [
342        "BUILD.bazel",
343        "generate-sources-build.xml",
344        "generate-test-sources-build.xml",
345        "pom.xml",
346        "pom_template.xml",
347    ],
348    strip_prefix = strip_prefix.from_root(""),
349    visibility = ["//java:__pkg__"],
350)
351