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