blob: 07f06747ffebf17aa83e02d40978f407b44531c0 [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
diegoperez0a949012020-07-15 10:10:09 +010026ZLIB_DEPS = ["@zlib_repo//: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
Joe Baker-Malonef6e3e752019-09-27 17:59:12 -070051COPTS = select({
Joe Baker-Malonec6f821f2019-09-26 10:57:55 -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 ],
Joe Baker-Malonec6f821f2019-09-26 10:57:55 -070062}) + select({
63 ":android": ["-std=c++11"],
64 "//conditions:default": [],
Yun Peng0b059a32017-05-31 14:01:23 +020065})
66
scentinib30ddee2018-08-28 14:07:55 +020067load(":compiler_config_setting.bzl", "create_compiler_config_setting")
68
69create_compiler_config_setting(name = "msvc", value = "msvc-cl")
Yun Peng0b059a32017-05-31 14:01:23 +020070
Andrew Harpb56b4612016-04-04 15:13:30 -040071config_setting(
72 name = "android",
73 values = {
74 "crosstool_top": "//external:android/crosstool",
75 },
76)
77
yejianwudf4ec8a2019-04-02 20:08:37 +080078config_setting(
79 name = "android-libcpp",
80 values = {
81 "crosstool_top": "@androidndk//:toolchain-libcpp",
82 },
83)
84
85config_setting(
86 name = "android-gnu-libstdcpp",
87 values = {
88 "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp",
89 },
90)
91
Pascal Muetscharda6957f22018-03-22 13:14:10 -070092# Android and MSVC builds do not need to link in a separate pthread library.
Andrew Harpb56b4612016-04-04 15:13:30 -040093LINK_OPTS = select({
Andrew Harp3b4e7dc2016-04-04 16:13:31 -040094 ":android": [],
yejianwudf4ec8a2019-04-02 20:08:37 +080095 ":android-libcpp": [],
96 ":android-gnu-libstdcpp": [],
Jan Tattermuschccc56a32018-05-24 09:51:53 -070097 ":msvc": [
Loo Rong Jie0456e262018-06-06 10:03:25 +080098 # Suppress linker warnings about files with no symbols defined.
99 "-ignore:4221",
Laszlo Csomor55171682017-12-01 12:05:32 +0100100 ],
Daniel Ylitalo32fa55e2017-01-25 22:04:11 +0100101 "//conditions:default": ["-lpthread", "-lm"],
Andrew Harpb56b4612016-04-04 15:13:30 -0400102})
Jisi Liud19604f2015-06-17 17:37:58 -0700103
Jisi Liu04658a32015-10-20 15:00:13 -0700104load(
cgrushko65a4d202017-02-08 15:23:57 -0500105 ":protobuf.bzl",
Jisi Liu04658a32015-10-20 15:00:13 -0700106 "cc_proto_library",
107 "py_proto_library",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700108 "internal_copied_filegroup",
Steven Parkesea188662016-02-25 07:53:19 -0800109 "internal_gen_well_known_protos_java",
Jisi Liu04658a32015-10-20 15:00:13 -0700110 "internal_protobuf_py_tests",
111)
Jisi Liu39362b32015-10-14 17:12:11 -0700112
Jisi Liud19604f2015-06-17 17:37:58 -0700113cc_library(
114 name = "protobuf_lite",
115 srcs = [
116 # AUTOGEN(protobuf_lite_srcs)
Phillipp Schoppmann8e5b2f12019-03-14 10:35:05 +0000117 "src/google/protobuf/any_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700118 "src/google/protobuf/arena.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700119 "src/google/protobuf/extension_set.cc",
Hao Nguyen4cebf972019-05-03 15:08:01 -0700120 "src/google/protobuf/generated_enum_util.cc",
Jisi Liu12c186f2017-07-25 14:38:00 -0700121 "src/google/protobuf/generated_message_table_driven_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700122 "src/google/protobuf/generated_message_util.cc",
Adam Cozzette609d7522017-12-07 14:16:50 -0800123 "src/google/protobuf/implicit_weak_message.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700124 "src/google/protobuf/io/coded_stream.cc",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700125 "src/google/protobuf/io/io_win32.cc",
John W. Bruce21e4b1c2019-06-05 18:28:16 -0700126 "src/google/protobuf/io/strtod.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700127 "src/google/protobuf/io/zero_copy_stream.cc",
Hao Nguyen4cebf972019-05-03 15:08:01 -0700128 "src/google/protobuf/io/zero_copy_stream_impl.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700129 "src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
130 "src/google/protobuf/message_lite.cc",
Phillipp Schoppmann8e5b2f12019-03-14 10:35:05 +0000131 "src/google/protobuf/parse_context.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700132 "src/google/protobuf/repeated_field.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700133 "src/google/protobuf/stubs/bytestream.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700134 "src/google/protobuf/stubs/common.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700135 "src/google/protobuf/stubs/int128.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700136 "src/google/protobuf/stubs/status.cc",
137 "src/google/protobuf/stubs/statusor.cc",
138 "src/google/protobuf/stubs/stringpiece.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700139 "src/google/protobuf/stubs/stringprintf.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700140 "src/google/protobuf/stubs/structurally_valid.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700141 "src/google/protobuf/stubs/strutil.cc",
142 "src/google/protobuf/stubs/time.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700143 "src/google/protobuf/wire_format_lite.cc",
144 ],
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700145 hdrs = glob(["src/google/protobuf/**/*.h", "src/google/protobuf/**/*.inc"]),
Param Reddy16792c62017-10-15 13:06:58 -0700146 copts = COPTS,
diegoperez0a949012020-07-15 10:10:09 +0100147 includes = ["src/", "config/"],
Jisi Liud19604f2015-06-17 17:37:58 -0700148 linkopts = LINK_OPTS,
149 visibility = ["//visibility:public"],
150)
151
Cody Schroeder802d5432018-12-11 11:58:26 -0800152PROTOBUF_DEPS = select({
153 ":msvc": [],
154 "//conditions:default": ZLIB_DEPS,
155})
156
Jisi Liud19604f2015-06-17 17:37:58 -0700157cc_library(
158 name = "protobuf",
159 srcs = [
160 # AUTOGEN(protobuf_srcs)
161 "src/google/protobuf/any.cc",
162 "src/google/protobuf/any.pb.cc",
163 "src/google/protobuf/api.pb.cc",
164 "src/google/protobuf/compiler/importer.cc",
165 "src/google/protobuf/compiler/parser.cc",
166 "src/google/protobuf/descriptor.cc",
167 "src/google/protobuf/descriptor.pb.cc",
168 "src/google/protobuf/descriptor_database.cc",
169 "src/google/protobuf/duration.pb.cc",
170 "src/google/protobuf/dynamic_message.cc",
171 "src/google/protobuf/empty.pb.cc",
172 "src/google/protobuf/extension_set_heavy.cc",
173 "src/google/protobuf/field_mask.pb.cc",
174 "src/google/protobuf/generated_message_reflection.cc",
Jisi Liu759245a2017-07-25 11:52:33 -0700175 "src/google/protobuf/generated_message_table_driven.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700176 "src/google/protobuf/io/gzip_stream.cc",
177 "src/google/protobuf/io/printer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700178 "src/google/protobuf/io/tokenizer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700179 "src/google/protobuf/map_field.cc",
180 "src/google/protobuf/message.cc",
181 "src/google/protobuf/reflection_ops.cc",
182 "src/google/protobuf/service.cc",
183 "src/google/protobuf/source_context.pb.cc",
184 "src/google/protobuf/struct.pb.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700185 "src/google/protobuf/stubs/mathlimits.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700186 "src/google/protobuf/stubs/substitute.cc",
187 "src/google/protobuf/text_format.cc",
188 "src/google/protobuf/timestamp.pb.cc",
189 "src/google/protobuf/type.pb.cc",
190 "src/google/protobuf/unknown_field_set.cc",
Bairen Yi312e2db2017-03-21 03:52:37 +0800191 "src/google/protobuf/util/delimited_message_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700192 "src/google/protobuf/util/field_comparator.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700193 "src/google/protobuf/util/field_mask_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700194 "src/google/protobuf/util/internal/datapiece.cc",
195 "src/google/protobuf/util/internal/default_value_objectwriter.cc",
196 "src/google/protobuf/util/internal/error_listener.cc",
197 "src/google/protobuf/util/internal/field_mask_utility.cc",
198 "src/google/protobuf/util/internal/json_escaping.cc",
199 "src/google/protobuf/util/internal/json_objectwriter.cc",
200 "src/google/protobuf/util/internal/json_stream_parser.cc",
201 "src/google/protobuf/util/internal/object_writer.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800202 "src/google/protobuf/util/internal/proto_writer.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700203 "src/google/protobuf/util/internal/protostream_objectsource.cc",
204 "src/google/protobuf/util/internal/protostream_objectwriter.cc",
205 "src/google/protobuf/util/internal/type_info.cc",
206 "src/google/protobuf/util/internal/type_info_test_helper.cc",
207 "src/google/protobuf/util/internal/utility.cc",
208 "src/google/protobuf/util/json_util.cc",
209 "src/google/protobuf/util/message_differencer.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700210 "src/google/protobuf/util/time_util.cc",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700211 "src/google/protobuf/util/type_resolver_util.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700212 "src/google/protobuf/wire_format.cc",
213 "src/google/protobuf/wrappers.pb.cc",
214 ],
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700215 hdrs = glob(["src/**/*.h", "src/**/*.inc"]),
Param Reddy16792c62017-10-15 13:06:58 -0700216 copts = COPTS,
Jisi Liud19604f2015-06-17 17:37:58 -0700217 includes = ["src/"],
218 linkopts = LINK_OPTS,
219 visibility = ["//visibility:public"],
Cody Schroeder802d5432018-12-11 11:58:26 -0800220 deps = [":protobuf_lite"] + PROTOBUF_DEPS,
Jisi Liud19604f2015-06-17 17:37:58 -0700221)
222
Manjunath Kudlur6837b2d2017-03-02 18:02:05 -0800223# This provides just the header files for use in projects that need to build
224# shared libraries for dynamic loading. This target is available until Bazel
225# adds native support for such use cases.
226# TODO(keveman): Remove this target once the support gets added to Bazel.
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800227cc_library(
228 name = "protobuf_headers",
Yun Peng6e580402019-06-14 13:29:16 +0200229 hdrs = glob(["src/**/*.h", "src/**/*.inc"]),
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800230 includes = ["src/"],
231 visibility = ["//visibility:public"],
232)
233
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200234# Map of all well known protos.
235# name => (include path, imports)
236WELL_KNOWN_PROTO_MAP = {
237 "any" : ("google/protobuf/any.proto", []),
238 "api" : ("google/protobuf/api.proto", ["source_context", "type"]),
239 "compiler_plugin" : ("google/protobuf/compiler/plugin.proto", ["descriptor"]),
240 "descriptor" : ("google/protobuf/descriptor.proto", []),
241 "duration" : ("google/protobuf/duration.proto", []),
242 "empty" : ("google/protobuf/empty.proto", []),
243 "field_mask" : ("google/protobuf/field_mask.proto", []),
244 "source_context" : ("google/protobuf/source_context.proto", []),
245 "struct" : ("google/protobuf/struct.proto", []),
246 "timestamp" : ("google/protobuf/timestamp.proto", []),
247 "type" : ("google/protobuf/type.proto", ["any", "source_context"]),
248 "wrappers" : ("google/protobuf/wrappers.proto", []),
249}
250
251RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()]
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700252
Jisi Liu993fb702015-10-19 17:19:49 -0700253WELL_KNOWN_PROTOS = ["src/" + s for s in RELATIVE_WELL_KNOWN_PROTOS]
254
Steven Parkesd5a57322016-03-22 17:56:07 -0700255filegroup(
256 name = "well_known_protos",
257 srcs = WELL_KNOWN_PROTOS,
258 visibility = ["//visibility:public"],
259)
260
Jisi Liu39362b32015-10-14 17:12:11 -0700261cc_proto_library(
262 name = "cc_wkt_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700263 srcs = WELL_KNOWN_PROTOS,
Jisi Liu3101e732015-10-16 12:46:26 -0700264 include = "src",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800265 default_runtime = ":protobuf",
Jisi Liu993fb702015-10-19 17:19:49 -0700266 internal_bootstrap_hack = 1,
Jisi Liu04658a32015-10-20 15:00:13 -0700267 protoc = ":protoc",
Jisi Liu6a40bf82015-11-17 12:36:21 -0800268 visibility = ["//visibility:public"],
Jisi Liu39362b32015-10-14 17:12:11 -0700269)
270
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700271################################################################################
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200272# Well Known Types Proto Library Rules
273#
274# These proto_library rules can be used with one of the language specific proto
275# library rules i.e. java_proto_library:
276#
277# java_proto_library(
278# name = "any_java_proto",
279# deps = ["@com_google_protobuf//:any_proto],
280# )
281################################################################################
282
283internal_copied_filegroup(
284 name = "_internal_wkt_protos",
285 srcs = WELL_KNOWN_PROTOS,
286 dest = "",
287 strip_prefix = "src",
James O'Kane950f5e42018-03-08 22:30:44 -0800288 visibility = ["//visibility:private"],
Jakob Buchgraber699c0eb2017-09-05 17:15:10 +0200289)
290
291[proto_library(
292 name = proto[0] + "_proto",
293 srcs = [proto[1][0]],
294 deps = [dep + "_proto" for dep in proto[1][1]],
295 visibility = ["//visibility:public"],
296 ) for proto in WELL_KNOWN_PROTO_MAP.items()]
297
298################################################################################
Jorge Canizalesd5d7bb32015-06-28 15:23:02 -0700299# Protocol Buffers Compiler
300################################################################################
301
Jisi Liud19604f2015-06-17 17:37:58 -0700302cc_library(
303 name = "protoc_lib",
304 srcs = [
305 # AUTOGEN(protoc_lib_srcs)
306 "src/google/protobuf/compiler/code_generator.cc",
307 "src/google/protobuf/compiler/command_line_interface.cc",
308 "src/google/protobuf/compiler/cpp/cpp_enum.cc",
309 "src/google/protobuf/compiler/cpp/cpp_enum_field.cc",
310 "src/google/protobuf/compiler/cpp/cpp_extension.cc",
311 "src/google/protobuf/compiler/cpp/cpp_field.cc",
312 "src/google/protobuf/compiler/cpp/cpp_file.cc",
313 "src/google/protobuf/compiler/cpp/cpp_generator.cc",
314 "src/google/protobuf/compiler/cpp/cpp_helpers.cc",
315 "src/google/protobuf/compiler/cpp/cpp_map_field.cc",
316 "src/google/protobuf/compiler/cpp/cpp_message.cc",
317 "src/google/protobuf/compiler/cpp/cpp_message_field.cc",
Adam Cozzette13fd0452017-09-12 10:32:01 -0700318 "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700319 "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc",
320 "src/google/protobuf/compiler/cpp/cpp_service.cc",
321 "src/google/protobuf/compiler/cpp/cpp_string_field.cc",
Ming Zhao5cdd9362015-10-05 14:37:21 -0700322 "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700323 "src/google/protobuf/compiler/csharp/csharp_enum.cc",
324 "src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700325 "src/google/protobuf/compiler/csharp/csharp_field_base.cc",
326 "src/google/protobuf/compiler/csharp/csharp_generator.cc",
327 "src/google/protobuf/compiler/csharp/csharp_helpers.cc",
Jon Skeetb2ac8682015-07-15 13:17:42 +0100328 "src/google/protobuf/compiler/csharp/csharp_map_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700329 "src/google/protobuf/compiler/csharp/csharp_message.cc",
330 "src/google/protobuf/compiler/csharp/csharp_message_field.cc",
331 "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
Jon Skeeta6361a12015-11-19 13:05:17 +0000332 "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700333 "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
334 "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
335 "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
336 "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
Jon Skeetb2ac8682015-07-15 13:17:42 +0100337 "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700338 "src/google/protobuf/compiler/java/java_context.cc",
339 "src/google/protobuf/compiler/java/java_doc_comment.cc",
340 "src/google/protobuf/compiler/java/java_enum.cc",
341 "src/google/protobuf/compiler/java/java_enum_field.cc",
342 "src/google/protobuf/compiler/java/java_enum_field_lite.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700343 "src/google/protobuf/compiler/java/java_enum_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700344 "src/google/protobuf/compiler/java/java_extension.cc",
Jisi Liu1f4f3e22016-04-18 14:12:08 -0700345 "src/google/protobuf/compiler/java/java_extension_lite.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700346 "src/google/protobuf/compiler/java/java_field.cc",
347 "src/google/protobuf/compiler/java/java_file.cc",
348 "src/google/protobuf/compiler/java/java_generator.cc",
349 "src/google/protobuf/compiler/java/java_generator_factory.cc",
350 "src/google/protobuf/compiler/java/java_helpers.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700351 "src/google/protobuf/compiler/java/java_map_field.cc",
352 "src/google/protobuf/compiler/java/java_map_field_lite.cc",
353 "src/google/protobuf/compiler/java/java_message.cc",
354 "src/google/protobuf/compiler/java/java_message_builder.cc",
355 "src/google/protobuf/compiler/java/java_message_builder_lite.cc",
356 "src/google/protobuf/compiler/java/java_message_field.cc",
357 "src/google/protobuf/compiler/java/java_message_field_lite.cc",
358 "src/google/protobuf/compiler/java/java_message_lite.cc",
359 "src/google/protobuf/compiler/java/java_name_resolver.cc",
360 "src/google/protobuf/compiler/java/java_primitive_field.cc",
361 "src/google/protobuf/compiler/java/java_primitive_field_lite.cc",
362 "src/google/protobuf/compiler/java/java_service.cc",
363 "src/google/protobuf/compiler/java/java_shared_code_generator.cc",
364 "src/google/protobuf/compiler/java/java_string_field.cc",
365 "src/google/protobuf/compiler/java/java_string_field_lite.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800366 "src/google/protobuf/compiler/js/js_generator.cc",
Jisi Liuf92b4552016-12-05 10:16:47 -0800367 "src/google/protobuf/compiler/js/well_known_types_embed.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700368 "src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
369 "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
370 "src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
371 "src/google/protobuf/compiler/objectivec/objectivec_field.cc",
372 "src/google/protobuf/compiler/objectivec/objectivec_file.cc",
373 "src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
374 "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
375 "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
376 "src/google/protobuf/compiler/objectivec/objectivec_message.cc",
377 "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
378 "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
379 "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
Jisi Liud9473082016-09-22 15:14:58 -0700380 "src/google/protobuf/compiler/php/php_generator.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700381 "src/google/protobuf/compiler/plugin.cc",
Feng Xiaofd595fc2018-03-01 16:36:05 -0800382 "src/google/protobuf/compiler/plugin.pb.cc",
Jisi Liud19604f2015-06-17 17:37:58 -0700383 "src/google/protobuf/compiler/python/python_generator.cc",
384 "src/google/protobuf/compiler/ruby/ruby_generator.cc",
385 "src/google/protobuf/compiler/subprocess.cc",
386 "src/google/protobuf/compiler/zip_writer.cc",
387 ],
388 copts = COPTS,
389 includes = ["src/"],
Loo Rong Jie0456e262018-06-06 10:03:25 +0800390 linkopts = LINK_OPTS + select({
391 ":msvc": [
392 # Linking to setargv.obj makes the default command line argument
393 # parser expand wildcards, so the main method's argv will contain the
394 # expanded list instead of the wildcards.
395 #
396 # Adding dummy "-DEFAULTLIB:kernel32.lib", because:
397 # - Microsoft ships this object file next to default libraries
398 # - but this file is not a library, just a precompiled object
399 # - "-WHOLEARCHIVE" and "-DEFAULTLIB" only accept library,
400 # not precompiled object.
401 # - Bazel would assume linkopt that does not start with "-" or "$"
402 # as a label to a target, so we add a harmless "-DEFAULTLIB:kernel32.lib"
403 # before "setargv.obj".
404 # See https://msdn.microsoft.com/en-us/library/8bch7bkk.aspx
405 "-DEFAULTLIB:kernel32.lib setargv.obj",
406 ],
407 "//conditions:default": [],
408 }),
Jisi Liud19604f2015-06-17 17:37:58 -0700409 visibility = ["//visibility:public"],
410 deps = [":protobuf"],
411)
412
413cc_binary(
414 name = "protoc",
415 srcs = ["src/google/protobuf/compiler/main.cc"],
Jisi Liud19604f2015-06-17 17:37:58 -0700416 linkopts = LINK_OPTS,
417 visibility = ["//visibility:public"],
418 deps = [":protoc_lib"],
419)
420
Jisi Liud19604f2015-06-17 17:37:58 -0700421################################################################################
422# Tests
423################################################################################
424
Jisi Liu993fb702015-10-19 17:19:49 -0700425RELATIVE_LITE_TEST_PROTOS = [
Jisi Liud19604f2015-06-17 17:37:58 -0700426 # AUTOGEN(lite_test_protos)
427 "google/protobuf/map_lite_unittest.proto",
428 "google/protobuf/unittest_import_lite.proto",
429 "google/protobuf/unittest_import_public_lite.proto",
430 "google/protobuf/unittest_lite.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700431 "google/protobuf/unittest_no_arena_lite.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700432]
433
Jisi Liu993fb702015-10-19 17:19:49 -0700434LITE_TEST_PROTOS = ["src/" + s for s in RELATIVE_LITE_TEST_PROTOS]
435
436RELATIVE_TEST_PROTOS = [
Jisi Liud19604f2015-06-17 17:37:58 -0700437 # AUTOGEN(test_protos)
438 "google/protobuf/any_test.proto",
439 "google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto",
440 "google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto",
441 "google/protobuf/map_proto2_unittest.proto",
442 "google/protobuf/map_unittest.proto",
443 "google/protobuf/unittest.proto",
444 "google/protobuf/unittest_arena.proto",
445 "google/protobuf/unittest_custom_options.proto",
446 "google/protobuf/unittest_drop_unknown_fields.proto",
447 "google/protobuf/unittest_embed_optimize_for.proto",
448 "google/protobuf/unittest_empty.proto",
449 "google/protobuf/unittest_enormous_descriptor.proto",
450 "google/protobuf/unittest_import.proto",
451 "google/protobuf/unittest_import_public.proto",
Feng Xiao32d78302017-03-29 14:01:40 -0700452 "google/protobuf/unittest_lazy_dependencies.proto",
453 "google/protobuf/unittest_lazy_dependencies_custom_option.proto",
454 "google/protobuf/unittest_lazy_dependencies_enum.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700455 "google/protobuf/unittest_lite_imports_nonlite.proto",
456 "google/protobuf/unittest_mset.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700457 "google/protobuf/unittest_mset_wire_format.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700458 "google/protobuf/unittest_no_arena.proto",
459 "google/protobuf/unittest_no_arena_import.proto",
460 "google/protobuf/unittest_no_field_presence.proto",
461 "google/protobuf/unittest_no_generic_services.proto",
462 "google/protobuf/unittest_optimize_for.proto",
463 "google/protobuf/unittest_preserve_unknown_enum.proto",
464 "google/protobuf/unittest_preserve_unknown_enum2.proto",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700465 "google/protobuf/unittest_proto3.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700466 "google/protobuf/unittest_proto3_arena.proto",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700467 "google/protobuf/unittest_proto3_arena_lite.proto",
468 "google/protobuf/unittest_proto3_lite.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700469 "google/protobuf/unittest_well_known_types.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700470 "google/protobuf/util/internal/testdata/anys.proto",
471 "google/protobuf/util/internal/testdata/books.proto",
472 "google/protobuf/util/internal/testdata/default_value.proto",
473 "google/protobuf/util/internal/testdata/default_value_test.proto",
474 "google/protobuf/util/internal/testdata/field_mask.proto",
475 "google/protobuf/util/internal/testdata/maps.proto",
Jisi Liub90f9f82015-08-25 17:06:33 -0700476 "google/protobuf/util/internal/testdata/oneofs.proto",
Jisi Liu9d4657a2016-09-22 15:11:17 -0700477 "google/protobuf/util/internal/testdata/proto3.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700478 "google/protobuf/util/internal/testdata/struct.proto",
479 "google/protobuf/util/internal/testdata/timestamp_duration.proto",
Jisi Liu9d4657a2016-09-22 15:11:17 -0700480 "google/protobuf/util/internal/testdata/wrappers.proto",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700481 "google/protobuf/util/json_format.proto",
Jisi Liuaf3eafd2015-06-18 13:38:36 -0700482 "google/protobuf/util/json_format_proto3.proto",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800483 "google/protobuf/util/message_differencer_unittest.proto",
Jisi Liud19604f2015-06-17 17:37:58 -0700484]
485
Jisi Liu993fb702015-10-19 17:19:49 -0700486TEST_PROTOS = ["src/" + s for s in RELATIVE_TEST_PROTOS]
487
Jisi Liu39362b32015-10-14 17:12:11 -0700488cc_proto_library(
489 name = "cc_test_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700490 srcs = LITE_TEST_PROTOS + TEST_PROTOS,
Jisi Liu3101e732015-10-16 12:46:26 -0700491 include = "src",
Jisi Liube92ffb2015-10-27 15:11:38 -0700492 default_runtime = ":protobuf",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800493 protoc = ":protoc",
Jisi Liud8701b52015-10-16 11:44:21 -0700494 deps = [":cc_wkt_protos"],
Jisi Liud19604f2015-06-17 17:37:58 -0700495)
496
497COMMON_TEST_SRCS = [
498 # AUTOGEN(common_test_srcs)
499 "src/google/protobuf/arena_test_util.cc",
500 "src/google/protobuf/map_test_util.cc",
501 "src/google/protobuf/test_util.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700502 "src/google/protobuf/test_util.inc",
Jisi Liud19604f2015-06-17 17:37:58 -0700503 "src/google/protobuf/testing/file.cc",
504 "src/google/protobuf/testing/googletest.cc",
505]
506
Jisi Liu7a0c4312015-06-18 16:45:27 -0700507cc_binary(
508 name = "test_plugin",
509 srcs = [
510 # AUTOGEN(test_plugin_srcs)
511 "src/google/protobuf/compiler/mock_code_generator.cc",
512 "src/google/protobuf/compiler/test_plugin.cc",
513 "src/google/protobuf/testing/file.cc",
514 ],
515 deps = [
516 ":protobuf",
517 ":protoc_lib",
518 "//external:gtest",
519 ],
520)
521
522cc_test(
Jisi Liu759245a2017-07-25 11:52:33 -0700523 name = "win32_test",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700524 srcs = ["src/google/protobuf/io/io_win32_unittest.cc"],
Jisi Liu759245a2017-07-25 11:52:33 -0700525 deps = [
526 ":protobuf_lite",
527 "//external:gtest_main",
528 ],
529 tags = ["manual", "windows"],
530)
531
532cc_test(
Jisi Liu7a0c4312015-06-18 16:45:27 -0700533 name = "protobuf_test",
Jisi Liu39362b32015-10-14 17:12:11 -0700534 srcs = COMMON_TEST_SRCS + [
Jisi Liu7a0c4312015-06-18 16:45:27 -0700535 # AUTOGEN(test_srcs)
536 "src/google/protobuf/any_test.cc",
537 "src/google/protobuf/arena_unittest.cc",
538 "src/google/protobuf/arenastring_unittest.cc",
Jisi Liu1c682e02017-10-18 14:31:23 -0700539 "src/google/protobuf/compiler/annotation_test_util.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700540 "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc",
Jisi Liu11b66612017-07-19 12:10:43 -0700541 "src/google/protobuf/compiler/cpp/cpp_move_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700542 "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc",
543 "src/google/protobuf/compiler/cpp/cpp_unittest.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700544 "src/google/protobuf/compiler/cpp/cpp_unittest.inc",
Jisi Liu1f4f3e22016-04-18 14:12:08 -0700545 "src/google/protobuf/compiler/cpp/metadata_test.cc",
Feng Xiao32d78302017-03-29 14:01:40 -0700546 "src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700547 "src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc",
548 "src/google/protobuf/compiler/importer_unittest.cc",
549 "src/google/protobuf/compiler/java/java_doc_comment_unittest.cc",
550 "src/google/protobuf/compiler/java/java_plugin_unittest.cc",
551 "src/google/protobuf/compiler/mock_code_generator.cc",
552 "src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc",
553 "src/google/protobuf/compiler/parser_unittest.cc",
554 "src/google/protobuf/compiler/python/python_plugin_unittest.cc",
555 "src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc",
556 "src/google/protobuf/descriptor_database_unittest.cc",
557 "src/google/protobuf/descriptor_unittest.cc",
558 "src/google/protobuf/drop_unknown_fields_test.cc",
559 "src/google/protobuf/dynamic_message_unittest.cc",
560 "src/google/protobuf/extension_set_unittest.cc",
561 "src/google/protobuf/generated_message_reflection_unittest.cc",
562 "src/google/protobuf/io/coded_stream_unittest.cc",
Hao Nguyenef1e8e72019-04-09 06:48:01 -0700563 "src/google/protobuf/io/io_win32_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700564 "src/google/protobuf/io/printer_unittest.cc",
565 "src/google/protobuf/io/tokenizer_unittest.cc",
566 "src/google/protobuf/io/zero_copy_stream_unittest.cc",
567 "src/google/protobuf/map_field_test.cc",
568 "src/google/protobuf/map_test.cc",
569 "src/google/protobuf/message_unittest.cc",
Adam Cozzette5bed3682018-03-23 10:19:04 -0700570 "src/google/protobuf/message_unittest.inc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700571 "src/google/protobuf/no_field_presence_test.cc",
572 "src/google/protobuf/preserve_unknown_enum_test.cc",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700573 "src/google/protobuf/proto3_arena_lite_unittest.cc",
Jisi Liuf86d39c2016-04-28 14:43:22 -0700574 "src/google/protobuf/proto3_arena_unittest.cc",
Chad Whipkeybaf52bd2016-04-15 09:23:50 -0700575 "src/google/protobuf/proto3_lite_unittest.cc",
Feng Xiaobde4eaf2018-08-13 12:58:55 -0700576 "src/google/protobuf/proto3_lite_unittest.inc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700577 "src/google/protobuf/reflection_ops_unittest.cc",
578 "src/google/protobuf/repeated_field_reflection_unittest.cc",
579 "src/google/protobuf/repeated_field_unittest.cc",
580 "src/google/protobuf/stubs/bytestream_unittest.cc",
581 "src/google/protobuf/stubs/common_unittest.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700582 "src/google/protobuf/stubs/int128_unittest.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700583 "src/google/protobuf/stubs/status_test.cc",
584 "src/google/protobuf/stubs/statusor_test.cc",
585 "src/google/protobuf/stubs/stringpiece_unittest.cc",
586 "src/google/protobuf/stubs/stringprintf_unittest.cc",
587 "src/google/protobuf/stubs/structurally_valid_unittest.cc",
588 "src/google/protobuf/stubs/strutil_unittest.cc",
589 "src/google/protobuf/stubs/template_util_unittest.cc",
590 "src/google/protobuf/stubs/time_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700591 "src/google/protobuf/text_format_unittest.cc",
592 "src/google/protobuf/unknown_field_set_unittest.cc",
Byron Yicb3e84b2017-03-16 20:01:22 +0800593 "src/google/protobuf/util/delimited_message_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700594 "src/google/protobuf/util/field_comparator_test.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700595 "src/google/protobuf/util/field_mask_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700596 "src/google/protobuf/util/internal/default_value_objectwriter_test.cc",
597 "src/google/protobuf/util/internal/json_objectwriter_test.cc",
598 "src/google/protobuf/util/internal/json_stream_parser_test.cc",
599 "src/google/protobuf/util/internal/protostream_objectsource_test.cc",
600 "src/google/protobuf/util/internal/protostream_objectwriter_test.cc",
601 "src/google/protobuf/util/internal/type_info_test_helper.cc",
602 "src/google/protobuf/util/json_util_test.cc",
Feng Xiaoef6c72b2015-12-28 17:33:55 -0800603 "src/google/protobuf/util/message_differencer_unittest.cc",
Jisi Liub90f9f82015-08-25 17:06:33 -0700604 "src/google/protobuf/util/time_util_test.cc",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700605 "src/google/protobuf/util/type_resolver_util_test.cc",
606 "src/google/protobuf/well_known_types_unittest.cc",
607 "src/google/protobuf/wire_format_unittest.cc",
Yun Peng073487b2018-12-14 12:53:36 +0100608 ] + select({
609 "//conditions:default" : [
610 # Doesn't pass on Windows with MSVC
611 "src/google/protobuf/compiler/command_line_interface_unittest.cc",
612 ],
613 ":msvc": []
614 }),
Jisi Liu7a0c4312015-06-18 16:45:27 -0700615 copts = COPTS,
616 data = [
617 ":test_plugin",
Jisi Liu598480d2015-10-21 11:19:16 -0700618 ] + glob([
619 "src/google/protobuf/**/*",
Feng Xiaoacde1652017-03-29 15:14:18 -0700620 # Files for csharp_bootstrap_unittest.cc.
621 "conformance/**/*",
622 "csharp/src/**/*",
Jisi Liu598480d2015-10-21 11:19:16 -0700623 ]),
Jisi Liu7a0c4312015-06-18 16:45:27 -0700624 includes = [
625 "src/",
626 ],
627 linkopts = LINK_OPTS,
628 deps = [
Jisi Liu993fb702015-10-19 17:19:49 -0700629 ":cc_test_protos",
Jisi Liu7a0c4312015-06-18 16:45:27 -0700630 ":protobuf",
631 ":protoc_lib",
632 "//external:gtest_main",
Cody Schroeder802d5432018-12-11 11:58:26 -0800633 ] + PROTOBUF_DEPS,
Jisi Liu7a0c4312015-06-18 16:45:27 -0700634)
Jisi Liu993fb702015-10-19 17:19:49 -0700635
636################################################################################
637# Java support
638################################################################################
Steven Parkesea188662016-02-25 07:53:19 -0800639internal_gen_well_known_protos_java(
Ming Zhao4fe03812016-01-21 23:03:28 -0800640 srcs = WELL_KNOWN_PROTOS,
Jisi Liu993fb702015-10-19 17:19:49 -0700641)
642
643java_library(
Jisi Liu166e9bb2015-10-21 10:56:38 -0700644 name = "protobuf_java",
Jisi Liu993fb702015-10-19 17:19:49 -0700645 srcs = glob([
Ming Zhao4fe03812016-01-21 23:03:28 -0800646 "java/core/src/main/java/com/google/protobuf/*.java",
Jisi Liu993fb702015-10-19 17:19:49 -0700647 ]) + [
Ming Zhao4fe03812016-01-21 23:03:28 -0800648 ":gen_well_known_protos_java",
Jisi Liu993fb702015-10-19 17:19:49 -0700649 ],
David Ostrovsky85b488f2018-01-31 09:01:27 +0100650 javacopts = select({
651 "//:jdk9": ["--add-modules=jdk.unsupported"],
652 "//conditions:default": ["-source 7", "-target 7"],
653 }),
Jisi Liu993fb702015-10-19 17:19:49 -0700654 visibility = ["//visibility:public"],
655)
656
Steven Parkesa9244ca2016-03-10 17:50:25 -0800657java_library(
Carmi Grushko5c25f412019-05-24 17:26:07 +0300658 name = "protobuf_javalite",
659 srcs = [
660 # Keep in sync with java/lite/pom.xml
661 "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java",
662 "java/core/src/main/java/com/google/protobuf/AbstractParser.java",
663 "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java",
664 "java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java",
665 "java/core/src/main/java/com/google/protobuf/Android.java",
666 "java/core/src/main/java/com/google/protobuf/ArrayDecoders.java",
667 "java/core/src/main/java/com/google/protobuf/BinaryReader.java",
668 "java/core/src/main/java/com/google/protobuf/BinaryWriter.java",
669 "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java",
670 "java/core/src/main/java/com/google/protobuf/BufferAllocator.java",
671 "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java",
672 "java/core/src/main/java/com/google/protobuf/ByteOutput.java",
673 "java/core/src/main/java/com/google/protobuf/ByteString.java",
674 "java/core/src/main/java/com/google/protobuf/CodedInputStream.java",
675 "java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java",
676 "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java",
677 "java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java",
678 "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java",
679 "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java",
680 "java/core/src/main/java/com/google/protobuf/ExtensionLite.java",
681 "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java",
682 "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java",
683 "java/core/src/main/java/com/google/protobuf/ExtensionSchema.java",
684 "java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java",
685 "java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java",
686 "java/core/src/main/java/com/google/protobuf/FieldInfo.java",
687 "java/core/src/main/java/com/google/protobuf/FieldSet.java",
688 "java/core/src/main/java/com/google/protobuf/FieldType.java",
689 "java/core/src/main/java/com/google/protobuf/FloatArrayList.java",
690 "java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java",
691 "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java",
692 "java/core/src/main/java/com/google/protobuf/IntArrayList.java",
693 "java/core/src/main/java/com/google/protobuf/Internal.java",
694 "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java",
695 "java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java",
696 "java/core/src/main/java/com/google/protobuf/JavaType.java",
697 "java/core/src/main/java/com/google/protobuf/LazyField.java",
698 "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java",
699 "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java",
700 "java/core/src/main/java/com/google/protobuf/LazyStringList.java",
701 "java/core/src/main/java/com/google/protobuf/ListFieldSchema.java",
702 "java/core/src/main/java/com/google/protobuf/LongArrayList.java",
703 "java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java",
704 "java/core/src/main/java/com/google/protobuf/MapEntryLite.java",
705 "java/core/src/main/java/com/google/protobuf/MapFieldLite.java",
706 "java/core/src/main/java/com/google/protobuf/MapFieldSchema.java",
707 "java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java",
708 "java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java",
709 "java/core/src/main/java/com/google/protobuf/MessageInfo.java",
710 "java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java",
711 "java/core/src/main/java/com/google/protobuf/MessageLite.java",
712 "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java",
713 "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java",
714 "java/core/src/main/java/com/google/protobuf/MessageSchema.java",
715 "java/core/src/main/java/com/google/protobuf/MessageSetSchema.java",
716 "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java",
717 "java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java",
718 "java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java",
719 "java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java",
720 "java/core/src/main/java/com/google/protobuf/NioByteString.java",
721 "java/core/src/main/java/com/google/protobuf/OneofInfo.java",
722 "java/core/src/main/java/com/google/protobuf/Parser.java",
723 "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java",
724 "java/core/src/main/java/com/google/protobuf/ProtoSyntax.java",
725 "java/core/src/main/java/com/google/protobuf/Protobuf.java",
726 "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java",
727 "java/core/src/main/java/com/google/protobuf/ProtobufLists.java",
728 "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java",
729 "java/core/src/main/java/com/google/protobuf/RawMessageInfo.java",
730 "java/core/src/main/java/com/google/protobuf/Reader.java",
731 "java/core/src/main/java/com/google/protobuf/RopeByteString.java",
732 "java/core/src/main/java/com/google/protobuf/Schema.java",
733 "java/core/src/main/java/com/google/protobuf/SchemaFactory.java",
734 "java/core/src/main/java/com/google/protobuf/SchemaUtil.java",
735 "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java",
736 "java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java",
737 "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java",
738 "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java",
739 "java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java",
740 "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java",
741 "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java",
742 "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java",
743 "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java",
744 "java/core/src/main/java/com/google/protobuf/Utf8.java",
745 "java/core/src/main/java/com/google/protobuf/WireFormat.java",
746 "java/core/src/main/java/com/google/protobuf/Writer.java",
747 ],
748 javacopts = select({
749 "//:jdk9": ["--add-modules=jdk.unsupported"],
750 "//conditions:default": [
751 "-source 7",
752 "-target 7",
753 ],
754 }),
755 visibility = ["//visibility:public"],
756)
757
758java_library(
Steven Parkesa9244ca2016-03-10 17:50:25 -0800759 name = "protobuf_java_util",
760 srcs = glob([
761 "java/util/src/main/java/com/google/protobuf/util/*.java",
762 ]),
David Ostrovsky019ceea2018-01-25 06:05:14 +0100763 javacopts = ["-source 7", "-target 7"],
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800764 visibility = ["//visibility:public"],
Steven Parkesa9244ca2016-03-10 17:50:25 -0800765 deps = [
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700766 "protobuf_java",
David Ostrovsky35c9a5f2019-03-03 21:57:33 +0100767 "//external:error_prone_annotations",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700768 "//external:gson",
769 "//external:guava",
Steven Parkesa9244ca2016-03-10 17:50:25 -0800770 ],
Steven Parkesa9244ca2016-03-10 17:50:25 -0800771)
772
Jisi Liu993fb702015-10-19 17:19:49 -0700773################################################################################
774# Python support
775################################################################################
776
David Z. Chen985c9682016-02-11 18:11:10 -0800777py_library(
Jisi Liu993fb702015-10-19 17:19:49 -0700778 name = "python_srcs",
779 srcs = glob(
780 [
Calder Coalson142cbe02018-05-21 15:33:43 -0700781 "python/google/__init__.py",
Jisi Liu993fb702015-10-19 17:19:49 -0700782 "python/google/protobuf/*.py",
783 "python/google/protobuf/**/*.py",
784 ],
785 exclude = [
David Z. Chen02cd45c2016-05-20 16:49:04 -0700786 "python/google/protobuf/__init__.py",
787 "python/google/protobuf/**/__init__.py",
Jisi Liu993fb702015-10-19 17:19:49 -0700788 "python/google/protobuf/internal/*_test.py",
789 "python/google/protobuf/internal/test_util.py",
790 ],
791 ),
David Z. Chen985c9682016-02-11 18:11:10 -0800792 imports = ["python"],
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800793 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700794)
795
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800796cc_binary(
Richard Shindf5841f2016-10-18 13:16:44 -0700797 name = "python/google/protobuf/internal/_api_implementation.so",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800798 srcs = ["python/google/protobuf/internal/api_implementation.cc"],
799 copts = COPTS + [
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800800 "-DPYTHON_PROTO2_CPP_IMPL_V2",
801 ],
802 linkshared = 1,
803 linkstatic = 1,
Manjunath Kudlura1949212015-12-08 08:24:37 -0800804 deps = select({
805 "//conditions:default": [],
David Z. Chen985c9682016-02-11 18:11:10 -0800806 ":use_fast_cpp_protos": ["//external:python_headers"],
Manjunath Kudlura1949212015-12-08 08:24:37 -0800807 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800808)
809
810cc_binary(
Richard Shindf5841f2016-10-18 13:16:44 -0700811 name = "python/google/protobuf/pyext/_message.so",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800812 srcs = glob([
813 "python/google/protobuf/pyext/*.cc",
814 "python/google/protobuf/pyext/*.h",
815 ]),
816 copts = COPTS + [
817 "-DGOOGLE_PROTOBUF_HAS_ONEOF=1",
Manjunath Kudlur99a3e302016-02-16 15:17:10 -0800818 ] + select({
819 "//conditions:default": [],
820 ":allow_oversize_protos": ["-DPROTOBUF_PYTHON_ALLOW_OVERSIZE_PROTOS=1"],
821 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800822 includes = [
823 "python/",
824 "src/",
825 ],
826 linkshared = 1,
827 linkstatic = 1,
Manjunath Kudlura1949212015-12-08 08:24:37 -0800828 deps = [
829 ":protobuf",
Thomas Colthurst7c651422018-05-29 18:26:11 -0400830 ":proto_api",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800831 ] + select({
832 "//conditions:default": [],
David Z. Chen985c9682016-02-11 18:11:10 -0800833 ":use_fast_cpp_protos": ["//external:python_headers"],
Manjunath Kudlura1949212015-12-08 08:24:37 -0800834 }),
835)
836
837config_setting(
838 name = "use_fast_cpp_protos",
839 values = {
840 "define": "use_fast_cpp_protos=true",
841 },
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800842)
843
Manjunath Kudlur99a3e302016-02-16 15:17:10 -0800844config_setting(
845 name = "allow_oversize_protos",
846 values = {
847 "define": "allow_oversize_protos=true",
848 },
849)
850
David Z. Chen02cd45c2016-05-20 16:49:04 -0700851# Copy the builtin proto files from src/google/protobuf to
852# python/google/protobuf. This way, the generated Python sources will be in the
853# same directory as the Python runtime sources. This is necessary for the
854# modules to be imported correctly since they are all part of the same Python
855# package.
856internal_copied_filegroup(
857 name = "protos_python",
858 srcs = WELL_KNOWN_PROTOS,
David Z. Chen02cd45c2016-05-20 16:49:04 -0700859 dest = "python",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800860 strip_prefix = "src",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700861)
862
863# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in
864# which case we can simply add :protos_python in srcs.
865COPIED_WELL_KNOWN_PROTOS = ["python/" + s for s in RELATIVE_WELL_KNOWN_PROTOS]
866
Jisi Liu993fb702015-10-19 17:19:49 -0700867py_proto_library(
Jisi Liu166e9bb2015-10-21 10:56:38 -0700868 name = "protobuf_python",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700869 srcs = COPIED_WELL_KNOWN_PROTOS,
870 include = "python",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800871 data = select({
872 "//conditions:default": [],
873 ":use_fast_cpp_protos": [
Richard Shindf5841f2016-10-18 13:16:44 -0700874 ":python/google/protobuf/internal/_api_implementation.so",
875 ":python/google/protobuf/pyext/_message.so",
Manjunath Kudlura1949212015-12-08 08:24:37 -0800876 ],
877 }),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800878 default_runtime = "",
Jisi Liu04658a32015-10-20 15:00:13 -0700879 protoc = ":protoc",
David Z. Chen985c9682016-02-11 18:11:10 -0800880 py_libs = [
881 ":python_srcs",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800882 "//external:six",
David Z. Chen985c9682016-02-11 18:11:10 -0800883 ],
Adam Michael6044b242017-03-10 18:06:34 -0500884 py_extra_srcs = glob(["python/**/__init__.py"]),
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800885 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700886 visibility = ["//visibility:public"],
887)
888
David Z. Chen02cd45c2016-05-20 16:49:04 -0700889# Copy the test proto files from src/google/protobuf to
890# python/google/protobuf. This way, the generated Python sources will be in the
891# same directory as the Python runtime sources. This is necessary for the
892# modules to be imported correctly by the tests since they are all part of the
893# same Python package.
894internal_copied_filegroup(
895 name = "protos_python_test",
896 srcs = LITE_TEST_PROTOS + TEST_PROTOS,
David Z. Chen02cd45c2016-05-20 16:49:04 -0700897 dest = "python",
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800898 strip_prefix = "src",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700899)
900
901# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in
902# which case we can simply add :protos_python_test in srcs.
903COPIED_LITE_TEST_PROTOS = ["python/" + s for s in RELATIVE_LITE_TEST_PROTOS]
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800904
David Z. Chen02cd45c2016-05-20 16:49:04 -0700905COPIED_TEST_PROTOS = ["python/" + s for s in RELATIVE_TEST_PROTOS]
906
Jisi Liu993fb702015-10-19 17:19:49 -0700907py_proto_library(
908 name = "python_common_test_protos",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700909 srcs = COPIED_LITE_TEST_PROTOS + COPIED_TEST_PROTOS,
910 include = "python",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800911 default_runtime = "",
Jisi Liu04658a32015-10-20 15:00:13 -0700912 protoc = ":protoc",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700913 srcs_version = "PY2AND3",
Jisi Liu166e9bb2015-10-21 10:56:38 -0700914 deps = [":protobuf_python"],
Jisi Liu993fb702015-10-19 17:19:49 -0700915)
916
917py_proto_library(
918 name = "python_specific_test_protos",
Jisi Liu68e13f42015-10-22 11:13:14 -0700919 srcs = glob([
920 "python/google/protobuf/internal/*.proto",
921 "python/google/protobuf/internal/import_test_package/*.proto",
922 ]),
Jisi Liu993fb702015-10-19 17:19:49 -0700923 include = "python",
Manjunath Kudlur3ff1dca2015-12-07 13:08:21 -0800924 default_runtime = ":protobuf_python",
Jisi Liu04658a32015-10-20 15:00:13 -0700925 protoc = ":protoc",
David Z. Chen5ebeefb2016-04-08 13:30:13 -0700926 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700927 deps = [":python_common_test_protos"],
928)
929
930py_library(
931 name = "python_tests",
David Z. Chen985c9682016-02-11 18:11:10 -0800932 srcs = glob(
933 [
934 "python/google/protobuf/internal/*_test.py",
935 "python/google/protobuf/internal/test_util.py",
David Z. Chen02cd45c2016-05-20 16:49:04 -0700936 "python/google/protobuf/internal/import_test_package/__init__.py",
David Z. Chen985c9682016-02-11 18:11:10 -0800937 ],
938 ),
939 imports = ["python"],
Geoffrey Irving29799232015-12-03 13:11:19 -0800940 srcs_version = "PY2AND3",
Jisi Liu993fb702015-10-19 17:19:49 -0700941 deps = [
Jisi Liu166e9bb2015-10-21 10:56:38 -0700942 ":protobuf_python",
Jisi Liu598480d2015-10-21 11:19:16 -0700943 ":python_common_test_protos",
Jisi Liu993fb702015-10-19 17:19:49 -0700944 ":python_specific_test_protos",
945 ],
946)
947
948internal_protobuf_py_tests(
Jisi Liu8f540262015-10-20 16:21:41 -0700949 name = "python_tests_batch",
Jisi Liu68e13f42015-10-22 11:13:14 -0700950 data = glob([
951 "src/google/protobuf/**/*",
952 ]),
Jisi Liu993fb702015-10-19 17:19:49 -0700953 modules = [
954 "descriptor_database_test",
955 "descriptor_pool_test",
956 "descriptor_test",
957 "generator_test",
958 "json_format_test",
959 "message_factory_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700960 "message_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700961 "proto_builder_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700962 "reflection_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700963 "service_reflection_test",
964 "symbol_database_test",
965 "text_encoding_test",
Jisi Liu68e13f42015-10-22 11:13:14 -0700966 "text_format_test",
Jisi Liu993fb702015-10-19 17:19:49 -0700967 "unknown_fields_test",
968 "wire_format_test",
969 ],
970 deps = [":python_tests"],
971)
cgrushko45d92ae2016-12-02 19:40:50 -0500972
Thomas Colthurst7c651422018-05-29 18:26:11 -0400973cc_library(
974 name = "proto_api",
975 hdrs = ["python/google/protobuf/proto_api.h"],
976 deps = [
Thomas Colthurst7c651422018-05-29 18:26:11 -0400977 "//external:python_headers",
978 ],
Cory McLeanb7d3ec32018-06-11 12:18:45 -0400979 visibility = ["//visibility:public"],
Thomas Colthurst7c651422018-05-29 18:26:11 -0400980)
981
cgrushko45d92ae2016-12-02 19:40:50 -0500982proto_lang_toolchain(
Manjunath Kudlur2d430f82017-02-23 08:17:24 -0800983 name = "cc_toolchain",
984 command_line = "--cpp_out=$(OUT)",
985 runtime = ":protobuf",
986 visibility = ["//visibility:public"],
John Millikin350b1352018-02-24 11:36:49 -0800987 blacklisted_protos = [":_internal_wkt_protos_genrule"],
cgrushko45d92ae2016-12-02 19:40:50 -0500988)
cgrushkoe4baf3f2017-01-12 12:51:04 -0500989
990proto_lang_toolchain(
991 name = "java_toolchain",
992 command_line = "--java_out=$(OUT)",
993 runtime = ":protobuf_java",
994 visibility = ["//visibility:public"],
995)
makdharma286f0592017-05-01 09:49:26 -0700996
Thomas Van Lenten18aa2962018-11-01 09:37:14 -0400997alias(
998 name = "objectivec",
999 actual = ":protobuf_objc",
1000 visibility = ["//visibility:public"],
1001)
makdharma286f0592017-05-01 09:49:26 -07001002
1003objc_library(
Thomas Van Lenten18aa2962018-11-01 09:37:14 -04001004 name = "protobuf_objc",
1005 hdrs = [
1006 "objectivec/GPBArray.h",
1007 "objectivec/GPBBootstrap.h",
1008 "objectivec/GPBCodedInputStream.h",
1009 "objectivec/GPBCodedOutputStream.h",
1010 "objectivec/GPBDescriptor.h",
1011 "objectivec/GPBDictionary.h",
1012 "objectivec/GPBExtensionInternals.h",
1013 "objectivec/GPBExtensionRegistry.h",
1014 "objectivec/GPBMessage.h",
1015 "objectivec/GPBProtocolBuffers.h",
1016 "objectivec/GPBProtocolBuffers_RuntimeSupport.h",
1017 "objectivec/GPBRootObject.h",
1018 "objectivec/GPBRuntimeTypes.h",
1019 "objectivec/GPBUnknownField.h",
1020 "objectivec/GPBUnknownFieldSet.h",
1021 "objectivec/GPBUtilities.h",
1022 "objectivec/GPBWellKnownTypes.h",
1023 "objectivec/GPBWireFormat.h",
1024 "objectivec/google/protobuf/Any.pbobjc.h",
1025 "objectivec/google/protobuf/Api.pbobjc.h",
1026 "objectivec/google/protobuf/Duration.pbobjc.h",
1027 "objectivec/google/protobuf/Empty.pbobjc.h",
1028 "objectivec/google/protobuf/FieldMask.pbobjc.h",
1029 "objectivec/google/protobuf/SourceContext.pbobjc.h",
1030 "objectivec/google/protobuf/Struct.pbobjc.h",
1031 "objectivec/google/protobuf/Timestamp.pbobjc.h",
1032 "objectivec/google/protobuf/Type.pbobjc.h",
1033 "objectivec/google/protobuf/Wrappers.pbobjc.h",
1034 # Package private headers, but exposed because the generated sources
1035 # need to use them.
1036 "objectivec/GPBArray_PackagePrivate.h",
1037 "objectivec/GPBCodedInputStream_PackagePrivate.h",
1038 "objectivec/GPBCodedOutputStream_PackagePrivate.h",
1039 "objectivec/GPBDescriptor_PackagePrivate.h",
1040 "objectivec/GPBDictionary_PackagePrivate.h",
1041 "objectivec/GPBMessage_PackagePrivate.h",
1042 "objectivec/GPBRootObject_PackagePrivate.h",
1043 "objectivec/GPBUnknownFieldSet_PackagePrivate.h",
1044 "objectivec/GPBUnknownField_PackagePrivate.h",
1045 "objectivec/GPBUtilities_PackagePrivate.h",
1046 ],
Benjamin Barenblat048f5c22018-07-11 13:20:01 -04001047 copts = [
1048 "-Wno-vla",
1049 ],
makdharma286f0592017-05-01 09:49:26 -07001050 includes = [
1051 "objectivec",
1052 ],
Thomas Van Lenten18aa2962018-11-01 09:37:14 -04001053 non_arc_srcs = [
1054 "objectivec/GPBArray.m",
1055 "objectivec/GPBCodedInputStream.m",
1056 "objectivec/GPBCodedOutputStream.m",
1057 "objectivec/GPBDescriptor.m",
1058 "objectivec/GPBDictionary.m",
1059 "objectivec/GPBExtensionInternals.m",
1060 "objectivec/GPBExtensionRegistry.m",
1061 "objectivec/GPBMessage.m",
1062 "objectivec/GPBRootObject.m",
1063 "objectivec/GPBUnknownField.m",
1064 "objectivec/GPBUnknownFieldSet.m",
1065 "objectivec/GPBUtilities.m",
1066 "objectivec/GPBWellKnownTypes.m",
1067 "objectivec/GPBWireFormat.m",
1068 "objectivec/google/protobuf/Any.pbobjc.m",
1069 "objectivec/google/protobuf/Api.pbobjc.m",
1070 "objectivec/google/protobuf/Duration.pbobjc.m",
1071 "objectivec/google/protobuf/Empty.pbobjc.m",
1072 "objectivec/google/protobuf/FieldMask.pbobjc.m",
1073 "objectivec/google/protobuf/SourceContext.pbobjc.m",
1074 "objectivec/google/protobuf/Struct.pbobjc.m",
1075 "objectivec/google/protobuf/Timestamp.pbobjc.m",
1076 "objectivec/google/protobuf/Type.pbobjc.m",
1077 "objectivec/google/protobuf/Wrappers.pbobjc.m",
1078 ],
makdharma286f0592017-05-01 09:49:26 -07001079 visibility = ["//visibility:public"],
1080)
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001081
1082################################################################################
1083# Test generated proto support
1084################################################################################
1085
1086genrule(
1087 name = "generated_protos",
1088 srcs = ["src/google/protobuf/unittest_import.proto"],
1089 outs = ["unittest_gen.proto"],
1090 cmd = "cat $(SRCS) | sed 's|google/|src/google/|' > $(OUTS)"
1091)
1092
1093proto_library(
1094 name = "generated_protos_proto",
Fahrzin Hemmati55962db2018-05-07 17:36:34 -07001095 srcs = [
1096 "unittest_gen.proto",
1097 "src/google/protobuf/unittest_import_public.proto",
1098 ],
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001099)
1100
Fahrzin Hemmati0d68b292018-03-26 19:08:26 -07001101py_proto_library(
1102 name = "generated_protos_py",
1103 srcs = [
1104 "unittest_gen.proto",
1105 "src/google/protobuf/unittest_import_public.proto",
1106 ],
1107 default_runtime = "",
1108 protoc = ":protoc",
1109)
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001110
1111################################################################################
1112# Conformance tests
1113################################################################################
1114
1115proto_library(
1116 name = "test_messages_proto2_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001117 srcs = ["src/google/protobuf/test_messages_proto2.proto"],
Josh Haberman25feb592018-11-03 14:43:20 -07001118 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001119)
1120
1121proto_library(
1122 name = "test_messages_proto3_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001123 srcs = ["src/google/protobuf/test_messages_proto3.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001124 deps = [
1125 ":any_proto",
1126 ":duration_proto",
1127 ":field_mask_proto",
1128 ":struct_proto",
1129 ":timestamp_proto",
1130 ":wrappers_proto",
1131 ],
Josh Haberman25feb592018-11-03 14:43:20 -07001132 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001133)
1134
1135cc_proto_library(
1136 name = "test_messages_proto2_proto_cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001137 srcs = ["src/google/protobuf/test_messages_proto2.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001138)
1139
1140cc_proto_library(
1141 name = "test_messages_proto3_proto_cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001142 srcs = ["src/google/protobuf/test_messages_proto3.proto"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001143 deps = [
1144 ":cc_wkt_protos",
1145 ],
1146)
1147
1148proto_library(
1149 name = "conformance_proto",
Joshua Haberman2996da42019-05-13 07:45:30 -07001150 srcs = ["conformance/conformance.proto"],
Josh Haberman25feb592018-11-03 14:43:20 -07001151 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001152)
1153
1154cc_proto_library(
1155 name = "conformance_proto_cc",
1156 srcs = ["conformance/conformance.proto"],
1157)
1158
1159cc_library(
1160 name = "jsoncpp",
1161 hdrs = ["conformance/third_party/jsoncpp/json.h"],
1162 srcs = ["conformance/third_party/jsoncpp/jsoncpp.cpp"],
1163 includes = ["conformance"],
1164)
1165
1166cc_library(
1167 name = "conformance_test",
1168 srcs = [
1169 "conformance/conformance_test.cc",
Joshua Haberman2996da42019-05-13 07:45:30 -07001170 "conformance/conformance_test_runner.cc",
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001171 ],
1172 hdrs = [
1173 "conformance/conformance_test.h",
1174 ],
Joshua Haberman2996da42019-05-13 07:45:30 -07001175 deps = [":conformance_proto_cc"],
1176 includes = ["conformance", "src"],
1177)
1178
1179cc_library(
1180 name = "binary_json_conformance_suite",
1181 srcs = ["conformance/binary_json_conformance_suite.cc"],
1182 hdrs = ["conformance/binary_json_conformance_suite.h"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001183 deps = [
Joshua Haberman2996da42019-05-13 07:45:30 -07001184 ":conformance_test",
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001185 ":jsoncpp",
1186 ":test_messages_proto2_proto_cc",
1187 ":test_messages_proto3_proto_cc",
1188 ],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001189)
1190
Joshua Haberman2996da42019-05-13 07:45:30 -07001191cc_library(
1192 name = "text_format_conformance_suite",
1193 srcs = ["conformance/text_format_conformance_suite.cc"],
1194 hdrs = ["conformance/text_format_conformance_suite.h"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001195 deps = [
1196 ":conformance_test",
Joshua Haberman2996da42019-05-13 07:45:30 -07001197 ":test_messages_proto2_proto_cc",
1198 ":test_messages_proto3_proto_cc",
1199 ],
1200)
1201
Joshua Habermanc659a4a2019-05-14 14:01:16 -07001202cc_binary(
Joshua Haberman2996da42019-05-13 07:45:30 -07001203 name = "conformance_test_runner",
1204 srcs = ["conformance/conformance_test_main.cc"],
1205 deps = [
1206 ":binary_json_conformance_suite",
1207 ":conformance_test",
1208 ":text_format_conformance_suite",
Josh Haberman25feb592018-11-03 14:43:20 -07001209 ],
1210 visibility = ["//visibility:public"],
Josh Haberman6dec8cf2018-11-03 12:59:45 -07001211)