blob: 67fc6e024a811adab9ff12a5d936db9d8bce71c1 [file] [log] [blame]
Deanna Garcia6e8b0df2022-01-20 22:24:59 +00001load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
Deanna Garciadfd99e72022-01-12 21:54:30 +00002load("@rules_java//java:defs.bzl", "java_proto_library")
Deanna Garciaaafcb922022-02-28 18:28:50 +00003load("@rules_jvm_external//:kt_defs.bzl", "kt_jvm_export")
David L. Jonesd76f8c82022-04-22 16:58:16 -07004load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
Deanna Garciadfd99e72022-01-12 21:54:30 +00005load("@rules_proto//proto:defs.bzl", "proto_library")
zhangskzb37b6132022-05-03 11:58:31 -04006load("//:protobuf_version.bzl", "PROTOBUF_JAVA_VERSION")
Deanna Garcia67b74dd2022-02-15 22:45:56 +00007load("//:protobuf.bzl", "internal_gen_kt_protos")
Deanna Garciadfd99e72022-01-12 21:54:30 +00008
Deanna Garcia14c62a02022-02-11 23:15:08 +00009exports_files([
David L. Jonesd76f8c82022-04-22 16:58:16 -070010 "src/test/kotlin/com/google/protobuf/Proto3Test.kt",
Deanna Garcia14c62a02022-02-11 23:15:08 +000011])
12
Deanna Garciadfd99e72022-01-12 21:54:30 +000013# 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"],
Deanna Garcia933239f2022-03-01 00:27:42 +000040 visibility = ["//java:__subpackages__"],
David L. Jonesd76f8c82022-04-22 16:58:16 -070041 deps = ["//java/lite"],
Deanna Garciadfd99e72022-01-12 21:54:30 +000042)
43
44kt_jvm_library(
45 name = "full_extensions",
Deanna Garciae7609842022-02-11 19:13:07 +000046 srcs = [
David L. Jonesd76f8c82022-04-22 16:58:16 -070047 "src/main/kotlin/com/google/protobuf/Anies.kt",
48 "src/main/kotlin/com/google/protobuf/ExtendableMessageExtensions.kt",
Deanna Garciae7609842022-02-11 19:13:07 +000049 ],
Deanna Garciadfd99e72022-01-12 21:54:30 +000050 deps = ["//java/core"],
51)
52
Deanna Garciaaafcb922022-02-28 18:28:50 +000053kt_jvm_export(
54 name = "kotlin_mvn",
David L. Jonesd76f8c82022-04-22 16:58:16 -070055 deploy_env = [
56 "@com_github_jetbrains_kotlin//:kotlin-stdlib",
57 "//java/core",
58 ],
zhangskzb37b6132022-05-03 11:58:31 -040059 maven_coordinates = "com.google.protobuf:protobuf-kotlin:%s" % PROTOBUF_JAVA_VERSION,
Deanna Garcia933239f2022-03-01 00:27:42 +000060 pom_template = "//java/kotlin:pom_template.xml",
David L. Jones5ebde5b2022-05-05 13:29:47 -070061 resources = [
62 "//:built_in_runtime_protos",
63 "//:well_known_type_protos",
64 ],
David L. Jones67823fe2022-05-04 17:30:23 -070065 tags = ["manual"],
Deanna Garciaaafcb922022-02-28 18:28:50 +000066 runtime_deps = [
David L. Jonesd76f8c82022-04-22 16:58:16 -070067 ":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",
Deanna Garciaaafcb922022-02-28 18:28:50 +000072 ],
73)
74
Deanna Garcia933239f2022-03-01 00:27:42 +000075filegroup(
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
Deanna Garciadfd99e72022-01-12 21:54:30 +000086test_suite(
87 name = "tests",
88 tests = [
89 "bytestring_test",
Deanna Garciadfd99e72022-01-12 21:54:30 +000090 "proto2_test",
91 "proto3_test",
David L. Jonesd76f8c82022-04-22 16:58:16 -070092 "shared_tests",
93 "test_extensions",
Deanna Garciadfd99e72022-01-12 21:54:30 +000094 ],
95)
96
Deanna Garcia6e8b0df2022-01-20 22:24:59 +000097kt_jvm_library(
98 name = "bytestring_test_library",
Deanna Garciadfd99e72022-01-12 21:54:30 +000099 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 ],
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000107)
108
109java_test(
110 name = "bytestring_test",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000111 test_class = "com.google.protobuf.kotlin.ByteStringsTest",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700112 runtime_deps = [":bytestring_test_library"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000113)
114
115proto_library(
116 name = "example_extensible_message_proto",
117 srcs = ["src/test/proto/com/google/protobuf/example_extensible_message.proto"],
Deanna Garcia7924cd62022-01-13 00:10:23 +0000118 visibility = ["//java:__subpackages__"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000119)
120
121java_proto_library(
122 name = "example_extensible_message_java_proto",
123 deps = [":example_extensible_message_proto"],
124)
125
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000126kt_jvm_library(
127 name = "shared_tests_library",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000128 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",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000139 "@maven//:com_google_guava_guava_testlib",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700140 "@maven//:com_google_truth_truth",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000141 "@maven//:junit_junit",
142 ],
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000143)
144
145java_test(
146 name = "shared_tests",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000147 test_class = "com.google.protobuf.kotlin.DslListTest",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700148 runtime_deps = [":shared_tests_library"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000149)
150
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000151kt_jvm_library(
152 name = "test_extensions_library",
Deanna Garciae7609842022-02-11 19:13:07 +0000153 srcs = [
David L. Jonesd76f8c82022-04-22 16:58:16 -0700154 "src/test/kotlin/com/google/protobuf/AniesTest.kt",
155 "src/test/kotlin/com/google/protobuf/ExtendableMessageExtensionsTest.kt",
Deanna Garciae7609842022-02-11 19:13:07 +0000156 ],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000157 deps = [
158 ":example_extensible_message_java_proto",
159 ":full_extensions",
Deanna Garciae7609842022-02-11 19:13:07 +0000160 ":kotlin_unittest",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000161 ":only_for_use_in_proto_generated_code_its_generator_and_tests",
162 ":shared_runtime",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700163 "//java/core",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000164 "@com_github_jetbrains_kotlin//:kotlin-test",
165 "@maven//:com_google_truth_truth",
166 "@maven//:junit_junit",
167 ],
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000168)
169
170java_test(
171 name = "test_extensions",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000172 test_class = "com.google.protobuf.kotlin.ExtendableMessageExtensionsTest",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700173 runtime_deps = [":test_extensions_library"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000174)
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
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000182java_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
Deanna Garciadfd99e72022-01-12 21:54:30 +0000192proto_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(
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000199 name = "evil_names_proto3_java_proto",
200 deps = [":evil_names_proto3"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000201)
202
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000203internal_gen_kt_protos(
204 name = "gen_evil_names_proto3",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000205 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
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000214java_proto_library(
215 name = "multiple_files_proto3_java_proto",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000216 deps = [":multiple_files_proto3"],
217)
218
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000219internal_gen_kt_protos(
Deanna Garciadfd99e72022-01-12 21:54:30 +0000220 name = "gen_kotlin_proto3_java_multiple_files",
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000221 deps = [":multiple_files_proto3"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000222)
223
David L. Jones5ebde5b2022-05-05 13:29:47 -0700224internal_gen_kt_protos(
225 name = "gen_kotlin_unittest",
226 visibility = ["//java:__subpackages__"],
227 deps = ["//:kt_unittest"],
228)
229
Deanna Garciadfd99e72022-01-12 21:54:30 +0000230kt_jvm_library(
231 name = "kotlin_unittest",
232 srcs = [
233 ":gen_evil_names_proto2",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700234 ":gen_kotlin_unittest",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000235 ],
236 deps = [
237 ":evil_names_proto2_java_proto",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000238 ":only_for_use_in_proto_generated_code_its_generator_and_tests",
239 ":shared_runtime",
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000240 ":well_known_protos_kotlin",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700241 "//java/core",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700242 "//java/core:generic_test_protos_java_proto",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000243 ],
244)
245
David L. Jones5ebde5b2022-05-05 13:29:47 -0700246internal_gen_kt_protos(
247 name = "gen_kotlin_proto3_unittest",
248 deps = ["//:kt_proto3_unittest"],
249)
250
Deanna Garciadfd99e72022-01-12 21:54:30 +0000251kt_jvm_library(
252 name = "kotlin_proto3_unittest",
253 srcs = [
254 ":gen_evil_names_proto3",
255 ":gen_kotlin_proto3_java_multiple_files",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700256 ":gen_kotlin_proto3_unittest",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000257 ],
258 deps = [
259 ":evil_names_proto3_java_proto",
260 ":multiple_files_proto3_java_proto",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000261 ":only_for_use_in_proto_generated_code_its_generator_and_tests",
262 ":shared_runtime",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700263 "//java/core",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700264 "//java/core:generic_test_protos_java_proto",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000265 ],
266)
267
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000268kt_jvm_library(
269 name = "proto2_test_library",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000270 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 ],
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000277)
278
279java_test(
280 name = "proto2_test",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000281 test_class = "com.google.protobuf.kotlin.Proto2Test",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700282 runtime_deps = [":proto2_test_library"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000283)
284
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000285kt_jvm_library(
286 name = "proto3_test_library",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000287 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 ],
Deanna Garcia6e8b0df2022-01-20 22:24:59 +0000294)
295
296java_test(
297 name = "proto3_test",
Deanna Garciadfd99e72022-01-12 21:54:30 +0000298 test_class = "com.google.protobuf.kotlin.Proto3Test",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700299 runtime_deps = [":proto3_test_library"],
Deanna Garciadfd99e72022-01-12 21:54:30 +0000300)
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000301
David L. Jones5ebde5b2022-05-05 13:29:47 -0700302internal_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
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000323kt_jvm_library(
324 name = "well_known_protos_kotlin",
325 srcs = [
David L. Jones5ebde5b2022-05-05 13:29:47 -0700326 ":gen_well_known_protos_kotlin",
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000327 ],
328 deps = [
David L. Jonesd76f8c82022-04-22 16:58:16 -0700329 ":only_for_use_in_proto_generated_code_its_generator_and_tests",
330 ":shared_runtime",
331 "//java/core",
Deanna Garcia67b74dd2022-02-15 22:45:56 +0000332 ],
333)
David L. Jonesd76f8c82022-04-22 16:58:16 -0700334
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 ]) + [
David L. Jones95da0ba2022-04-29 17:57:55 -0700342 "BUILD.bazel",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700343 "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)