BUILD.bazel 9.3 KB

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