blob: d9e2c4476a31f320e146c73f276ee1bd36be9f9a [file] [log] [blame]
Laszlo Csomor55171682017-12-01 12:05:32 +01001# Bazel (https://bazel.build/) BUILD file for Protobuf.
Jisi Liud19604f2015-06-17 17:37:58 -07002
Protobuf Team Bot21d75f82024-04-05 07:45:26 -07003load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
aiuto3ab12762024-02-13 09:06:30 -08004load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
Protobuf Team Bot21d75f82024-04-05 07:45:26 -07005load("//bazel:cc_proto_library.bzl", "cc_proto_library")
6load("//bazel:java_lite_proto_library.bzl", "java_lite_proto_library")
7load("//bazel:java_proto_library.bzl", "java_proto_library")
8load("//bazel:proto_library.bzl", "proto_library")
9load("//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
Mike Kruskal723bd4c2023-02-28 14:07:48 -080010load("//build_defs:cpp_opts.bzl", "COPTS", "LINK_OPTS")
Mike Kruskal571b7272023-11-21 12:08:51 -080011load(":protobuf.bzl", "internal_objc_proto_library", "internal_php_proto_library", "internal_py_proto_library")
David L. Jones46710ca2022-04-20 16:26:44 -070012
Jisi Liud19604f2015-06-17 17:37:58 -070013licenses(["notice"])
14
Piotr Sikorafaea19c2016-08-04 15:32:14 -070015exports_files(["LICENSE"])
16
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -070017################################################################################
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +020018# Well Known Types Proto Library Rules
19#
David L. Jones5ebde5b2022-05-05 13:29:47 -070020# https://developers.google.com/protocol-buffers/docs/reference/google.protobuf
21################################################################################
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +020022# These proto_library rules can be used with one of the language specific proto
23# library rules i.e. java_proto_library:
24#
25# java_proto_library(
26# name = "any_java_proto",
Protobuf Team Bot21d75f82024-04-05 07:45:26 -070027# deps = ["@protobuf//:any_proto"],
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +020028# )
29################################################################################
30
David L. Jones171a6b12022-05-18 13:45:22 -070031alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070032 name = "any_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070033 actual = "//src/google/protobuf:any_proto",
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +020034 visibility = ["//visibility:public"],
David L. Jones5ebde5b2022-05-05 13:29:47 -070035)
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +020036
David L. Jones171a6b12022-05-18 13:45:22 -070037alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070038 name = "api_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070039 actual = "//src/google/protobuf:api_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070040 visibility = ["//visibility:public"],
David L. Jones5ebde5b2022-05-05 13:29:47 -070041)
42
David L. Jones171a6b12022-05-18 13:45:22 -070043alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070044 name = "duration_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070045 actual = "//src/google/protobuf:duration_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070046 visibility = ["//visibility:public"],
47)
48
David L. Jones171a6b12022-05-18 13:45:22 -070049alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070050 name = "empty_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070051 actual = "//src/google/protobuf:empty_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070052 visibility = ["//visibility:public"],
53)
54
David L. Jones171a6b12022-05-18 13:45:22 -070055alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070056 name = "field_mask_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070057 actual = "//src/google/protobuf:field_mask_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070058 visibility = ["//visibility:public"],
59)
60
David L. Jones171a6b12022-05-18 13:45:22 -070061alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070062 name = "source_context_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070063 actual = "//src/google/protobuf:source_context_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070064 visibility = ["//visibility:public"],
65)
66
David L. Jones171a6b12022-05-18 13:45:22 -070067alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070068 name = "struct_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070069 actual = "//src/google/protobuf:struct_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070070 visibility = ["//visibility:public"],
71)
72
David L. Jones171a6b12022-05-18 13:45:22 -070073alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070074 name = "timestamp_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070075 actual = "//src/google/protobuf:timestamp_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070076 visibility = ["//visibility:public"],
77)
78
David L. Jones171a6b12022-05-18 13:45:22 -070079alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070080 name = "type_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070081 actual = "//src/google/protobuf:type_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070082 visibility = ["//visibility:public"],
David L. Jones5ebde5b2022-05-05 13:29:47 -070083)
84
David L. Jones171a6b12022-05-18 13:45:22 -070085alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -070086 name = "wrappers_proto",
David L. Jones171a6b12022-05-18 13:45:22 -070087 actual = "//src/google/protobuf:wrappers_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -070088 visibility = ["//visibility:public"],
89)
90
Adam Cozzettea7b04212024-01-03 15:17:41 -080091# C++ targets for the well-known types
92
93alias(
94 name = "any_cc_proto",
95 actual = "//src/google/protobuf:any_cc_proto",
96 visibility = ["//visibility:public"],
97)
98
99alias(
100 name = "api_cc_proto",
101 actual = "//src/google/protobuf:api_cc_proto",
102 visibility = ["//visibility:public"],
103)
104
105alias(
106 name = "duration_cc_proto",
107 actual = "//src/google/protobuf:duration_cc_proto",
108 visibility = ["//visibility:public"],
109)
110
111alias(
112 name = "empty_cc_proto",
113 actual = "//src/google/protobuf:empty_cc_proto",
114 visibility = ["//visibility:public"],
115)
116
117alias(
118 name = "field_mask_cc_proto",
119 actual = "//src/google/protobuf:field_mask_cc_proto",
120 visibility = ["//visibility:public"],
121)
122
123alias(
124 name = "source_context_cc_proto",
125 actual = "//src/google/protobuf:source_context_cc_proto",
126 visibility = ["//visibility:public"],
127)
128
129alias(
130 name = "struct_cc_proto",
131 actual = "//src/google/protobuf:struct_cc_proto",
132 visibility = ["//visibility:public"],
133)
134
135alias(
136 name = "timestamp_cc_proto",
137 actual = "//src/google/protobuf:timestamp_cc_proto",
138 visibility = ["//visibility:public"],
139)
140
141alias(
142 name = "type_cc_proto",
143 actual = "//src/google/protobuf:type_cc_proto",
144 visibility = ["//visibility:public"],
145)
146
147alias(
148 name = "wrappers_cc_proto",
149 actual = "//src/google/protobuf:wrappers_cc_proto",
150 visibility = ["//visibility:public"],
151)
152
David L. Jones171a6b12022-05-18 13:45:22 -0700153# Source files: these are aliases to a filegroup, not a `proto_library`.
154#
155# (This is _probably_ not what you want.)
156alias(
157 name = "lite_well_known_protos",
158 actual = "//src/google/protobuf:well_known_type_protos", # filegroup
159 visibility = ["//visibility:public"],
160)
161
162alias(
163 name = "well_known_type_protos",
164 actual = "//src/google/protobuf:well_known_type_protos", # filegroup
165 visibility = ["//visibility:public"],
166)
167
168# Built-in runtime protos: these are part of protobuf's internal
169# implementation, but are not Well-Known Types.
170
171alias(
172 name = "descriptor_proto",
173 actual = "//src/google/protobuf:descriptor_proto", # proto_library
174 visibility = ["//visibility:public"],
175)
176
177alias(
178 name = "descriptor_proto_srcs",
179 actual = "//src/google/protobuf:descriptor_proto_srcs", # filegroup
180 visibility = ["//visibility:public"],
181)
David L. Jones5ebde5b2022-05-05 13:29:47 -0700182
David L. Jonescbd1adc2022-05-17 16:39:47 -0700183alias(
David L. Jones5ebde5b2022-05-05 13:29:47 -0700184 name = "compiler_plugin_proto",
David L. Jones171a6b12022-05-18 13:45:22 -0700185 actual = "//src/google/protobuf/compiler:plugin_proto", # proto_library
David L. Jones5ebde5b2022-05-05 13:29:47 -0700186 visibility = ["//visibility:public"],
David L. Jones5ebde5b2022-05-05 13:29:47 -0700187)
188
David L. Jones171a6b12022-05-18 13:45:22 -0700189cc_library(
190 name = "cc_wkt_protos",
191 deprecation = "Only for backward compatibility. Do not use.",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700192 visibility = ["//visibility:public"],
193)
194
David L. Jonesceaae1b2022-05-26 16:32:15 -0700195# Source protos that are typically part of the protobuf runtime.
196#
197# DEPRECATED: Prefer :well_known_type_protos for the Well-Known Types
198# (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)
199# or :descriptor_proto(_srcs) for descriptor.proto (source), or
200# :compiler_plugin_proto for compiler/plugin.proto.
201filegroup(
202 name = "well_known_protos",
203 srcs = [
204 ":descriptor_proto_srcs",
205 ":well_known_type_protos",
206 "//src/google/protobuf/compiler:plugin.proto",
207 ],
208 deprecation = "Prefer :well_known_type_protos instead.",
209 visibility = ["//visibility:public"],
210)
211
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200212################################################################################
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700213# Protocol Buffers Compiler
214################################################################################
215
Protobuf Team Bot7787f3e2022-12-16 03:07:20 -0800216alias(
217 name = "protoc_lib",
218 actual = "//src/google/protobuf/compiler:protoc_lib",
219 visibility = ["//visibility:public"],
220)
221
Jisi Liud19604f2015-06-17 17:37:58 -0700222cc_binary(
223 name = "protoc",
Mike Kruskald220b432022-08-29 18:19:38 -0400224 copts = COPTS,
Mike Kruskal723bd4c2023-02-28 14:07:48 -0800225 linkopts = LINK_OPTS,
226 visibility = ["//visibility:public"],
227 deps = ["//src/google/protobuf/compiler:protoc_lib"],
228)
229
230cc_binary(
231 name = "protoc_static",
232 copts = COPTS,
Mike Kruskal723bd4c2023-02-28 14:07:48 -0800233 features = select({
Adam Cozzette501ecec2023-09-26 14:36:20 -0700234 # This isn't possible on mac because there is no static library for lcrt0.o
235 "@platforms//os:osx": [],
236 "//build_defs:config_osx": [],
237 # When cross-compiling we need to statically link all C++ libraries.
238 "//conditions:default": ["fully_static_link"],
Mike Kruskal723bd4c2023-02-28 14:07:48 -0800239 }),
Adam Cozzette501ecec2023-09-26 14:36:20 -0700240 linkopts = LINK_OPTS,
Jisi Liud19604f2015-06-17 17:37:58 -0700241 visibility = ["//visibility:public"],
David L. Jonescbd1adc2022-05-17 16:39:47 -0700242 deps = ["//src/google/protobuf/compiler:protoc_lib"],
Jisi Liud19604f2015-06-17 17:37:58 -0700243)
244
Jisi Liud19604f2015-06-17 17:37:58 -0700245################################################################################
David L. Jones171a6b12022-05-18 13:45:22 -0700246# C++ runtime
Jisi Liud19604f2015-06-17 17:37:58 -0700247################################################################################
248
Protobuf Team Bot5b6c2452023-09-14 12:04:25 -0700249# Expose the runtime for the proto_lang_toolchain so that it can also be used in
250# a user-defined proto_lang_toolchain.
251alias(
Adam Cozzettea7b04212024-01-03 15:17:41 -0800252 name = "protobuf",
Adam Cozzettec32c04c2024-02-14 10:00:03 -0800253 actual = "//src/google/protobuf:protobuf_layering_check_legacy",
Adam Cozzettea7b04212024-01-03 15:17:41 -0800254 visibility = ["//visibility:public"],
255)
256
257alias(
Adam Cozzette501ecec2023-09-26 14:36:20 -0700258 name = "protobuf_nowkt",
Adam Cozzettec32c04c2024-02-14 10:00:03 -0800259 actual = "//src/google/protobuf:protobuf_layering_check_legacy",
Adam Cozzettea7b04212024-01-03 15:17:41 -0800260 deprecation = "Use //:protobuf instead",
Adam Cozzette501ecec2023-09-26 14:36:20 -0700261 visibility = ["//visibility:public"],
Protobuf Team Bot5b6c2452023-09-14 12:04:25 -0700262)
263
David L. Jones171a6b12022-05-18 13:45:22 -0700264# The "lite" runtime works for .proto files that specify the option:
265# optimize_for = LITE_RUNTIME;
266#
267# The lite runtime does not include the `Reflection` APIs (including
268# `Descriptor` and related types) or Well-Known Types.
269#
270# See also:
271# https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#message
272# https://developers.google.com/protocol-buffers/docs/reference/google.protobuf
273alias(
274 name = "protobuf_lite",
275 actual = "//src/google/protobuf:protobuf_lite",
276 visibility = ["//visibility:public"],
David L. Jonescbd1adc2022-05-17 16:39:47 -0700277)
Jisi Liud19604f2015-06-17 17:37:58 -0700278
David L. Jones171a6b12022-05-18 13:45:22 -0700279# This provides just the header files for use in projects that need to build
280# shared libraries for dynamic loading. This target is available until Bazel
281# adds native support for such use cases.
Sandy Zhang81068e82023-09-18 15:13:49 -0700282# TODO: Remove this target once the support gets added to Bazel.
David L. Jones171a6b12022-05-18 13:45:22 -0700283alias(
284 name = "protobuf_headers",
285 actual = "//src/google/protobuf:protobuf_headers",
286 visibility = ["//visibility:public"],
Jisi Liu7a0c4312015-06-18 16:45:27 -0700287)
Jisi Liu993fb702015-10-19 17:19:49 -0700288
Mike Kruskal32bea522022-10-06 16:48:39 -0700289alias(
290 name = "json",
291 actual = "//src/google/protobuf/json",
292 visibility = ["//visibility:public"],
293)
294
Adam Cozzette220548f2024-02-07 15:56:12 -0800295alias(
296 name = "delimited_message_util",
297 actual = "//src/google/protobuf/util:delimited_message_util",
298 visibility = ["//visibility:public"],
299)
300
301alias(
302 name = "differencer",
303 actual = "//src/google/protobuf/util:differencer",
304 visibility = ["//visibility:public"],
305)
306
307alias(
308 name = "field_mask_util",
309 actual = "//src/google/protobuf/util:field_mask_util",
310 visibility = ["//visibility:public"],
311)
312
313alias(
314 name = "json_util",
315 actual = "//src/google/protobuf/util:json_util",
316 visibility = ["//visibility:public"],
317)
318
319alias(
320 name = "time_util",
321 actual = "//src/google/protobuf/util:time_util",
322 visibility = ["//visibility:public"],
323)
324
325alias(
326 name = "type_resolver",
327 actual = "//src/google/protobuf/util:type_resolver",
328 visibility = ["//visibility:public"],
329)
330
Mike Kruskalea810242024-04-16 11:11:03 -0700331alias(
332 name = "cpp_features_proto",
333 actual = "//src/google/protobuf:cpp_features_proto", # proto_library
334 visibility = ["//visibility:public"],
335)
336
Jisi Liu993fb702015-10-19 17:19:49 -0700337################################################################################
338# Java support
339################################################################################
Yannicf0cb9cd2020-02-13 22:04:14 +0100340
Yannicf0cb9cd2020-02-13 22:04:14 +0100341alias(
Jisi Liu166e9bb2015-10-21 10:56:38 -0700342 name = "protobuf_java",
Yannicf0cb9cd2020-02-13 22:04:14 +0100343 actual = "//java/core",
Jisi Liu993fb702015-10-19 17:19:49 -0700344 visibility = ["//visibility:public"],
345)
346
Yannicf0cb9cd2020-02-13 22:04:14 +0100347alias(
Carmi Grushko5c25f412019-05-24 17:26:07 +0300348 name = "protobuf_javalite",
Yannicf0cb9cd2020-02-13 22:04:14 +0100349 actual = "//java/lite",
Jisi Liu993fb702015-10-19 17:19:49 -0700350 visibility = ["//visibility:public"],
351)
352
Yannicf0cb9cd2020-02-13 22:04:14 +0100353alias(
Steven Parkesa9244ca2016-03-10 17:50:25 -0800354 name = "protobuf_java_util",
Yannicf0cb9cd2020-02-13 22:04:14 +0100355 actual = "//java/util",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800356 visibility = ["//visibility:public"],
Yannicf0cb9cd2020-02-13 22:04:14 +0100357)
358
359alias(
360 name = "java_toolchain",
361 actual = "//java/core:toolchain",
362 visibility = ["//visibility:public"],
363)
364
365alias(
366 name = "javalite_toolchain",
367 actual = "//java/lite:toolchain",
368 visibility = ["//visibility:public"],
Steven Parkesa9244ca2016-03-10 17:50:25 -0800369)
370
Mike Kruskalea810242024-04-16 11:11:03 -0700371alias(
372 name = "java_features_proto",
373 actual = "//java/core:java_features_proto", # proto_library
374 visibility = ["//visibility:public"],
375)
376
Jisi Liu993fb702015-10-19 17:19:49 -0700377################################################################################
378# Python support
379################################################################################
380
David L. Jonesb3cbea12022-05-12 19:48:58 -0700381alias(
Joshua Habermana6901f02022-04-25 22:00:57 +0000382 name = "protobuf_python",
David L. Jonesb3cbea12022-05-12 19:48:58 -0700383 actual = "//python:protobuf_python",
384 visibility = ["//visibility:public"],
Jisi Liu993fb702015-10-19 17:19:49 -0700385)
386
David L. Jonesb3cbea12022-05-12 19:48:58 -0700387alias(
388 name = "python_srcs",
389 actual = "//python:python_srcs",
Adam Cozzette501ecec2023-09-26 14:36:20 -0700390 visibility = ["//python:__subpackages__"],
David Z. Chen02cd45c2016-05-20 16:49:04 -0700391)
392
David L. Jonesb3cbea12022-05-12 19:48:58 -0700393alias(
394 name = "python_test_srcs",
395 actual = "//python:python_test_srcs",
Adam Cozzette501ecec2023-09-26 14:36:20 -0700396 visibility = ["//python:__subpackages__"],
David L. Jonesb3cbea12022-05-12 19:48:58 -0700397)
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800398
David L. Jonesb3cbea12022-05-12 19:48:58 -0700399alias(
400 name = "well_known_types_py_pb2",
401 actual = "//python:well_known_types_py_pb2",
Adam Cozzette41762562022-07-21 23:38:04 +0000402 visibility = ["//visibility:public"],
David L. Jonesb3cbea12022-05-12 19:48:58 -0700403)
David Z. Chen02cd45c2016-05-20 16:49:04 -0700404
David L. Jonesb3cbea12022-05-12 19:48:58 -0700405alias(
Jisi Liu993fb702015-10-19 17:19:49 -0700406 name = "python_common_test_protos",
David L. Jonesb3cbea12022-05-12 19:48:58 -0700407 actual = "//python:python_common_test_protos",
Joshua Habermana6901f02022-04-25 22:00:57 +0000408 visibility = ["//visibility:public"],
Jisi Liu993fb702015-10-19 17:19:49 -0700409)
410
David L. Jonesb3cbea12022-05-12 19:48:58 -0700411alias(
Jisi Liu993fb702015-10-19 17:19:49 -0700412 name = "python_specific_test_protos",
David L. Jonesb3cbea12022-05-12 19:48:58 -0700413 actual = "//python:python_specific_test_protos",
Joshua Habermana6901f02022-04-25 22:00:57 +0000414 visibility = ["//visibility:public"],
Thomas Colthurst7c651422018-05-29 18:26:11 -0400415)
416
cgrushko45d92ae2016-12-02 19:40:50 -0500417proto_lang_toolchain(
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800418 name = "cc_toolchain",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700419 blacklisted_protos = [
Protobuf Team Bot64ae02c2022-12-20 10:02:34 -0800420 "//:compiler_plugin_proto",
421 "//:descriptor_proto",
David L. Jones5ebde5b2022-05-05 13:29:47 -0700422 ],
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800423 command_line = "--cpp_out=$(OUT)",
Adam Cozzettea7b04212024-01-03 15:17:41 -0800424 runtime = "//src/google/protobuf",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800425 visibility = ["//visibility:public"],
cgrushko45d92ae2016-12-02 19:40:50 -0500426)
cgrushkoe4baf3f2017-01-12 12:51:04 -0500427
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700428################################################################################
429# Objective-C support
430################################################################################
431
Thomas Van Lenten18aa2962018-11-01 09:37:14 -0400432alias(
433 name = "objectivec",
Yannic Bonenberger8b93b8e2020-07-08 17:21:38 +0200434 actual = "//objectivec",
David L. Jones67823fe2022-05-04 17:30:23 -0700435 tags = ["manual"],
Thomas Van Lenten18aa2962018-11-01 09:37:14 -0400436 visibility = ["//visibility:public"],
437)
makdharma286f0592017-05-01 09:49:26 -0700438
Yannic Bonenberger8b93b8e2020-07-08 17:21:38 +0200439alias(
Thomas Van Lenten18aa2962018-11-01 09:37:14 -0400440 name = "protobuf_objc",
Yannic Bonenberger8b93b8e2020-07-08 17:21:38 +0200441 actual = "//objectivec",
David L. Jones67823fe2022-05-04 17:30:23 -0700442 tags = ["manual"],
makdharma286f0592017-05-01 09:49:26 -0700443 visibility = ["//visibility:public"],
444)
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700445
446################################################################################
David L. Jones171a6b12022-05-18 13:45:22 -0700447# Test protos
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700448################################################################################
449
David L. Jones171a6b12022-05-18 13:45:22 -0700450alias(
Mike Kruskal81e35132022-09-19 11:08:21 -0700451 name = "lite_test_proto_srcs",
452 actual = "//src/google/protobuf:lite_test_proto_srcs", # proto_library
453 visibility = ["//:__subpackages__"],
454)
455
456alias(
David L. Jones171a6b12022-05-18 13:45:22 -0700457 name = "lite_test_protos",
458 actual = "//src/google/protobuf:lite_test_protos", # proto_library
459 visibility = ["//:__subpackages__"],
460)
461
462alias(
463 name = "test_proto_srcs",
464 actual = "//src/google/protobuf:test_proto_srcs", # filegroup
465 visibility = ["//:__subpackages__"],
466)
467
468alias(
Sandy Zhang65c65c22024-01-22 09:54:16 -0800469 name = "test_proto_editions_srcs",
470 actual = "//src/google/protobuf:test_proto_editions_srcs", # filegroup
471 visibility = ["//:__subpackages__"],
472)
473
474alias(
David L. Jones171a6b12022-05-18 13:45:22 -0700475 name = "test_protos",
476 actual = "//src/google/protobuf:test_protos", # proto_library
477 visibility = ["//:__subpackages__"],
478)
479
480# Validate generated proto source inputs:
481
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700482genrule(
483 name = "generated_protos",
David L. Jones171a6b12022-05-18 13:45:22 -0700484 testonly = 1,
485 srcs = ["//src/google/protobuf:test_proto_srcs"],
David L. Jones67823fe2022-05-04 17:30:23 -0700486 outs = ["unittest_gen_import.proto"],
David L. Jones171a6b12022-05-18 13:45:22 -0700487 cmd = "cat src/google/protobuf/unittest_import.proto > $@",
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700488)
489
490proto_library(
491 name = "generated_protos_proto",
David L. Jones171a6b12022-05-18 13:45:22 -0700492 testonly = 1,
David L. Jonesb3cbea12022-05-12 19:48:58 -0700493 srcs = [":generated_protos"],
David L. Jones171a6b12022-05-18 13:45:22 -0700494 deps = ["//src/google/protobuf:generic_test_protos"],
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700495)
496
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700497internal_py_proto_library(
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700498 name = "generated_protos_py",
David L. Jones171a6b12022-05-18 13:45:22 -0700499 testonly = 1,
David L. Jonesb3cbea12022-05-12 19:48:58 -0700500 srcs = [":generated_protos"],
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700501 default_runtime = "",
502 protoc = ":protoc",
David L. Jonesb3cbea12022-05-12 19:48:58 -0700503 deps = ["//python:python_common_test_protos"],
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -0700504)
Josh Haberman6dec8cf2018-11-03 12:59:45 -0700505
506################################################################################
507# Conformance tests
508################################################################################
509
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700510cc_proto_library(
511 name = "test_messages_proto2_cc_proto",
512 visibility = [
513 "//conformance:__pkg__",
514 "//src:__subpackages__",
515 ],
516 deps = ["//src/google/protobuf:test_messages_proto2_proto"],
David L. Jones637a6992022-05-06 13:30:48 -0700517)
518
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700519cc_proto_library(
520 name = "test_messages_proto3_cc_proto",
521 visibility = [
522 "//conformance:__pkg__",
523 "//src:__subpackages__",
524 ],
525 deps = ["//src/google/protobuf:test_messages_proto3_proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -0700526)
527
Deanna Garciaab4585a2022-02-01 18:24:53 +0000528java_proto_library(
Derek Perezbc45f922021-04-20 11:36:32 -0700529 name = "test_messages_proto2_java_proto",
530 visibility = [
David L. Jones637a6992022-05-06 13:30:48 -0700531 "//conformance:__pkg__",
Derek Perezbc45f922021-04-20 11:36:32 -0700532 "//java:__subpackages__",
533 ],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700534 deps = ["//src/google/protobuf:test_messages_proto2_proto"],
Derek Perezbc45f922021-04-20 11:36:32 -0700535)
536
537java_proto_library(
538 name = "test_messages_proto3_java_proto",
539 visibility = [
David L. Jones637a6992022-05-06 13:30:48 -0700540 "//conformance:__pkg__",
Derek Perezbc45f922021-04-20 11:36:32 -0700541 "//java:__subpackages__",
Tamir Duberstein7e97fd42021-08-04 08:03:24 -0400542 ],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700543 deps = ["//src/google/protobuf:test_messages_proto3_proto"],
Derek Perezbc45f922021-04-20 11:36:32 -0700544)
545
Derek Perezbc45f922021-04-20 11:36:32 -0700546java_lite_proto_library(
547 name = "test_messages_proto2_java_proto_lite",
548 visibility = [
David L. Jones637a6992022-05-06 13:30:48 -0700549 "//conformance:__pkg__",
Derek Perezbc45f922021-04-20 11:36:32 -0700550 "//java:__subpackages__",
551 ],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700552 deps = ["//src/google/protobuf:test_messages_proto2_proto"],
Derek Perezbc45f922021-04-20 11:36:32 -0700553)
554
555java_lite_proto_library(
Derek Perezbc45f922021-04-20 11:36:32 -0700556 name = "test_messages_proto3_java_proto_lite",
557 visibility = [
David L. Jones637a6992022-05-06 13:30:48 -0700558 "//conformance:__pkg__",
Derek Perezbc45f922021-04-20 11:36:32 -0700559 "//java:__subpackages__",
560 ],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700561 deps = ["//src/google/protobuf:test_messages_proto3_proto"],
562)
563
564internal_objc_proto_library(
565 name = "test_messages_proto2_objc_proto",
Mike Kruskalca4b0632022-08-11 20:55:01 -0700566 testonly = 1,
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700567 srcs = ["//src/google/protobuf:test_messages_proto2.proto"],
568 includes = ["src/google/protobuf"],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700569 visibility = [
570 "//conformance:__pkg__",
571 "//objectivec:__subpackages__",
572 ],
573)
574
575internal_objc_proto_library(
576 name = "test_messages_proto3_objc_proto",
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700577 testonly = 1,
Mike Kruskalca4b0632022-08-11 20:55:01 -0700578 srcs = ["//src/google/protobuf:test_messages_proto3.proto"],
579 includes = [
Mike Kruskalca4b0632022-08-11 20:55:01 -0700580 "src/google/protobuf",
Mike Kruskalba6d1732022-08-12 10:44:59 -0700581 # The above must come first.
582 "src",
Mike Kruskalca4b0632022-08-11 20:55:01 -0700583 ],
584 proto_deps = [":well_known_protos"],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700585 visibility = [
586 "//conformance:__pkg__",
587 "//objectivec:__subpackages__",
588 ],
589)
590
591internal_php_proto_library(
592 name = "test_messages_proto3_php_proto",
Mike Kruskalca4b0632022-08-11 20:55:01 -0700593 testonly = 1,
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700594 srcs = ["//src/google/protobuf:test_messages_proto3.proto"],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700595 outs = [
Mike Kruskalca4b0632022-08-11 20:55:01 -0700596 "GPBMetadata/TestMessagesProto3.php",
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700597 "Protobuf_test_messages/Proto3/EnumOnlyProto3.php",
598 "Protobuf_test_messages/Proto3/EnumOnlyProto3/PBBool.php",
599 "Protobuf_test_messages/Proto3/ForeignEnum.php",
600 "Protobuf_test_messages/Proto3/ForeignMessage.php",
601 "Protobuf_test_messages/Proto3/NullHypothesisProto3.php",
602 "Protobuf_test_messages/Proto3/TestAllTypesProto3.php",
603 "Protobuf_test_messages/Proto3/TestAllTypesProto3/AliasedEnum.php",
604 "Protobuf_test_messages/Proto3/TestAllTypesProto3/NestedEnum.php",
605 "Protobuf_test_messages/Proto3/TestAllTypesProto3/NestedMessage.php",
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700606 ],
Mike Kruskalca4b0632022-08-11 20:55:01 -0700607 includes = [
Mike Kruskalca4b0632022-08-11 20:55:01 -0700608 "src/google/protobuf",
Mike Kruskalba6d1732022-08-12 10:44:59 -0700609 # The above must come first.
610 "src",
Mike Kruskalca4b0632022-08-11 20:55:01 -0700611 ],
612 proto_deps = [":well_known_protos"],
Mike Kruskaled5c57a2022-08-10 22:51:29 -0700613 visibility = [
614 "//conformance:__pkg__",
615 "//php:__subpackages__",
616 ],
617)
618
UebelAndreae26a812021-08-06 08:08:32 -0700619filegroup(
620 name = "bzl_srcs",
621 srcs = glob(["**/*.bzl"]),
622 visibility = ["//visibility:public"],
623)
Deanna Garciaab4585a2022-02-01 18:24:53 +0000624
David L. Jonesd76f8c82022-04-22 16:58:16 -0700625################################################################################
626# Packaging rules
627################################################################################
628
629# Files included in all source distributions
630pkg_files(
631 name = "common_dist_files",
David L. Jones67823fe2022-05-04 17:30:23 -0700632 srcs = glob(
633 [
634 "*.bzl",
635 "cmake/*.cmake",
636 "cmake/*.in",
637 "editors/*",
David L. Jones67823fe2022-05-04 17:30:23 -0700638 ],
639 allow_empty = True,
640 ) + [
David L. Jones95da0ba2022-04-29 17:57:55 -0700641 "BUILD.bazel",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700642 "CMakeLists.txt",
643 "CONTRIBUTORS.txt",
644 "LICENSE",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700645 "README.md",
646 "WORKSPACE",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700647 "cmake/README.md",
648 "generate_descriptor_proto.sh",
649 "maven_install.json",
David L. Jones354aba82022-05-09 16:32:59 -0700650 "//third_party:BUILD.bazel",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700651 "//third_party:zlib.BUILD",
David L. Jonesd76f8c82022-04-22 16:58:16 -0700652 ],
653 strip_prefix = strip_prefix.from_root(""),
654 visibility = ["//pkg:__pkg__"],
655)
656
David L. Jonesd76f8c82022-04-22 16:58:16 -0700657# Additional files for C#
658pkg_files(
659 name = "csharp_dist_files",
660 srcs = [
661 "global.json",
662 ],
663 visibility = ["//pkg:__pkg__"],
664)
665
666# Additional files for ObjC
667pkg_files(
668 name = "objectivec_dist_files",
669 srcs = [
670 "Protobuf.podspec",
671 ],
672 visibility = ["//pkg:__pkg__"],
673)