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