blob: dbae719ffe577cbf9fcacd6bc3025811bc16a7ea [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
Yannic Bonenberger92f2c892019-07-23 16:28:57 +02003load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test", "objc_library")
4load("@rules_java//java:defs.bzl", "java_library")
5load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library")
6
Jisi Liud19604f2015-06-17 17:37:58 -07007licenses(["notice"])
8
Piotr Sikorafaea19c2016-08-04 15:32:14 -07009exports_files(["LICENSE"])
10
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -070011################################################################################
David Ostrovsky85b488f2018-01-31 09:01:27 +010012# Java 9 configuration
13################################################################################
14
15config_setting(
16 name = "jdk9",
17 values = {
18 "java_toolchain": "@bazel_tools//tools/jdk:toolchain_jdk9",
19 },
20)
21
22################################################################################
Cody Schroeder802d5432018-12-11 11:58:26 -080023# ZLIB configuration
24################################################################################
25
Nic McDonaldf313b9c2019-04-12 15:41:08 -070026ZLIB_DEPS = ["@zlib//:zlib"]
Cody Schroeder802d5432018-12-11 11:58:26 -080027
28################################################################################
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -070029# Protobuf Runtime Library
30################################################################################
31
Pascal Muetscharda6957f22018-03-22 13:14:10 -070032MSVC_COPTS = [
Yun Peng0b059a32017-05-31 14:01:23 +020033 "/DHAVE_PTHREAD",
34 "/wd4018", # -Wno-sign-compare
Loo Rong Jie0456e262018-06-06 10:03:25 +080035 "/wd4065", # switch statement contains 'default' but no 'case' labels
36 "/wd4146", # unary minus operator applied to unsigned type, result still unsigned
37 "/wd4244", # 'conversion' conversion from 'type1' to 'type2', possible loss of data
38 "/wd4251", # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
39 "/wd4267", # 'var' : conversion from 'size_t' to 'type', possible loss of data
40 "/wd4305", # 'identifier' : truncation from 'type1' to 'type2'
41 "/wd4307", # 'operator' : integral constant overflow
42 "/wd4309", # 'conversion' : truncation of constant value
43 "/wd4334", # 'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
44 "/wd4355", # 'this' : used in base member initializer list
45 "/wd4506", # no definition for inline function 'function'
Yun Peng0b059a32017-05-31 14:01:23 +020046 "/wd4514", # -Wno-unused-function
Loo Rong Jie0456e262018-06-06 10:03:25 +080047 "/wd4800", # 'type' : forcing value to bool 'true' or 'false' (performance warning)
48 "/wd4996", # The compiler encountered a deprecated declaration.
Jisi Liud19604f2015-06-17 17:37:58 -070049]
50
Yun Peng0b059a32017-05-31 14:01:23 +020051COPTS = select({
Pascal Muetscharda6957f22018-03-22 13:14:10 -070052 ":msvc" : MSVC_COPTS,
Yun Peng0b059a32017-05-31 14:01:23 +020053 "//conditions:default": [
54 "-DHAVE_PTHREAD",
Cody Schroeder802d5432018-12-11 11:58:26 -080055 "-DHAVE_ZLIB",
Yun Peng0b059a32017-05-31 14:01:23 +020056 "-Woverloaded-virtual",
57 "-Wno-sign-compare",
58 "-Wno-unused-function",
Justine Tunneyac5371d2017-11-17 18:27:39 -080059 # Prevents ISO C++ const string assignment warnings for pyext sources.
depristo2506cf52018-06-28 22:54:43 +000060 "-Wno-write-strings",
Yun Peng0b059a32017-05-31 14:01:23 +020061 ],
62})
63
scentinib30ddee2018-08-28 14:07:55 +020064load(":compiler_config_setting.bzl", "create_compiler_config_setting")
65
66create_compiler_config_setting(name = "msvc", value = "msvc-cl")
Yun Peng0b059a32017-05-31 14:01:23 +020067
Andrew Harpb56b4612016-04-04 15:13:30 -040068config_setting(
69 name = "android",
70 values = {
71 "crosstool_top": "//external:android/crosstool",
72 },
73)
74
yejianwudf4ec8a2019-04-02 20:08:37 +080075config_setting(
76 name = "android-libcpp",
77 values = {
78 "crosstool_top": "@androidndk//:toolchain-libcpp",
79 },
80)
81
82config_setting(
83 name = "android-gnu-libstdcpp",
84 values = {
85 "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp",
86 },
87)
88
Pascal Muetscharda6957f22018-03-22 13:14:10 -070089# Android and MSVC builds do not need to link in a separate pthread library.
Andrew Harpb56b4612016-04-04 15:13:30 -040090LINK_OPTS = select({
Andrew Harp3b4e7dc2016-04-04 16:13:31 -040091 ":android": [],
yejianwudf4ec8a2019-04-02 20:08:37 +080092 ":android-libcpp": [],
93 ":android-gnu-libstdcpp": [],
Jan Tattermuschccc56a32018-05-24 09:51:53 -070094 ":msvc": [
Loo Rong Jie0456e262018-06-06 10:03:25 +080095 # Suppress linker warnings about files with no symbols defined.
96 "-ignore:4221",
Laszlo Csomor55171682017-12-01 12:05:32 +010097 ],
Daniel Ylitalo32fa55e2017-01-25 22:04:11 +010098 "//conditions:default": ["-lpthread", "-lm"],
Andrew Harpb56b4612016-04-04 15:13:30 -040099})
Jisi Liud19604f2015-06-17 17:37:58 -0700100
Jisi Liu04658a32015-10-20 15:00:13 -0700101load(
cgrushko65a4d202017-02-08 15:23:57 -0500102 ":protobuf.bzl",
Jisi Liu04658a32015-10-20 15:00:13 -0700103 "cc_proto_library",
104 "py_proto_library",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700105 "internal_copied_filegroup",
Steven Parkesea188662016-02-25 07:53:19 -0800106 "internal_gen_well_known_protos_java",
Jisi Liu04658a32015-10-20 15:00:13 -0700107 "internal_protobuf_py_tests",
108)
Jisi Liu39362b32015-10-14 17:12:11 -0700109
Jisi Liud19604f2015-06-17 17:37:58 -0700110cc_library(
111 name = "protobuf_lite",
112 srcs = [
113 # AUTOGEN(protobuf_lite_srcs)
Phillipp Schoppmann8e5b2f12019-03-14 10:35:05 +0000114 "src/google/protobuf/any_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700115 "src/google/protobuf/arena.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700116 "src/google/protobuf/extension_set.cc",
Hao Nguyen4cebf972019-05-03 15:08:01 -0700117 "src/google/protobuf/generated_enum_util.cc",
Jisi Liu12c186f2017-07-25 14:38:00 -0700118 "src/google/protobuf/generated_message_table_driven_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700119 "src/google/protobuf/generated_message_util.cc",
Adam Cozzette609d7522017-12-07 14:16:50 -0800120 "src/google/protobuf/implicit_weak_message.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700121 "src/google/protobuf/io/coded_stream.cc",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700122 "src/google/protobuf/io/io_win32.cc",
John W. Bruce21e4b1c2019-06-05 18:28:16 -0700123 "src/google/protobuf/io/strtod.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700124 "src/google/protobuf/io/zero_copy_stream.cc",
Hao Nguyen4cebf972019-05-03 15:08:01 -0700125 "src/google/protobuf/io/zero_copy_stream_impl.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700126 "src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
127 "src/google/protobuf/message_lite.cc",
Phillipp Schoppmann8e5b2f12019-03-14 10:35:05 +0000128 "src/google/protobuf/parse_context.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700129 "src/google/protobuf/repeated_field.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700130 "src/google/protobuf/stubs/bytestream.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700131 "src/google/protobuf/stubs/common.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700132 "src/google/protobuf/stubs/int128.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700133 "src/google/protobuf/stubs/status.cc",
134 "src/google/protobuf/stubs/statusor.cc",
135 "src/google/protobuf/stubs/stringpiece.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700136 "src/google/protobuf/stubs/stringprintf.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700137 "src/google/protobuf/stubs/structurally_valid.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700138 "src/google/protobuf/stubs/strutil.cc",
139 "src/google/protobuf/stubs/time.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700140 "src/google/protobuf/wire_format_lite.cc",
141 ],
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700142 hdrs = glob(["src/google/protobuf/**/*.h", "src/google/protobuf/**/*.inc"]),
Param Reddy16792c62017-10-15 13:06:58 -0700143 copts = COPTS,
Jisi Liud19604f2015-06-17 17:37:58 -0700144 includes = ["src/"],
145 linkopts = LINK_OPTS,
146 visibility = ["//visibility:public"],
147)
148
Cody Schroeder802d5432018-12-11 11:58:26 -0800149PROTOBUF_DEPS = select({
150 ":msvc": [],
151 "//conditions:default": ZLIB_DEPS,
152})
153
Jisi Liud19604f2015-06-17 17:37:58 -0700154cc_library(
155 name = "protobuf",
156 srcs = [
157 # AUTOGEN(protobuf_srcs)
158 "src/google/protobuf/any.cc",
159 "src/google/protobuf/any.pb.cc",
160 "src/google/protobuf/api.pb.cc",
161 "src/google/protobuf/compiler/importer.cc",
162 "src/google/protobuf/compiler/parser.cc",
163 "src/google/protobuf/descriptor.cc",
164 "src/google/protobuf/descriptor.pb.cc",
165 "src/google/protobuf/descriptor_database.cc",
166 "src/google/protobuf/duration.pb.cc",
167 "src/google/protobuf/dynamic_message.cc",
168 "src/google/protobuf/empty.pb.cc",
169 "src/google/protobuf/extension_set_heavy.cc",
170 "src/google/protobuf/field_mask.pb.cc",
171 "src/google/protobuf/generated_message_reflection.cc",
Jisi Liu759245a2017-07-25 11:52:33 -0700172 "src/google/protobuf/generated_message_table_driven.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700173 "src/google/protobuf/io/gzip_stream.cc",
174 "src/google/protobuf/io/printer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700175 "src/google/protobuf/io/tokenizer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700176 "src/google/protobuf/map_field.cc",
177 "src/google/protobuf/message.cc",
178 "src/google/protobuf/reflection_ops.cc",
179 "src/google/protobuf/service.cc",
180 "src/google/protobuf/source_context.pb.cc",
181 "src/google/protobuf/struct.pb.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700182 "src/google/protobuf/stubs/mathlimits.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700183 "src/google/protobuf/stubs/substitute.cc",
184 "src/google/protobuf/text_format.cc",
185 "src/google/protobuf/timestamp.pb.cc",
186 "src/google/protobuf/type.pb.cc",
187 "src/google/protobuf/unknown_field_set.cc",
Bairen Yi312e2db2017-03-21 03:52:37 +0800188 "src/google/protobuf/util/delimited_message_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700189 "src/google/protobuf/util/field_comparator.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700190 "src/google/protobuf/util/field_mask_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700191 "src/google/protobuf/util/internal/datapiece.cc",
192 "src/google/protobuf/util/internal/default_value_objectwriter.cc",
193 "src/google/protobuf/util/internal/error_listener.cc",
194 "src/google/protobuf/util/internal/field_mask_utility.cc",
195 "src/google/protobuf/util/internal/json_escaping.cc",
196 "src/google/protobuf/util/internal/json_objectwriter.cc",
197 "src/google/protobuf/util/internal/json_stream_parser.cc",
198 "src/google/protobuf/util/internal/object_writer.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800199 "src/google/protobuf/util/internal/proto_writer.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700200 "src/google/protobuf/util/internal/protostream_objectsource.cc",
201 "src/google/protobuf/util/internal/protostream_objectwriter.cc",
202 "src/google/protobuf/util/internal/type_info.cc",
203 "src/google/protobuf/util/internal/type_info_test_helper.cc",
204 "src/google/protobuf/util/internal/utility.cc",
205 "src/google/protobuf/util/json_util.cc",
206 "src/google/protobuf/util/message_differencer.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700207 "src/google/protobuf/util/time_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700208 "src/google/protobuf/util/type_resolver_util.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700209 "src/google/protobuf/wire_format.cc",
210 "src/google/protobuf/wrappers.pb.cc",
211 ],
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700212 hdrs = glob(["src/**/*.h", "src/**/*.inc"]),
Param Reddy16792c62017-10-15 13:06:58 -0700213 copts = COPTS,
Jisi Liud19604f2015-06-17 17:37:58 -0700214 includes = ["src/"],
215 linkopts = LINK_OPTS,
216 visibility = ["//visibility:public"],
Cody Schroeder802d5432018-12-11 11:58:26 -0800217 deps = [":protobuf_lite"] + PROTOBUF_DEPS,
Jisi Liud19604f2015-06-17 17:37:58 -0700218)
219
Manjunath Kudlur6837b2d2017-03-02 18:02:05 -0800220# This provides just the header files for use in projects that need to build
221# shared libraries for dynamic loading. This target is available until Bazel
222# adds native support for such use cases.
223# TODO(keveman): Remove this target once the support gets added to Bazel.
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800224cc_library(
225 name = "protobuf_headers",
Yun Peng6e580402019-06-14 13:29:16 +0200226 hdrs = glob(["src/**/*.h", "src/**/*.inc"]),
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800227 includes = ["src/"],
228 visibility = ["//visibility:public"],
229)
230
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200231# Map of all well known protos.
232# name => (include path, imports)
233WELL_KNOWN_PROTO_MAP = {
234 "any" : ("google/protobuf/any.proto", []),
235 "api" : ("google/protobuf/api.proto", ["source_context", "type"]),
236 "compiler_plugin" : ("google/protobuf/compiler/plugin.proto", ["descriptor"]),
237 "descriptor" : ("google/protobuf/descriptor.proto", []),
238 "duration" : ("google/protobuf/duration.proto", []),
239 "empty" : ("google/protobuf/empty.proto", []),
240 "field_mask" : ("google/protobuf/field_mask.proto", []),
241 "source_context" : ("google/protobuf/source_context.proto", []),
242 "struct" : ("google/protobuf/struct.proto", []),
243 "timestamp" : ("google/protobuf/timestamp.proto", []),
244 "type" : ("google/protobuf/type.proto", ["any", "source_context"]),
245 "wrappers" : ("google/protobuf/wrappers.proto", []),
246}
247
248RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()]
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700249
Jisi Liu993fb702015-10-19 17:19:49 -0700250WELL_KNOWN_PROTOS = ["src/" + s for s in RELATIVE_WELL_KNOWN_PROTOS]
251
Steven Parkesd5a57322016-03-22 17:56:07 -0700252filegroup(
253 name = "well_known_protos",
254 srcs = WELL_KNOWN_PROTOS,
255 visibility = ["//visibility:public"],
256)
257
Jisi Liu39362b32015-10-14 17:12:11 -0700258cc_proto_library(
259 name = "cc_wkt_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700260 srcs = WELL_KNOWN_PROTOS,
Jisi Liu3101e732015-10-16 12:46:26 -0700261 include = "src",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800262 default_runtime = ":protobuf",
Jisi Liu993fb702015-10-19 17:19:49 -0700263 internal_bootstrap_hack = 1,
Jisi Liu04658a32015-10-20 15:00:13 -0700264 protoc = ":protoc",
Jisi Liu6a40bf82015-11-17 12:36:21 -0800265 visibility = ["//visibility:public"],
Jisi Liu39362b32015-10-14 17:12:11 -0700266)
267
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700268################################################################################
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200269# Well Known Types Proto Library Rules
270#
271# These proto_library rules can be used with one of the language specific proto
272# library rules i.e. java_proto_library:
273#
274# java_proto_library(
275# name = "any_java_proto",
276# deps = ["@com_google_protobuf//:any_proto],
277# )
278################################################################################
279
280internal_copied_filegroup(
281 name = "_internal_wkt_protos",
282 srcs = WELL_KNOWN_PROTOS,
283 dest = "",
284 strip_prefix = "src",
James O'Kane950f5e42018-03-08 22:30:44 -0800285 visibility = ["//visibility:private"],
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200286)
287
288[proto_library(
289 name = proto[0] + "_proto",
290 srcs = [proto[1][0]],
291 deps = [dep + "_proto" for dep in proto[1][1]],
292 visibility = ["//visibility:public"],
293 ) for proto in WELL_KNOWN_PROTO_MAP.items()]
294
295################################################################################
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700296# Protocol Buffers Compiler
297################################################################################
298
Jisi Liud19604f2015-06-17 17:37:58 -0700299cc_library(
300 name = "protoc_lib",
301 srcs = [
302 # AUTOGEN(protoc_lib_srcs)
303 "src/google/protobuf/compiler/code_generator.cc",
304 "src/google/protobuf/compiler/command_line_interface.cc",
305 "src/google/protobuf/compiler/cpp/cpp_enum.cc",
306 "src/google/protobuf/compiler/cpp/cpp_enum_field.cc",
307 "src/google/protobuf/compiler/cpp/cpp_extension.cc",
308 "src/google/protobuf/compiler/cpp/cpp_field.cc",
309 "src/google/protobuf/compiler/cpp/cpp_file.cc",
310 "src/google/protobuf/compiler/cpp/cpp_generator.cc",
311 "src/google/protobuf/compiler/cpp/cpp_helpers.cc",
312 "src/google/protobuf/compiler/cpp/cpp_map_field.cc",
313 "src/google/protobuf/compiler/cpp/cpp_message.cc",
314 "src/google/protobuf/compiler/cpp/cpp_message_field.cc",
Adam Cozzette13fd0452017-09-12 10:32:01 -0700315 "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700316 "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc",
317 "src/google/protobuf/compiler/cpp/cpp_service.cc",
318 "src/google/protobuf/compiler/cpp/cpp_string_field.cc",
Ming Zhao5cdd9362015-10-05 14:37:21 -0700319 "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700320 "src/google/protobuf/compiler/csharp/csharp_enum.cc",
321 "src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700322 "src/google/protobuf/compiler/csharp/csharp_field_base.cc",
323 "src/google/protobuf/compiler/csharp/csharp_generator.cc",
324 "src/google/protobuf/compiler/csharp/csharp_helpers.cc",
Jon Skeetb2ac8682015-07-15 13:17:42 +0100325 "src/google/protobuf/compiler/csharp/csharp_map_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700326 "src/google/protobuf/compiler/csharp/csharp_message.cc",
327 "src/google/protobuf/compiler/csharp/csharp_message_field.cc",
328 "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
Jon Skeeta6361a12015-11-19 13:05:17 +0000329 "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700330 "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
331 "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
332 "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
333 "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
Jon Skeetb2ac8682015-07-15 13:17:42 +0100334 "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700335 "src/google/protobuf/compiler/java/java_context.cc",
336 "src/google/protobuf/compiler/java/java_doc_comment.cc",
337 "src/google/protobuf/compiler/java/java_enum.cc",
338 "src/google/protobuf/compiler/java/java_enum_field.cc",
339 "src/google/protobuf/compiler/java/java_enum_field_lite.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700340 "src/google/protobuf/compiler/java/java_enum_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700341 "src/google/protobuf/compiler/java/java_extension.cc",
Jisi Liu1f4f3e22016-04-18 14:12:08 -0700342 "src/google/protobuf/compiler/java/java_extension_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700343 "src/google/protobuf/compiler/java/java_field.cc",
344 "src/google/protobuf/compiler/java/java_file.cc",
345 "src/google/protobuf/compiler/java/java_generator.cc",
346 "src/google/protobuf/compiler/java/java_generator_factory.cc",
347 "src/google/protobuf/compiler/java/java_helpers.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700348 "src/google/protobuf/compiler/java/java_map_field.cc",
349 "src/google/protobuf/compiler/java/java_map_field_lite.cc",
350 "src/google/protobuf/compiler/java/java_message.cc",
351 "src/google/protobuf/compiler/java/java_message_builder.cc",
352 "src/google/protobuf/compiler/java/java_message_builder_lite.cc",
353 "src/google/protobuf/compiler/java/java_message_field.cc",
354 "src/google/protobuf/compiler/java/java_message_field_lite.cc",
355 "src/google/protobuf/compiler/java/java_message_lite.cc",
356 "src/google/protobuf/compiler/java/java_name_resolver.cc",
357 "src/google/protobuf/compiler/java/java_primitive_field.cc",
358 "src/google/protobuf/compiler/java/java_primitive_field_lite.cc",
359 "src/google/protobuf/compiler/java/java_service.cc",
360 "src/google/protobuf/compiler/java/java_shared_code_generator.cc",
361 "src/google/protobuf/compiler/java/java_string_field.cc",
362 "src/google/protobuf/compiler/java/java_string_field_lite.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800363 "src/google/protobuf/compiler/js/js_generator.cc",
Jisi Liuf92b4552016-12-05 10:16:47 -0800364 "src/google/protobuf/compiler/js/well_known_types_embed.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700365 "src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
366 "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
367 "src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
368 "src/google/protobuf/compiler/objectivec/objectivec_field.cc",
369 "src/google/protobuf/compiler/objectivec/objectivec_file.cc",
370 "src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
371 "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
372 "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
373 "src/google/protobuf/compiler/objectivec/objectivec_message.cc",
374 "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
375 "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
376 "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
Jisi Liud9473082016-09-22 15:14:58 -0700377 "src/google/protobuf/compiler/php/php_generator.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700378 "src/google/protobuf/compiler/plugin.cc",
Feng Xiaofd595fc2018-03-01 16:36:05 -0800379 "src/google/protobuf/compiler/plugin.pb.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700380 "src/google/protobuf/compiler/python/python_generator.cc",
381 "src/google/protobuf/compiler/ruby/ruby_generator.cc",
382 "src/google/protobuf/compiler/subprocess.cc",
383 "src/google/protobuf/compiler/zip_writer.cc",
384 ],
385 copts = COPTS,
386 includes = ["src/"],
Loo Rong Jie0456e262018-06-06 10:03:25 +0800387 linkopts = LINK_OPTS + select({
388 ":msvc": [
389 # Linking to setargv.obj makes the default command line argument
390 # parser expand wildcards, so the main method's argv will contain the
391 # expanded list instead of the wildcards.
392 #
393 # Adding dummy "-DEFAULTLIB:kernel32.lib", because:
394 # - Microsoft ships this object file next to default libraries
395 # - but this file is not a library, just a precompiled object
396 # - "-WHOLEARCHIVE" and "-DEFAULTLIB" only accept library,
397 # not precompiled object.
398 # - Bazel would assume linkopt that does not start with "-" or "$"
399 # as a label to a target, so we add a harmless "-DEFAULTLIB:kernel32.lib"
400 # before "setargv.obj".
401 # See https://msdn.microsoft.com/en-us/library/8bch7bkk.aspx
402 "-DEFAULTLIB:kernel32.lib setargv.obj",
403 ],
404 "//conditions:default": [],
405 }),
Jisi Liud19604f2015-06-17 17:37:58 -0700406 visibility = ["//visibility:public"],
407 deps = [":protobuf"],
408)
409
410cc_binary(
411 name = "protoc",
412 srcs = ["src/google/protobuf/compiler/main.cc"],
Jisi Liud19604f2015-06-17 17:37:58 -0700413 linkopts = LINK_OPTS,
414 visibility = ["//visibility:public"],
415 deps = [":protoc_lib"],
416)
417
Jisi Liud19604f2015-06-17 17:37:58 -0700418################################################################################
419# Tests
420################################################################################
421
Jisi Liu993fb702015-10-19 17:19:49 -0700422RELATIVE_LITE_TEST_PROTOS = [
Jisi Liud19604f2015-06-17 17:37:58 -0700423 # AUTOGEN(lite_test_protos)
424 "google/protobuf/map_lite_unittest.proto",
425 "google/protobuf/unittest_import_lite.proto",
426 "google/protobuf/unittest_import_public_lite.proto",
427 "google/protobuf/unittest_lite.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700428 "google/protobuf/unittest_no_arena_lite.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700429]
430
Jisi Liu993fb702015-10-19 17:19:49 -0700431LITE_TEST_PROTOS = ["src/" + s for s in RELATIVE_LITE_TEST_PROTOS]
432
433RELATIVE_TEST_PROTOS = [
Jisi Liud19604f2015-06-17 17:37:58 -0700434 # AUTOGEN(test_protos)
435 "google/protobuf/any_test.proto",
436 "google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto",
437 "google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto",
438 "google/protobuf/map_proto2_unittest.proto",
439 "google/protobuf/map_unittest.proto",
440 "google/protobuf/unittest.proto",
441 "google/protobuf/unittest_arena.proto",
442 "google/protobuf/unittest_custom_options.proto",
443 "google/protobuf/unittest_drop_unknown_fields.proto",
444 "google/protobuf/unittest_embed_optimize_for.proto",
445 "google/protobuf/unittest_empty.proto",
446 "google/protobuf/unittest_enormous_descriptor.proto",
447 "google/protobuf/unittest_import.proto",
448 "google/protobuf/unittest_import_public.proto",
Feng Xiao32d78302017-03-29 14:01:40 -0700449 "google/protobuf/unittest_lazy_dependencies.proto",
450 "google/protobuf/unittest_lazy_dependencies_custom_option.proto",
451 "google/protobuf/unittest_lazy_dependencies_enum.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700452 "google/protobuf/unittest_lite_imports_nonlite.proto",
453 "google/protobuf/unittest_mset.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700454 "google/protobuf/unittest_mset_wire_format.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700455 "google/protobuf/unittest_no_arena.proto",
456 "google/protobuf/unittest_no_arena_import.proto",
457 "google/protobuf/unittest_no_field_presence.proto",
458 "google/protobuf/unittest_no_generic_services.proto",
459 "google/protobuf/unittest_optimize_for.proto",
460 "google/protobuf/unittest_preserve_unknown_enum.proto",
461 "google/protobuf/unittest_preserve_unknown_enum2.proto",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700462 "google/protobuf/unittest_proto3.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700463 "google/protobuf/unittest_proto3_arena.proto",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700464 "google/protobuf/unittest_proto3_arena_lite.proto",
465 "google/protobuf/unittest_proto3_lite.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700466 "google/protobuf/unittest_well_known_types.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700467 "google/protobuf/util/internal/testdata/anys.proto",
468 "google/protobuf/util/internal/testdata/books.proto",
469 "google/protobuf/util/internal/testdata/default_value.proto",
470 "google/protobuf/util/internal/testdata/default_value_test.proto",
471 "google/protobuf/util/internal/testdata/field_mask.proto",
472 "google/protobuf/util/internal/testdata/maps.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700473 "google/protobuf/util/internal/testdata/oneofs.proto",
Jisi Liu9d4657a2016-09-22 15:11:17 -0700474 "google/protobuf/util/internal/testdata/proto3.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700475 "google/protobuf/util/internal/testdata/struct.proto",
476 "google/protobuf/util/internal/testdata/timestamp_duration.proto",
Jisi Liu9d4657a2016-09-22 15:11:17 -0700477 "google/protobuf/util/internal/testdata/wrappers.proto",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700478 "google/protobuf/util/json_format.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700479 "google/protobuf/util/json_format_proto3.proto",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800480 "google/protobuf/util/message_differencer_unittest.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700481]
482
Jisi Liu993fb702015-10-19 17:19:49 -0700483TEST_PROTOS = ["src/" + s for s in RELATIVE_TEST_PROTOS]
484
Jisi Liu39362b32015-10-14 17:12:11 -0700485cc_proto_library(
486 name = "cc_test_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700487 srcs = LITE_TEST_PROTOS + TEST_PROTOS,
Jisi Liu3101e732015-10-16 12:46:26 -0700488 include = "src",
Jisi Liube92ffb2015-10-27 15:11:38 -0700489 default_runtime = ":protobuf",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800490 protoc = ":protoc",
Jisi Liud8701b52015-10-16 11:44:21 -0700491 deps = [":cc_wkt_protos"],
Jisi Liud19604f2015-06-17 17:37:58 -0700492)
493
494COMMON_TEST_SRCS = [
495 # AUTOGEN(common_test_srcs)
496 "src/google/protobuf/arena_test_util.cc",
497 "src/google/protobuf/map_test_util.cc",
498 "src/google/protobuf/test_util.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700499 "src/google/protobuf/test_util.inc",
Jisi Liud19604f2015-06-17 17:37:58 -0700500 "src/google/protobuf/testing/file.cc",
501 "src/google/protobuf/testing/googletest.cc",
502]
503
Jisi Liu7a0c4312015-06-18 16:45:27 -0700504cc_binary(
505 name = "test_plugin",
506 srcs = [
507 # AUTOGEN(test_plugin_srcs)
508 "src/google/protobuf/compiler/mock_code_generator.cc",
509 "src/google/protobuf/compiler/test_plugin.cc",
510 "src/google/protobuf/testing/file.cc",
511 ],
512 deps = [
513 ":protobuf",
514 ":protoc_lib",
515 "//external:gtest",
516 ],
517)
518
519cc_test(
Jisi Liu759245a2017-07-25 11:52:33 -0700520 name = "win32_test",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700521 srcs = ["src/google/protobuf/io/io_win32_unittest.cc"],
Jisi Liu759245a2017-07-25 11:52:33 -0700522 deps = [
523 ":protobuf_lite",
524 "//external:gtest_main",
525 ],
526 tags = ["manual", "windows"],
527)
528
529cc_test(
Jisi Liu7a0c4312015-06-18 16:45:27 -0700530 name = "protobuf_test",
Jisi Liu39362b32015-10-14 17:12:11 -0700531 srcs = COMMON_TEST_SRCS + [
Jisi Liu7a0c4312015-06-18 16:45:27 -0700532 # AUTOGEN(test_srcs)
533 "src/google/protobuf/any_test.cc",
534 "src/google/protobuf/arena_unittest.cc",
535 "src/google/protobuf/arenastring_unittest.cc",
Jisi Liu1c682e02017-10-18 14:31:23 -0700536 "src/google/protobuf/compiler/annotation_test_util.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700537 "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc",
Jisi Liu11b66612017-07-19 12:10:43 -0700538 "src/google/protobuf/compiler/cpp/cpp_move_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700539 "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc",
540 "src/google/protobuf/compiler/cpp/cpp_unittest.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700541 "src/google/protobuf/compiler/cpp/cpp_unittest.inc",
Jisi Liu1f4f3e22016-04-18 14:12:08 -0700542 "src/google/protobuf/compiler/cpp/metadata_test.cc",
Feng Xiao32d78302017-03-29 14:01:40 -0700543 "src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700544 "src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc",
545 "src/google/protobuf/compiler/importer_unittest.cc",
546 "src/google/protobuf/compiler/java/java_doc_comment_unittest.cc",
547 "src/google/protobuf/compiler/java/java_plugin_unittest.cc",
548 "src/google/protobuf/compiler/mock_code_generator.cc",
549 "src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc",
550 "src/google/protobuf/compiler/parser_unittest.cc",
551 "src/google/protobuf/compiler/python/python_plugin_unittest.cc",
552 "src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc",
553 "src/google/protobuf/descriptor_database_unittest.cc",
554 "src/google/protobuf/descriptor_unittest.cc",
555 "src/google/protobuf/drop_unknown_fields_test.cc",
556 "src/google/protobuf/dynamic_message_unittest.cc",
557 "src/google/protobuf/extension_set_unittest.cc",
558 "src/google/protobuf/generated_message_reflection_unittest.cc",
559 "src/google/protobuf/io/coded_stream_unittest.cc",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700560 "src/google/protobuf/io/io_win32_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700561 "src/google/protobuf/io/printer_unittest.cc",
562 "src/google/protobuf/io/tokenizer_unittest.cc",
563 "src/google/protobuf/io/zero_copy_stream_unittest.cc",
564 "src/google/protobuf/map_field_test.cc",
565 "src/google/protobuf/map_test.cc",
566 "src/google/protobuf/message_unittest.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700567 "src/google/protobuf/message_unittest.inc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700568 "src/google/protobuf/no_field_presence_test.cc",
569 "src/google/protobuf/preserve_unknown_enum_test.cc",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700570 "src/google/protobuf/proto3_arena_lite_unittest.cc",
Jisi Liuf86d39c2016-04-28 14:43:22 -0700571 "src/google/protobuf/proto3_arena_unittest.cc",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700572 "src/google/protobuf/proto3_lite_unittest.cc",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700573 "src/google/protobuf/proto3_lite_unittest.inc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700574 "src/google/protobuf/reflection_ops_unittest.cc",
575 "src/google/protobuf/repeated_field_reflection_unittest.cc",
576 "src/google/protobuf/repeated_field_unittest.cc",
577 "src/google/protobuf/stubs/bytestream_unittest.cc",
578 "src/google/protobuf/stubs/common_unittest.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700579 "src/google/protobuf/stubs/int128_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700580 "src/google/protobuf/stubs/status_test.cc",
581 "src/google/protobuf/stubs/statusor_test.cc",
582 "src/google/protobuf/stubs/stringpiece_unittest.cc",
583 "src/google/protobuf/stubs/stringprintf_unittest.cc",
584 "src/google/protobuf/stubs/structurally_valid_unittest.cc",
585 "src/google/protobuf/stubs/strutil_unittest.cc",
586 "src/google/protobuf/stubs/template_util_unittest.cc",
587 "src/google/protobuf/stubs/time_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700588 "src/google/protobuf/text_format_unittest.cc",
589 "src/google/protobuf/unknown_field_set_unittest.cc",
Byron Yicb3e84b2017-03-16 20:01:22 +0800590 "src/google/protobuf/util/delimited_message_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700591 "src/google/protobuf/util/field_comparator_test.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700592 "src/google/protobuf/util/field_mask_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700593 "src/google/protobuf/util/internal/default_value_objectwriter_test.cc",
594 "src/google/protobuf/util/internal/json_objectwriter_test.cc",
595 "src/google/protobuf/util/internal/json_stream_parser_test.cc",
596 "src/google/protobuf/util/internal/protostream_objectsource_test.cc",
597 "src/google/protobuf/util/internal/protostream_objectwriter_test.cc",
598 "src/google/protobuf/util/internal/type_info_test_helper.cc",
599 "src/google/protobuf/util/json_util_test.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800600 "src/google/protobuf/util/message_differencer_unittest.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700601 "src/google/protobuf/util/time_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700602 "src/google/protobuf/util/type_resolver_util_test.cc",
603 "src/google/protobuf/well_known_types_unittest.cc",
604 "src/google/protobuf/wire_format_unittest.cc",
Yun Peng073487b2018-12-14 12:53:36 +0100605 ] + select({
606 "//conditions:default" : [
607 # Doesn't pass on Windows with MSVC
608 "src/google/protobuf/compiler/command_line_interface_unittest.cc",
609 ],
610 ":msvc": []
611 }),
Jisi Liu7a0c4312015-06-18 16:45:27 -0700612 copts = COPTS,
613 data = [
614 ":test_plugin",
Jisi Liu598480d2015-10-21 11:19:16 -0700615 ] + glob([
616 "src/google/protobuf/**/*",
Feng Xiaoacde1652017-03-29 15:14:18 -0700617 # Files for csharp_bootstrap_unittest.cc.
618 "conformance/**/*",
619 "csharp/src/**/*",
Jisi Liu598480d2015-10-21 11:19:16 -0700620 ]),
Jisi Liu7a0c4312015-06-18 16:45:27 -0700621 includes = [
622 "src/",
623 ],
624 linkopts = LINK_OPTS,
625 deps = [
Jisi Liu993fb702015-10-19 17:19:49 -0700626 ":cc_test_protos",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700627 ":protobuf",
628 ":protoc_lib",
629 "//external:gtest_main",
Cody Schroeder802d5432018-12-11 11:58:26 -0800630 ] + PROTOBUF_DEPS,
Jisi Liu7a0c4312015-06-18 16:45:27 -0700631)
Jisi Liu993fb702015-10-19 17:19:49 -0700632
633################################################################################
634# Java support
635################################################################################
Steven Parkesea188662016-02-25 07:53:19 -0800636internal_gen_well_known_protos_java(
Ming Zhao4fe03812016-01-21 23:03:28 -0800637 srcs = WELL_KNOWN_PROTOS,
Jisi Liu993fb702015-10-19 17:19:49 -0700638)
639
640java_library(
Jisi Liu166e9bb2015-10-21 10:56:38 -0700641 name = "protobuf_java",
Jisi Liu993fb702015-10-19 17:19:49 -0700642 srcs = glob([
Ming Zhao4fe03812016-01-21 23:03:28 -0800643 "java/core/src/main/java/com/google/protobuf/*.java",
Jisi Liu993fb702015-10-19 17:19:49 -0700644 ]) + [
Ming Zhao4fe03812016-01-21 23:03:28 -0800645 ":gen_well_known_protos_java",
Jisi Liu993fb702015-10-19 17:19:49 -0700646 ],
David Ostrovsky85b488f2018-01-31 09:01:27 +0100647 javacopts = select({
648 "//:jdk9": ["--add-modules=jdk.unsupported"],
649 "//conditions:default": ["-source 7", "-target 7"],
650 }),
Jisi Liu993fb702015-10-19 17:19:49 -0700651 visibility = ["//visibility:public"],
652)
653
Steven Parkesa9244ca2016-03-10 17:50:25 -0800654java_library(
Carmi Grushko5c25f412019-05-24 17:26:07 +0300655 name = "protobuf_javalite",
656 srcs = [
657 # Keep in sync with java/lite/pom.xml
658 "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java",
659 "java/core/src/main/java/com/google/protobuf/AbstractParser.java",
660 "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java",
661 "java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java",
662 "java/core/src/main/java/com/google/protobuf/Android.java",
663 "java/core/src/main/java/com/google/protobuf/ArrayDecoders.java",
664 "java/core/src/main/java/com/google/protobuf/BinaryReader.java",
665 "java/core/src/main/java/com/google/protobuf/BinaryWriter.java",
666 "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java",
667 "java/core/src/main/java/com/google/protobuf/BufferAllocator.java",
668 "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java",
669 "java/core/src/main/java/com/google/protobuf/ByteOutput.java",
670 "java/core/src/main/java/com/google/protobuf/ByteString.java",
671 "java/core/src/main/java/com/google/protobuf/CodedInputStream.java",
672 "java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java",
673 "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java",
674 "java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java",
675 "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java",
676 "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java",
677 "java/core/src/main/java/com/google/protobuf/ExtensionLite.java",
678 "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java",
679 "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java",
680 "java/core/src/main/java/com/google/protobuf/ExtensionSchema.java",
681 "java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java",
682 "java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java",
683 "java/core/src/main/java/com/google/protobuf/FieldInfo.java",
684 "java/core/src/main/java/com/google/protobuf/FieldSet.java",
685 "java/core/src/main/java/com/google/protobuf/FieldType.java",
686 "java/core/src/main/java/com/google/protobuf/FloatArrayList.java",
687 "java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java",
688 "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java",
689 "java/core/src/main/java/com/google/protobuf/IntArrayList.java",
690 "java/core/src/main/java/com/google/protobuf/Internal.java",
691 "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java",
692 "java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java",
693 "java/core/src/main/java/com/google/protobuf/JavaType.java",
694 "java/core/src/main/java/com/google/protobuf/LazyField.java",
695 "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java",
696 "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java",
697 "java/core/src/main/java/com/google/protobuf/LazyStringList.java",
698 "java/core/src/main/java/com/google/protobuf/ListFieldSchema.java",
699 "java/core/src/main/java/com/google/protobuf/LongArrayList.java",
700 "java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java",
701 "java/core/src/main/java/com/google/protobuf/MapEntryLite.java",
702 "java/core/src/main/java/com/google/protobuf/MapFieldLite.java",
703 "java/core/src/main/java/com/google/protobuf/MapFieldSchema.java",
704 "java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java",
705 "java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java",
706 "java/core/src/main/java/com/google/protobuf/MessageInfo.java",
707 "java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java",
708 "java/core/src/main/java/com/google/protobuf/MessageLite.java",
709 "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java",
710 "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java",
711 "java/core/src/main/java/com/google/protobuf/MessageSchema.java",
712 "java/core/src/main/java/com/google/protobuf/MessageSetSchema.java",
713 "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java",
714 "java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java",
715 "java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java",
716 "java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java",
717 "java/core/src/main/java/com/google/protobuf/NioByteString.java",
718 "java/core/src/main/java/com/google/protobuf/OneofInfo.java",
719 "java/core/src/main/java/com/google/protobuf/Parser.java",
720 "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java",
721 "java/core/src/main/java/com/google/protobuf/ProtoSyntax.java",
722 "java/core/src/main/java/com/google/protobuf/Protobuf.java",
723 "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java",
724 "java/core/src/main/java/com/google/protobuf/ProtobufLists.java",
725 "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java",
726 "java/core/src/main/java/com/google/protobuf/RawMessageInfo.java",
727 "java/core/src/main/java/com/google/protobuf/Reader.java",
728 "java/core/src/main/java/com/google/protobuf/RopeByteString.java",
729 "java/core/src/main/java/com/google/protobuf/Schema.java",
730 "java/core/src/main/java/com/google/protobuf/SchemaFactory.java",
731 "java/core/src/main/java/com/google/protobuf/SchemaUtil.java",
732 "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java",
733 "java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java",
734 "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java",
735 "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java",
736 "java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java",
737 "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java",
738 "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java",
739 "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java",
740 "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java",
741 "java/core/src/main/java/com/google/protobuf/Utf8.java",
742 "java/core/src/main/java/com/google/protobuf/WireFormat.java",
743 "java/core/src/main/java/com/google/protobuf/Writer.java",
744 ],
745 javacopts = select({
746 "//:jdk9": ["--add-modules=jdk.unsupported"],
747 "//conditions:default": [
748 "-source 7",
749 "-target 7",
750 ],
751 }),
752 visibility = ["//visibility:public"],
753)
754
755java_library(
Steven Parkesa9244ca2016-03-10 17:50:25 -0800756 name = "protobuf_java_util",
757 srcs = glob([
758 "java/util/src/main/java/com/google/protobuf/util/*.java",
759 ]),
David Ostrovsky019ceea2018-01-25 06:05:14 +0100760 javacopts = ["-source 7", "-target 7"],
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800761 visibility = ["//visibility:public"],
Steven Parkesa9244ca2016-03-10 17:50:25 -0800762 deps = [
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700763 "protobuf_java",
David Ostrovsky35c9a5f2019-03-03 21:57:33 +0100764 "//external:error_prone_annotations",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700765 "//external:gson",
766 "//external:guava",
Steven Parkesa9244ca2016-03-10 17:50:25 -0800767 ],
Steven Parkesa9244ca2016-03-10 17:50:25 -0800768)
769
Jisi Liu993fb702015-10-19 17:19:49 -0700770################################################################################
771# Python support
772################################################################################
773
David Z. Chen985c9682016-02-11 18:11:10 -0800774py_library(
Jisi Liu993fb702015-10-19 17:19:49 -0700775 name = "python_srcs",
776 srcs = glob(
777 [
Calder Coalson142cbe02018-05-21 15:33:43 -0700778 "python/google/__init__.py",
Jisi Liu993fb702015-10-19 17:19:49 -0700779 "python/google/protobuf/*.py",
780 "python/google/protobuf/**/*.py",
781 ],
782 exclude = [
David Z. Chen02cd45c2016-05-20 16:49:04 -0700783 "python/google/protobuf/__init__.py",
784 "python/google/protobuf/**/__init__.py",
Jisi Liu993fb702015-10-19 17:19:49 -0700785 "python/google/protobuf/internal/*_test.py",
786 "python/google/protobuf/internal/test_util.py",
787 ],
788 ),
David Z. Chen985c9682016-02-11 18:11:10 -0800789 imports = ["python"],
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800790 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700791)
792
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800793cc_binary(
Richard Shindf5841f2016-10-18 13:16:44 -0700794 name = "python/google/protobuf/internal/_api_implementation.so",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800795 srcs = ["python/google/protobuf/internal/api_implementation.cc"],
796 copts = COPTS + [
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800797 "-DPYTHON_PROTO2_CPP_IMPL_V2",
798 ],
799 linkshared = 1,
800 linkstatic = 1,
Manjunath Kudlura1949212015-12-08 08:24:37 -0800801 deps = select({
802 "//conditions:default": [],
David Z. Chen985c9682016-02-11 18:11:10 -0800803 ":use_fast_cpp_protos": ["//external:python_headers"],
Manjunath Kudlura1949212015-12-08 08:24:37 -0800804 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800805)
806
807cc_binary(
Richard Shindf5841f2016-10-18 13:16:44 -0700808 name = "python/google/protobuf/pyext/_message.so",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800809 srcs = glob([
810 "python/google/protobuf/pyext/*.cc",
811 "python/google/protobuf/pyext/*.h",
812 ]),
813 copts = COPTS + [
814 "-DGOOGLE_PROTOBUF_HAS_ONEOF=1",
Manjunath Kudlur99a3e302016-02-16 15:17:10 -0800815 ] + select({
816 "//conditions:default": [],
817 ":allow_oversize_protos": ["-DPROTOBUF_PYTHON_ALLOW_OVERSIZE_PROTOS=1"],
818 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800819 includes = [
820 "python/",
821 "src/",
822 ],
823 linkshared = 1,
824 linkstatic = 1,
Manjunath Kudlura1949212015-12-08 08:24:37 -0800825 deps = [
826 ":protobuf",
Thomas Colthurst7c651422018-05-29 18:26:11 -0400827 ":proto_api",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800828 ] + select({
829 "//conditions:default": [],
David Z. Chen985c9682016-02-11 18:11:10 -0800830 ":use_fast_cpp_protos": ["//external:python_headers"],
Manjunath Kudlura1949212015-12-08 08:24:37 -0800831 }),
832)
833
834config_setting(
835 name = "use_fast_cpp_protos",
836 values = {
837 "define": "use_fast_cpp_protos=true",
838 },
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800839)
840
Manjunath Kudlur99a3e302016-02-16 15:17:10 -0800841config_setting(
842 name = "allow_oversize_protos",
843 values = {
844 "define": "allow_oversize_protos=true",
845 },
846)
847
David Z. Chen02cd45c2016-05-20 16:49:04 -0700848# Copy the builtin proto files from src/google/protobuf to
849# python/google/protobuf. This way, the generated Python sources will be in the
850# same directory as the Python runtime sources. This is necessary for the
851# modules to be imported correctly since they are all part of the same Python
852# package.
853internal_copied_filegroup(
854 name = "protos_python",
855 srcs = WELL_KNOWN_PROTOS,
David Z. Chen02cd45c2016-05-20 16:49:04 -0700856 dest = "python",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800857 strip_prefix = "src",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700858)
859
860# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in
861# which case we can simply add :protos_python in srcs.
862COPIED_WELL_KNOWN_PROTOS = ["python/" + s for s in RELATIVE_WELL_KNOWN_PROTOS]
863
Jisi Liu993fb702015-10-19 17:19:49 -0700864py_proto_library(
Jisi Liu166e9bb2015-10-21 10:56:38 -0700865 name = "protobuf_python",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700866 srcs = COPIED_WELL_KNOWN_PROTOS,
867 include = "python",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800868 data = select({
869 "//conditions:default": [],
870 ":use_fast_cpp_protos": [
Richard Shindf5841f2016-10-18 13:16:44 -0700871 ":python/google/protobuf/internal/_api_implementation.so",
872 ":python/google/protobuf/pyext/_message.so",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800873 ],
874 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800875 default_runtime = "",
Jisi Liu04658a32015-10-20 15:00:13 -0700876 protoc = ":protoc",
David Z. Chen985c9682016-02-11 18:11:10 -0800877 py_libs = [
878 ":python_srcs",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800879 "//external:six",
David Z. Chen985c9682016-02-11 18:11:10 -0800880 ],
Adam Michael6044b242017-03-10 18:06:34 -0500881 py_extra_srcs = glob(["python/**/__init__.py"]),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800882 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700883 visibility = ["//visibility:public"],
884)
885
David Z. Chen02cd45c2016-05-20 16:49:04 -0700886# Copy the test proto files from src/google/protobuf to
887# python/google/protobuf. This way, the generated Python sources will be in the
888# same directory as the Python runtime sources. This is necessary for the
889# modules to be imported correctly by the tests since they are all part of the
890# same Python package.
891internal_copied_filegroup(
892 name = "protos_python_test",
893 srcs = LITE_TEST_PROTOS + TEST_PROTOS,
David Z. Chen02cd45c2016-05-20 16:49:04 -0700894 dest = "python",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800895 strip_prefix = "src",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700896)
897
898# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in
899# which case we can simply add :protos_python_test in srcs.
900COPIED_LITE_TEST_PROTOS = ["python/" + s for s in RELATIVE_LITE_TEST_PROTOS]
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800901
David Z. Chen02cd45c2016-05-20 16:49:04 -0700902COPIED_TEST_PROTOS = ["python/" + s for s in RELATIVE_TEST_PROTOS]
903
Jisi Liu993fb702015-10-19 17:19:49 -0700904py_proto_library(
905 name = "python_common_test_protos",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700906 srcs = COPIED_LITE_TEST_PROTOS + COPIED_TEST_PROTOS,
907 include = "python",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800908 default_runtime = "",
Jisi Liu04658a32015-10-20 15:00:13 -0700909 protoc = ":protoc",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700910 srcs_version = "PY2AND3",
Jisi Liu166e9bb2015-10-21 10:56:38 -0700911 deps = [":protobuf_python"],
Jisi Liu993fb702015-10-19 17:19:49 -0700912)
913
914py_proto_library(
915 name = "python_specific_test_protos",
Jisi Liu68e13f42015-10-22 11:13:14 -0700916 srcs = glob([
917 "python/google/protobuf/internal/*.proto",
918 "python/google/protobuf/internal/import_test_package/*.proto",
919 ]),
Jisi Liu993fb702015-10-19 17:19:49 -0700920 include = "python",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800921 default_runtime = ":protobuf_python",
Jisi Liu04658a32015-10-20 15:00:13 -0700922 protoc = ":protoc",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700923 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700924 deps = [":python_common_test_protos"],
925)
926
927py_library(
928 name = "python_tests",
David Z. Chen985c9682016-02-11 18:11:10 -0800929 srcs = glob(
930 [
931 "python/google/protobuf/internal/*_test.py",
932 "python/google/protobuf/internal/test_util.py",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700933 "python/google/protobuf/internal/import_test_package/__init__.py",
David Z. Chen985c9682016-02-11 18:11:10 -0800934 ],
935 ),
936 imports = ["python"],
Geoffrey Irving29799232015-12-03 13:11:19 -0800937 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700938 deps = [
Jisi Liu166e9bb2015-10-21 10:56:38 -0700939 ":protobuf_python",
Jisi Liu598480d2015-10-21 11:19:16 -0700940 ":python_common_test_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700941 ":python_specific_test_protos",
942 ],
943)
944
945internal_protobuf_py_tests(
Jisi Liu8f540262015-10-20 16:21:41 -0700946 name = "python_tests_batch",
Jisi Liu68e13f42015-10-22 11:13:14 -0700947 data = glob([
948 "src/google/protobuf/**/*",
949 ]),
Jisi Liu993fb702015-10-19 17:19:49 -0700950 modules = [
951 "descriptor_database_test",
952 "descriptor_pool_test",
953 "descriptor_test",
954 "generator_test",
955 "json_format_test",
956 "message_factory_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700957 "message_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700958 "proto_builder_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700959 "reflection_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700960 "service_reflection_test",
961 "symbol_database_test",
962 "text_encoding_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700963 "text_format_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700964 "unknown_fields_test",
965 "wire_format_test",
966 ],
967 deps = [":python_tests"],
968)
cgrushko45d92ae2016-12-02 19:40:50 -0500969
Thomas Colthurst7c651422018-05-29 18:26:11 -0400970cc_library(
971 name = "proto_api",
972 hdrs = ["python/google/protobuf/proto_api.h"],
973 deps = [
Thomas Colthurst7c651422018-05-29 18:26:11 -0400974 "//external:python_headers",
975 ],
Cory McLeanb7d3ec32018-06-11 12:18:45 -0400976 visibility = ["//visibility:public"],
Thomas Colthurst7c651422018-05-29 18:26:11 -0400977)
978
cgrushko45d92ae2016-12-02 19:40:50 -0500979proto_lang_toolchain(
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800980 name = "cc_toolchain",
981 command_line = "--cpp_out=$(OUT)",
982 runtime = ":protobuf",
983 visibility = ["//visibility:public"],
John Millikin350b1352018-02-24 11:36:49 -0800984 blacklisted_protos = [":_internal_wkt_protos_genrule"],
cgrushko45d92ae2016-12-02 19:40:50 -0500985)
cgrushkoe4baf3f2017-01-12 12:51:04 -0500986
987proto_lang_toolchain(
988 name = "java_toolchain",
989 command_line = "--java_out=$(OUT)",
990 runtime = ":protobuf_java",
991 visibility = ["//visibility:public"],
992)
makdharma286f0592017-05-01 09:49:26 -0700993
Thomas Van Lenten18aa2962018-11-01 09:37:14 -0400994alias(
995 name = "objectivec",
996 actual = ":protobuf_objc",
997 visibility = ["//visibility:public"],
998)
makdharma286f0592017-05-01 09:49:26 -0700999
1000objc_library(
Thomas Van Lenten18aa2962018-11-01 09:37:14 -04001001 name = "protobuf_objc",
1002 hdrs = [
1003 "objectivec/GPBArray.h",
1004 "objectivec/GPBBootstrap.h",
1005 "objectivec/GPBCodedInputStream.h",
1006 "objectivec/GPBCodedOutputStream.h",
1007 "objectivec/GPBDescriptor.h",
1008 "objectivec/GPBDictionary.h",
1009 "objectivec/GPBExtensionInternals.h",
1010 "objectivec/GPBExtensionRegistry.h",
1011 "objectivec/GPBMessage.h",
1012 "objectivec/GPBProtocolBuffers.h",
1013 "objectivec/GPBProtocolBuffers_RuntimeSupport.h",
1014 "objectivec/GPBRootObject.h",
1015 "objectivec/GPBRuntimeTypes.h",
1016 "objectivec/GPBUnknownField.h",
1017 "objectivec/GPBUnknownFieldSet.h",
1018 "objectivec/GPBUtilities.h",
1019 "objectivec/GPBWellKnownTypes.h",
1020 "objectivec/GPBWireFormat.h",
1021 "objectivec/google/protobuf/Any.pbobjc.h",
1022 "objectivec/google/protobuf/Api.pbobjc.h",
1023 "objectivec/google/protobuf/Duration.pbobjc.h",
1024 "objectivec/google/protobuf/Empty.pbobjc.h",
1025 "objectivec/google/protobuf/FieldMask.pbobjc.h",
1026 "objectivec/google/protobuf/SourceContext.pbobjc.h",
1027 "objectivec/google/protobuf/Struct.pbobjc.h",
1028 "objectivec/google/protobuf/Timestamp.pbobjc.h",
1029 "objectivec/google/protobuf/Type.pbobjc.h",
1030 "objectivec/google/protobuf/Wrappers.pbobjc.h",
1031 # Package private headers, but exposed because the generated sources
1032 # need to use them.
1033 "objectivec/GPBArray_PackagePrivate.h",
1034 "objectivec/GPBCodedInputStream_PackagePrivate.h",
1035 "objectivec/GPBCodedOutputStream_PackagePrivate.h",
1036 "objectivec/GPBDescriptor_PackagePrivate.h",
1037 "objectivec/GPBDictionary_PackagePrivate.h",
1038 "objectivec/GPBMessage_PackagePrivate.h",
1039 "objectivec/GPBRootObject_PackagePrivate.h",
1040 "objectivec/GPBUnknownFieldSet_PackagePrivate.h",
1041 "objectivec/GPBUnknownField_PackagePrivate.h",
1042 "objectivec/GPBUtilities_PackagePrivate.h",
1043 ],
Benjamin Barenblat048f5c22018-07-11 13:20:01 -04001044 copts = [
1045 "-Wno-vla",
1046 ],
makdharma286f0592017-05-01 09:49:26 -07001047 includes = [
1048 "objectivec",
1049 ],
Thomas Van Lenten18aa2962018-11-01 09:37:14 -04001050 non_arc_srcs = [
1051 "objectivec/GPBArray.m",
1052 "objectivec/GPBCodedInputStream.m",
1053 "objectivec/GPBCodedOutputStream.m",
1054 "objectivec/GPBDescriptor.m",
1055 "objectivec/GPBDictionary.m",
1056 "objectivec/GPBExtensionInternals.m",
1057 "objectivec/GPBExtensionRegistry.m",
1058 "objectivec/GPBMessage.m",
1059 "objectivec/GPBRootObject.m",
1060 "objectivec/GPBUnknownField.m",
1061 "objectivec/GPBUnknownFieldSet.m",
1062 "objectivec/GPBUtilities.m",
1063 "objectivec/GPBWellKnownTypes.m",
1064 "objectivec/GPBWireFormat.m",
1065 "objectivec/google/protobuf/Any.pbobjc.m",
1066 "objectivec/google/protobuf/Api.pbobjc.m",
1067 "objectivec/google/protobuf/Duration.pbobjc.m",
1068 "objectivec/google/protobuf/Empty.pbobjc.m",
1069 "objectivec/google/protobuf/FieldMask.pbobjc.m",
1070 "objectivec/google/protobuf/SourceContext.pbobjc.m",
1071 "objectivec/google/protobuf/Struct.pbobjc.m",
1072 "objectivec/google/protobuf/Timestamp.pbobjc.m",
1073 "objectivec/google/protobuf/Type.pbobjc.m",
1074 "objectivec/google/protobuf/Wrappers.pbobjc.m",
1075 ],
makdharma286f0592017-05-01 09:49:26 -07001076 visibility = ["//visibility:public"],
1077)
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001078
1079################################################################################
1080# Test generated proto support
1081################################################################################
1082
1083genrule(
1084 name = "generated_protos",
1085 srcs = ["src/google/protobuf/unittest_import.proto"],
1086 outs = ["unittest_gen.proto"],
1087 cmd = "cat $(SRCS) | sed 's|google/|src/google/|' > $(OUTS)"
1088)
1089
1090proto_library(
1091 name = "generated_protos_proto",
Fahrzin Hemmati55962db2018-05-07 17:36:34 -07001092 srcs = [
1093 "unittest_gen.proto",
1094 "src/google/protobuf/unittest_import_public.proto",
1095 ],
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001096)
1097
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001098py_proto_library(
1099 name = "generated_protos_py",
1100 srcs = [
1101 "unittest_gen.proto",
1102 "src/google/protobuf/unittest_import_public.proto",
1103 ],
1104 default_runtime = "",
1105 protoc = ":protoc",
1106)
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001107
1108################################################################################
1109# Conformance tests
1110################################################################################
1111
1112proto_library(
1113 name = "test_messages_proto2_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001114 srcs = ["src/google/protobuf/test_messages_proto2.proto"],
Josh Haberman25feb592018-11-03 14:43:20 -07001115 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001116)
1117
1118proto_library(
1119 name = "test_messages_proto3_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001120 srcs = ["src/google/protobuf/test_messages_proto3.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001121 deps = [
1122 ":any_proto",
1123 ":duration_proto",
1124 ":field_mask_proto",
1125 ":struct_proto",
1126 ":timestamp_proto",
1127 ":wrappers_proto",
1128 ],
Josh Haberman25feb592018-11-03 14:43:20 -07001129 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001130)
1131
1132cc_proto_library(
1133 name = "test_messages_proto2_proto_cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001134 srcs = ["src/google/protobuf/test_messages_proto2.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001135)
1136
1137cc_proto_library(
1138 name = "test_messages_proto3_proto_cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001139 srcs = ["src/google/protobuf/test_messages_proto3.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001140 deps = [
1141 ":cc_wkt_protos",
1142 ],
1143)
1144
1145proto_library(
1146 name = "conformance_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001147 srcs = ["conformance/conformance.proto"],
Josh Haberman25feb592018-11-03 14:43:20 -07001148 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001149)
1150
1151cc_proto_library(
1152 name = "conformance_proto_cc",
1153 srcs = ["conformance/conformance.proto"],
1154)
1155
1156cc_library(
1157 name = "jsoncpp",
1158 hdrs = ["conformance/third_party/jsoncpp/json.h"],
1159 srcs = ["conformance/third_party/jsoncpp/jsoncpp.cpp"],
1160 includes = ["conformance"],
1161)
1162
1163cc_library(
1164 name = "conformance_test",
1165 srcs = [
1166 "conformance/conformance_test.cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001167 "conformance/conformance_test_runner.cc",
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001168 ],
1169 hdrs = [
1170 "conformance/conformance_test.h",
1171 ],
Joshua Haberman2996da42019-05-13 07:45:30 -07001172 deps = [":conformance_proto_cc"],
1173 includes = ["conformance", "src"],
1174)
1175
1176cc_library(
1177 name = "binary_json_conformance_suite",
1178 srcs = ["conformance/binary_json_conformance_suite.cc"],
1179 hdrs = ["conformance/binary_json_conformance_suite.h"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001180 deps = [
Joshua Haberman2996da42019-05-13 07:45:30 -07001181 ":conformance_test",
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001182 ":jsoncpp",
1183 ":test_messages_proto2_proto_cc",
1184 ":test_messages_proto3_proto_cc",
1185 ],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001186)
1187
Joshua Haberman2996da42019-05-13 07:45:30 -07001188cc_library(
1189 name = "text_format_conformance_suite",
1190 srcs = ["conformance/text_format_conformance_suite.cc"],
1191 hdrs = ["conformance/text_format_conformance_suite.h"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001192 deps = [
1193 ":conformance_test",
Joshua Haberman2996da42019-05-13 07:45:30 -07001194 ":test_messages_proto2_proto_cc",
1195 ":test_messages_proto3_proto_cc",
1196 ],
1197)
1198
Joshua Habermanc659a4a2019-05-14 14:01:16 -07001199cc_binary(
Joshua Haberman2996da42019-05-13 07:45:30 -07001200 name = "conformance_test_runner",
1201 srcs = ["conformance/conformance_test_main.cc"],
1202 deps = [
1203 ":binary_json_conformance_suite",
1204 ":conformance_test",
1205 ":text_format_conformance_suite",
Josh Haberman25feb592018-11-03 14:43:20 -07001206 ],
1207 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001208)