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