1 # Bazel (http://bazel.io/) BUILD file for Protobuf. 2 3 licenses(["notice"]) 4 5 ################################################################################ 6 # Protobuf Runtime Library 7 ################################################################################ 8 9 COPTS = [ 10 "-DHAVE_PTHREAD", 11 "-Wall", 12 "-Wwrite-strings", 13 "-Woverloaded-virtual", 14 "-Wno-sign-compare", 15 "-Wno-error=unused-function", 16 ] 17 18 config_setting( 19 name = "android", 20 values = { 21 "crosstool_top": "//external:android/crosstool", 22 }, 23 ) 24 25 # Android builds do not need to link in a separate pthread library. 26 LINK_OPTS = select({ 27 ":android": [], 28 "//conditions:default": ["-lpthread"], 29 }) 30 31 load( 32 "protobuf", 33 "cc_proto_library", 34 "py_proto_library", 35 "internal_gen_well_known_protos_java", 36 "internal_protobuf_py_tests", 37 ) 38 39 config_setting( 40 name = "ios_armv7", 41 values = { 42 "ios_cpu": "armv7", 43 }, 44 ) 45 46 config_setting( 47 name = "ios_armv7s", 48 values = { 49 "ios_cpu": "armv7s", 50 }, 51 ) 52 53 config_setting( 54 name = "ios_arm64", 55 values = { 56 "ios_cpu": "arm64", 57 }, 58 ) 59 60 IOS_ARM_COPTS = COPTS + [ 61 "-DOS_IOS", 62 "-miphoneos-version-min=7.0", 63 "-arch armv7", 64 "-arch armv7s", 65 "-arch arm64", 66 "-D__thread=", 67 "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/", 68 ] 69 70 cc_library( 71 name = "protobuf_lite", 72 srcs = [ 73 # AUTOGEN(protobuf_lite_srcs) 74 "src/google/protobuf/arena.cc", 75 "src/google/protobuf/arenastring.cc", 76 "src/google/protobuf/extension_set.cc", 77 "src/google/protobuf/generated_message_util.cc", 78 "src/google/protobuf/io/coded_stream.cc", 79 "src/google/protobuf/io/zero_copy_stream.cc", 80 "src/google/protobuf/io/zero_copy_stream_impl_lite.cc", 81 "src/google/protobuf/message_lite.cc", 82 "src/google/protobuf/repeated_field.cc", 83 "src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc", 84 "src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc", 85 "src/google/protobuf/stubs/bytestream.cc", 86 "src/google/protobuf/stubs/common.cc", 87 "src/google/protobuf/stubs/int128.cc", 88 "src/google/protobuf/stubs/once.cc", 89 "src/google/protobuf/stubs/status.cc", 90 "src/google/protobuf/stubs/statusor.cc", 91 "src/google/protobuf/stubs/stringpiece.cc", 92 "src/google/protobuf/stubs/stringprintf.cc", 93 "src/google/protobuf/stubs/structurally_valid.cc", 94 "src/google/protobuf/stubs/strutil.cc", 95 "src/google/protobuf/stubs/time.cc", 96 "src/google/protobuf/wire_format_lite.cc", 97 ], 98 hdrs = glob(["src/google/protobuf/**/*.h"]), 99 copts = select({ 100 ":ios_armv7": IOS_ARM_COPTS, 101 ":ios_armv7s": IOS_ARM_COPTS, 102 ":ios_arm64": IOS_ARM_COPTS, 103 "//conditions:default": COPTS, 104 }), 105 includes = ["src/"], 106 linkopts = LINK_OPTS, 107 visibility = ["//visibility:public"], 108 ) 109 110 cc_library( 111 name = "protobuf", 112 srcs = [ 113 # AUTOGEN(protobuf_srcs) 114 "src/google/protobuf/any.cc", 115 "src/google/protobuf/any.pb.cc", 116 "src/google/protobuf/api.pb.cc", 117 "src/google/protobuf/compiler/importer.cc", 118 "src/google/protobuf/compiler/parser.cc", 119 "src/google/protobuf/descriptor.cc", 120 "src/google/protobuf/descriptor.pb.cc", 121 "src/google/protobuf/descriptor_database.cc", 122 "src/google/protobuf/duration.pb.cc", 123 "src/google/protobuf/dynamic_message.cc", 124 "src/google/protobuf/empty.pb.cc", 125 "src/google/protobuf/extension_set_heavy.cc", 126 "src/google/protobuf/field_mask.pb.cc", 127 "src/google/protobuf/generated_message_reflection.cc", 128 "src/google/protobuf/io/gzip_stream.cc", 129 "src/google/protobuf/io/printer.cc", 130 "src/google/protobuf/io/strtod.cc", 131 "src/google/protobuf/io/tokenizer.cc", 132 "src/google/protobuf/io/zero_copy_stream_impl.cc", 133 "src/google/protobuf/map_field.cc", 134 "src/google/protobuf/message.cc", 135 "src/google/protobuf/reflection_ops.cc", 136 "src/google/protobuf/service.cc", 137 "src/google/protobuf/source_context.pb.cc", 138 "src/google/protobuf/struct.pb.cc", 139 "src/google/protobuf/stubs/mathlimits.cc", 140 "src/google/protobuf/stubs/substitute.cc", 141 "src/google/protobuf/text_format.cc", 142 "src/google/protobuf/timestamp.pb.cc", 143 "src/google/protobuf/type.pb.cc", 144 "src/google/protobuf/unknown_field_set.cc", 145 "src/google/protobuf/util/field_comparator.cc", 146 "src/google/protobuf/util/field_mask_util.cc", 147 "src/google/protobuf/util/internal/datapiece.cc", 148 "src/google/protobuf/util/internal/default_value_objectwriter.cc", 149 "src/google/protobuf/util/internal/error_listener.cc", 150 "src/google/protobuf/util/internal/field_mask_utility.cc", 151 "src/google/protobuf/util/internal/json_escaping.cc", 152 "src/google/protobuf/util/internal/json_objectwriter.cc", 153 "src/google/protobuf/util/internal/json_stream_parser.cc", 154 "src/google/protobuf/util/internal/object_writer.cc", 155 "src/google/protobuf/util/internal/proto_writer.cc", 156 "src/google/protobuf/util/internal/protostream_objectsource.cc", 157 "src/google/protobuf/util/internal/protostream_objectwriter.cc", 158 "src/google/protobuf/util/internal/type_info.cc", 159 "src/google/protobuf/util/internal/type_info_test_helper.cc", 160 "src/google/protobuf/util/internal/utility.cc", 161 "src/google/protobuf/util/json_util.cc", 162 "src/google/protobuf/util/message_differencer.cc", 163 "src/google/protobuf/util/time_util.cc", 164 "src/google/protobuf/util/type_resolver_util.cc", 165 "src/google/protobuf/wire_format.cc", 166 "src/google/protobuf/wrappers.pb.cc", 167 ], 168 hdrs = glob(["src/**/*.h"]), 169 copts = select({ 170 ":ios_armv7": IOS_ARM_COPTS, 171 ":ios_armv7s": IOS_ARM_COPTS, 172 ":ios_arm64": IOS_ARM_COPTS, 173 "//conditions:default": COPTS, 174 }), 175 includes = ["src/"], 176 linkopts = LINK_OPTS, 177 visibility = ["//visibility:public"], 178 deps = [":protobuf_lite"], 179 ) 180 181 objc_library( 182 name = "protobuf_objc", 183 hdrs = ["objectivec/GPBProtocolBuffers.h"], 184 includes = ["objectivec"], 185 non_arc_srcs = ["objectivec/GPBProtocolBuffers.m"], 186 visibility = ["//visibility:public"], 187 ) 188 189 RELATIVE_WELL_KNOWN_PROTOS = [ 190 # AUTOGEN(well_known_protos) 191 "google/protobuf/any.proto", 192 "google/protobuf/api.proto", 193 "google/protobuf/compiler/plugin.proto", 194 "google/protobuf/descriptor.proto", 195 "google/protobuf/duration.proto", 196 "google/protobuf/empty.proto", 197 "google/protobuf/field_mask.proto", 198 "google/protobuf/source_context.proto", 199 "google/protobuf/struct.proto", 200 "google/protobuf/timestamp.proto", 201 "google/protobuf/type.proto", 202 "google/protobuf/wrappers.proto", 203 ] 204 205 WELL_KNOWN_PROTOS = ["src/" + s for s in RELATIVE_WELL_KNOWN_PROTOS] 206 207 filegroup( 208 name = "well_known_protos", 209 srcs = WELL_KNOWN_PROTOS, 210 visibility = ["//visibility:public"], 211 ) 212 213 cc_proto_library( 214 name = "cc_wkt_protos", 215 srcs = WELL_KNOWN_PROTOS, 216 include = "src", 217 default_runtime = ":protobuf", 218 internal_bootstrap_hack = 1, 219 protoc = ":protoc", 220 visibility = ["//visibility:public"], 221 ) 222 223 ################################################################################ 224 # Protocol Buffers Compiler 225 ################################################################################ 226 227 cc_library( 228 name = "protoc_lib", 229 srcs = [ 230 # AUTOGEN(protoc_lib_srcs) 231 "src/google/protobuf/compiler/code_generator.cc", 232 "src/google/protobuf/compiler/command_line_interface.cc", 233 "src/google/protobuf/compiler/cpp/cpp_enum.cc", 234 "src/google/protobuf/compiler/cpp/cpp_enum_field.cc", 235 "src/google/protobuf/compiler/cpp/cpp_extension.cc", 236 "src/google/protobuf/compiler/cpp/cpp_field.cc", 237 "src/google/protobuf/compiler/cpp/cpp_file.cc", 238 "src/google/protobuf/compiler/cpp/cpp_generator.cc", 239 "src/google/protobuf/compiler/cpp/cpp_helpers.cc", 240 "src/google/protobuf/compiler/cpp/cpp_map_field.cc", 241 "src/google/protobuf/compiler/cpp/cpp_message.cc", 242 "src/google/protobuf/compiler/cpp/cpp_message_field.cc", 243 "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc", 244 "src/google/protobuf/compiler/cpp/cpp_service.cc", 245 "src/google/protobuf/compiler/cpp/cpp_string_field.cc", 246 "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", 247 "src/google/protobuf/compiler/csharp/csharp_enum.cc", 248 "src/google/protobuf/compiler/csharp/csharp_enum_field.cc", 249 "src/google/protobuf/compiler/csharp/csharp_field_base.cc", 250 "src/google/protobuf/compiler/csharp/csharp_generator.cc", 251 "src/google/protobuf/compiler/csharp/csharp_helpers.cc", 252 "src/google/protobuf/compiler/csharp/csharp_map_field.cc", 253 "src/google/protobuf/compiler/csharp/csharp_message.cc", 254 "src/google/protobuf/compiler/csharp/csharp_message_field.cc", 255 "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", 256 "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", 257 "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", 258 "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", 259 "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", 260 "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", 261 "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", 262 "src/google/protobuf/compiler/java/java_context.cc", 263 "src/google/protobuf/compiler/java/java_doc_comment.cc", 264 "src/google/protobuf/compiler/java/java_enum.cc", 265 "src/google/protobuf/compiler/java/java_enum_field.cc", 266 "src/google/protobuf/compiler/java/java_enum_field_lite.cc", 267 "src/google/protobuf/compiler/java/java_enum_lite.cc", 268 "src/google/protobuf/compiler/java/java_extension.cc", 269 "src/google/protobuf/compiler/java/java_extension_lite.cc", 270 "src/google/protobuf/compiler/java/java_field.cc", 271 "src/google/protobuf/compiler/java/java_file.cc", 272 "src/google/protobuf/compiler/java/java_generator.cc", 273 "src/google/protobuf/compiler/java/java_generator_factory.cc", 274 "src/google/protobuf/compiler/java/java_helpers.cc", 275 "src/google/protobuf/compiler/java/java_lazy_message_field.cc", 276 "src/google/protobuf/compiler/java/java_lazy_message_field_lite.cc", 277 "src/google/protobuf/compiler/java/java_map_field.cc", 278 "src/google/protobuf/compiler/java/java_map_field_lite.cc", 279 "src/google/protobuf/compiler/java/java_message.cc", 280 "src/google/protobuf/compiler/java/java_message_builder.cc", 281 "src/google/protobuf/compiler/java/java_message_builder_lite.cc", 282 "src/google/protobuf/compiler/java/java_message_field.cc", 283 "src/google/protobuf/compiler/java/java_message_field_lite.cc", 284 "src/google/protobuf/compiler/java/java_message_lite.cc", 285 "src/google/protobuf/compiler/java/java_name_resolver.cc", 286 "src/google/protobuf/compiler/java/java_primitive_field.cc", 287 "src/google/protobuf/compiler/java/java_primitive_field_lite.cc", 288 "src/google/protobuf/compiler/java/java_service.cc", 289 "src/google/protobuf/compiler/java/java_shared_code_generator.cc", 290 "src/google/protobuf/compiler/java/java_string_field.cc", 291 "src/google/protobuf/compiler/java/java_string_field_lite.cc", 292 "src/google/protobuf/compiler/javanano/javanano_enum.cc", 293 "src/google/protobuf/compiler/javanano/javanano_enum_field.cc", 294 "src/google/protobuf/compiler/javanano/javanano_extension.cc", 295 "src/google/protobuf/compiler/javanano/javanano_field.cc", 296 "src/google/protobuf/compiler/javanano/javanano_file.cc", 297 "src/google/protobuf/compiler/javanano/javanano_generator.cc", 298 "src/google/protobuf/compiler/javanano/javanano_helpers.cc", 299 "src/google/protobuf/compiler/javanano/javanano_map_field.cc", 300 "src/google/protobuf/compiler/javanano/javanano_message.cc", 301 "src/google/protobuf/compiler/javanano/javanano_message_field.cc", 302 "src/google/protobuf/compiler/javanano/javanano_primitive_field.cc", 303 "src/google/protobuf/compiler/js/js_generator.cc", 304 "src/google/protobuf/compiler/objectivec/objectivec_enum.cc", 305 "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc", 306 "src/google/protobuf/compiler/objectivec/objectivec_extension.cc", 307 "src/google/protobuf/compiler/objectivec/objectivec_field.cc", 308 "src/google/protobuf/compiler/objectivec/objectivec_file.cc", 309 "src/google/protobuf/compiler/objectivec/objectivec_generator.cc", 310 "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc", 311 "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc", 312 "src/google/protobuf/compiler/objectivec/objectivec_message.cc", 313 "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc", 314 "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc", 315 "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc", 316 "src/google/protobuf/compiler/plugin.cc", 317 "src/google/protobuf/compiler/plugin.pb.cc", 318 "src/google/protobuf/compiler/python/python_generator.cc", 319 "src/google/protobuf/compiler/ruby/ruby_generator.cc", 320 "src/google/protobuf/compiler/subprocess.cc", 321 "src/google/protobuf/compiler/zip_writer.cc", 322 ], 323 copts = COPTS, 324 includes = ["src/"], 325 linkopts = LINK_OPTS, 326 visibility = ["//visibility:public"], 327 deps = [":protobuf"], 328 ) 329 330 cc_binary( 331 name = "protoc", 332 srcs = ["src/google/protobuf/compiler/main.cc"], 333 linkopts = LINK_OPTS, 334 visibility = ["//visibility:public"], 335 deps = [":protoc_lib"], 336 ) 337 338 ################################################################################ 339 # Tests 340 ################################################################################ 341 342 RELATIVE_LITE_TEST_PROTOS = [ 343 # AUTOGEN(lite_test_protos) 344 "google/protobuf/map_lite_unittest.proto", 345 "google/protobuf/unittest_import_lite.proto", 346 "google/protobuf/unittest_import_public_lite.proto", 347 "google/protobuf/unittest_lite.proto", 348 "google/protobuf/unittest_no_arena_lite.proto", 349 ] 350 351 LITE_TEST_PROTOS = ["src/" + s for s in RELATIVE_LITE_TEST_PROTOS] 352 353 RELATIVE_TEST_PROTOS = [ 354 # AUTOGEN(test_protos) 355 "google/protobuf/any_test.proto", 356 "google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto", 357 "google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto", 358 "google/protobuf/map_proto2_unittest.proto", 359 "google/protobuf/map_unittest.proto", 360 "google/protobuf/unittest.proto", 361 "google/protobuf/unittest_arena.proto", 362 "google/protobuf/unittest_custom_options.proto", 363 "google/protobuf/unittest_drop_unknown_fields.proto", 364 "google/protobuf/unittest_embed_optimize_for.proto", 365 "google/protobuf/unittest_empty.proto", 366 "google/protobuf/unittest_enormous_descriptor.proto", 367 "google/protobuf/unittest_import.proto", 368 "google/protobuf/unittest_import_public.proto", 369 "google/protobuf/unittest_lite_imports_nonlite.proto", 370 "google/protobuf/unittest_mset.proto", 371 "google/protobuf/unittest_mset_wire_format.proto", 372 "google/protobuf/unittest_no_arena.proto", 373 "google/protobuf/unittest_no_arena_import.proto", 374 "google/protobuf/unittest_no_field_presence.proto", 375 "google/protobuf/unittest_no_generic_services.proto", 376 "google/protobuf/unittest_optimize_for.proto", 377 "google/protobuf/unittest_preserve_unknown_enum.proto", 378 "google/protobuf/unittest_preserve_unknown_enum2.proto", 379 "google/protobuf/unittest_proto3_arena.proto", 380 "google/protobuf/unittest_proto3_arena_lite.proto", 381 "google/protobuf/unittest_proto3_lite.proto", 382 "google/protobuf/unittest_well_known_types.proto", 383 "google/protobuf/util/internal/testdata/anys.proto", 384 "google/protobuf/util/internal/testdata/books.proto", 385 "google/protobuf/util/internal/testdata/default_value.proto", 386 "google/protobuf/util/internal/testdata/default_value_test.proto", 387 "google/protobuf/util/internal/testdata/field_mask.proto", 388 "google/protobuf/util/internal/testdata/maps.proto", 389 "google/protobuf/util/internal/testdata/oneofs.proto", 390 "google/protobuf/util/internal/testdata/struct.proto", 391 "google/protobuf/util/internal/testdata/timestamp_duration.proto", 392 "google/protobuf/util/json_format_proto3.proto", 393 "google/protobuf/util/message_differencer_unittest.proto", 394 ] 395 396 TEST_PROTOS = ["src/" + s for s in RELATIVE_TEST_PROTOS] 397 398 cc_proto_library( 399 name = "cc_test_protos", 400 srcs = LITE_TEST_PROTOS + TEST_PROTOS, 401 include = "src", 402 default_runtime = ":protobuf", 403 protoc = ":protoc", 404 deps = [":cc_wkt_protos"], 405 ) 406 407 COMMON_TEST_SRCS = [ 408 # AUTOGEN(common_test_srcs) 409 "src/google/protobuf/arena_test_util.cc", 410 "src/google/protobuf/map_test_util.cc", 411 "src/google/protobuf/test_util.cc", 412 "src/google/protobuf/testing/file.cc", 413 "src/google/protobuf/testing/googletest.cc", 414 ] 415 416 cc_binary( 417 name = "test_plugin", 418 srcs = [ 419 # AUTOGEN(test_plugin_srcs) 420 "src/google/protobuf/compiler/mock_code_generator.cc", 421 "src/google/protobuf/compiler/test_plugin.cc", 422 "src/google/protobuf/testing/file.cc", 423 ], 424 deps = [ 425 ":protobuf", 426 ":protoc_lib", 427 "//external:gtest", 428 ], 429 ) 430 431 cc_test( 432 name = "protobuf_test", 433 srcs = COMMON_TEST_SRCS + [ 434 # AUTOGEN(test_srcs) 435 "src/google/protobuf/any_test.cc", 436 "src/google/protobuf/arena_unittest.cc", 437 "src/google/protobuf/arenastring_unittest.cc", 438 "src/google/protobuf/compiler/command_line_interface_unittest.cc", 439 "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc", 440 "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc", 441 "src/google/protobuf/compiler/cpp/cpp_unittest.cc", 442 "src/google/protobuf/compiler/cpp/metadata_test.cc", 443 "src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc", 444 "src/google/protobuf/compiler/importer_unittest.cc", 445 "src/google/protobuf/compiler/java/java_doc_comment_unittest.cc", 446 "src/google/protobuf/compiler/java/java_plugin_unittest.cc", 447 "src/google/protobuf/compiler/mock_code_generator.cc", 448 "src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc", 449 "src/google/protobuf/compiler/parser_unittest.cc", 450 "src/google/protobuf/compiler/python/python_plugin_unittest.cc", 451 "src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc", 452 "src/google/protobuf/descriptor_database_unittest.cc", 453 "src/google/protobuf/descriptor_unittest.cc", 454 "src/google/protobuf/drop_unknown_fields_test.cc", 455 "src/google/protobuf/dynamic_message_unittest.cc", 456 "src/google/protobuf/extension_set_unittest.cc", 457 "src/google/protobuf/generated_message_reflection_unittest.cc", 458 "src/google/protobuf/io/coded_stream_unittest.cc", 459 "src/google/protobuf/io/printer_unittest.cc", 460 "src/google/protobuf/io/tokenizer_unittest.cc", 461 "src/google/protobuf/io/zero_copy_stream_unittest.cc", 462 "src/google/protobuf/map_field_test.cc", 463 "src/google/protobuf/map_test.cc", 464 "src/google/protobuf/message_unittest.cc", 465 "src/google/protobuf/no_field_presence_test.cc", 466 "src/google/protobuf/preserve_unknown_enum_test.cc", 467 "src/google/protobuf/proto3_arena_lite_unittest.cc", 468 "src/google/protobuf/proto3_arena_unittest.cc", 469 "src/google/protobuf/proto3_lite_unittest.cc", 470 "src/google/protobuf/reflection_ops_unittest.cc", 471 "src/google/protobuf/repeated_field_reflection_unittest.cc", 472 "src/google/protobuf/repeated_field_unittest.cc", 473 "src/google/protobuf/stubs/bytestream_unittest.cc", 474 "src/google/protobuf/stubs/common_unittest.cc", 475 "src/google/protobuf/stubs/int128_unittest.cc", 476 "src/google/protobuf/stubs/once_unittest.cc", 477 "src/google/protobuf/stubs/status_test.cc", 478 "src/google/protobuf/stubs/statusor_test.cc", 479 "src/google/protobuf/stubs/stringpiece_unittest.cc", 480 "src/google/protobuf/stubs/stringprintf_unittest.cc", 481 "src/google/protobuf/stubs/structurally_valid_unittest.cc", 482 "src/google/protobuf/stubs/strutil_unittest.cc", 483 "src/google/protobuf/stubs/template_util_unittest.cc", 484 "src/google/protobuf/stubs/time_test.cc", 485 "src/google/protobuf/stubs/type_traits_unittest.cc", 486 "src/google/protobuf/text_format_unittest.cc", 487 "src/google/protobuf/unknown_field_set_unittest.cc", 488 "src/google/protobuf/util/field_comparator_test.cc", 489 "src/google/protobuf/util/field_mask_util_test.cc", 490 "src/google/protobuf/util/internal/default_value_objectwriter_test.cc", 491 "src/google/protobuf/util/internal/json_objectwriter_test.cc", 492 "src/google/protobuf/util/internal/json_stream_parser_test.cc", 493 "src/google/protobuf/util/internal/protostream_objectsource_test.cc", 494 "src/google/protobuf/util/internal/protostream_objectwriter_test.cc", 495 "src/google/protobuf/util/internal/type_info_test_helper.cc", 496 "src/google/protobuf/util/json_util_test.cc", 497 "src/google/protobuf/util/message_differencer_unittest.cc", 498 "src/google/protobuf/util/time_util_test.cc", 499 "src/google/protobuf/util/type_resolver_util_test.cc", 500 "src/google/protobuf/well_known_types_unittest.cc", 501 "src/google/protobuf/wire_format_unittest.cc", 502 ], 503 copts = COPTS, 504 data = [ 505 ":test_plugin", 506 ] + glob([ 507 "src/google/protobuf/**/*", 508 ]), 509 includes = [ 510 "src/", 511 ], 512 linkopts = LINK_OPTS, 513 deps = [ 514 ":cc_test_protos", 515 ":protobuf", 516 ":protoc_lib", 517 "//external:gtest_main", 518 ], 519 ) 520 521 ################################################################################ 522 # Java support 523 ################################################################################ 524 internal_gen_well_known_protos_java( 525 srcs = WELL_KNOWN_PROTOS, 526 ) 527 528 java_library( 529 name = "protobuf_java", 530 srcs = glob([ 531 "java/core/src/main/java/com/google/protobuf/*.java", 532 ]) + [ 533 ":gen_well_known_protos_java", 534 ], 535 visibility = ["//visibility:public"], 536 ) 537 538 java_library( 539 name = "protobuf_java_util", 540 srcs = glob([ 541 "java/util/src/main/java/com/google/protobuf/util/*.java", 542 ]), 543 deps = [ 544 "protobuf_java", 545 "//external:gson", 546 "//external:guava", 547 ], 548 visibility = ["//visibility:public"], 549 ) 550 551 ################################################################################ 552 # Python support 553 ################################################################################ 554 555 py_library( 556 name = "python_srcs", 557 srcs = glob( 558 [ 559 "python/google/protobuf/*.py", 560 "python/google/protobuf/**/*.py", 561 ], 562 exclude = [ 563 "python/google/protobuf/internal/*_test.py", 564 "python/google/protobuf/internal/test_util.py", 565 ], 566 ), 567 srcs_version = "PY2AND3", 568 imports = ["python"], 569 ) 570 571 cc_binary( 572 name = "internal/_api_implementation.so", 573 srcs = ["python/google/protobuf/internal/api_implementation.cc"], 574 copts = COPTS + [ 575 "-DPYTHON_PROTO2_CPP_IMPL_V2", 576 ], 577 linkshared = 1, 578 linkstatic = 1, 579 deps = select({ 580 "//conditions:default": [], 581 ":use_fast_cpp_protos": ["//external:python_headers"], 582 }), 583 ) 584 585 cc_binary( 586 name = "pyext/_message.so", 587 srcs = glob([ 588 "python/google/protobuf/pyext/*.cc", 589 "python/google/protobuf/pyext/*.h", 590 ]), 591 copts = COPTS + [ 592 "-DGOOGLE_PROTOBUF_HAS_ONEOF=1", 593 ] + select({ 594 "//conditions:default": [], 595 ":allow_oversize_protos": ["-DPROTOBUF_PYTHON_ALLOW_OVERSIZE_PROTOS=1"], 596 }), 597 includes = [ 598 "python/", 599 "src/", 600 ], 601 linkshared = 1, 602 linkstatic = 1, 603 deps = [ 604 ":protobuf", 605 ] + select({ 606 "//conditions:default": [], 607 ":use_fast_cpp_protos": ["//external:python_headers"], 608 }), 609 ) 610 611 config_setting( 612 name = "use_fast_cpp_protos", 613 values = { 614 "define": "use_fast_cpp_protos=true", 615 }, 616 ) 617 618 config_setting( 619 name = "allow_oversize_protos", 620 values = { 621 "define": "allow_oversize_protos=true", 622 }, 623 ) 624 625 py_proto_library( 626 name = "protobuf_python", 627 srcs = WELL_KNOWN_PROTOS, 628 include = "src", 629 data = select({ 630 "//conditions:default": [], 631 ":use_fast_cpp_protos": [ 632 ":internal/_api_implementation.so", 633 ":pyext/_message.so", 634 ], 635 }), 636 default_runtime = "", 637 protoc = ":protoc", 638 py_libs = [ 639 ":python_srcs", 640 "//external:six" 641 ], 642 srcs_version = "PY2AND3", 643 visibility = ["//visibility:public"], 644 ) 645 646 py_proto_library( 647 name = "python_common_test_protos", 648 srcs = LITE_TEST_PROTOS + TEST_PROTOS, 649 include = "src", 650 default_runtime = "", 651 protoc = ":protoc", 652 srcs_version = "PY2AND3", 653 deps = [":protobuf_python"], 654 ) 655 656 py_proto_library( 657 name = "python_specific_test_protos", 658 srcs = glob([ 659 "python/google/protobuf/internal/*.proto", 660 "python/google/protobuf/internal/import_test_package/*.proto", 661 ]), 662 include = "python", 663 default_runtime = ":protobuf_python", 664 protoc = ":protoc", 665 srcs_version = "PY2AND3", 666 deps = [":python_common_test_protos"], 667 ) 668 669 py_library( 670 name = "python_tests", 671 srcs = glob( 672 [ 673 "python/google/protobuf/internal/*_test.py", 674 "python/google/protobuf/internal/test_util.py", 675 ], 676 ), 677 imports = ["python"], 678 srcs_version = "PY2AND3", 679 deps = [ 680 ":protobuf_python", 681 ":python_common_test_protos", 682 ":python_specific_test_protos", 683 ], 684 ) 685 686 internal_protobuf_py_tests( 687 name = "python_tests_batch", 688 data = glob([ 689 "src/google/protobuf/**/*", 690 ]), 691 modules = [ 692 "descriptor_database_test", 693 "descriptor_pool_test", 694 "descriptor_test", 695 "generator_test", 696 "json_format_test", 697 "message_factory_test", 698 "message_test", 699 "proto_builder_test", 700 "reflection_test", 701 "service_reflection_test", 702 "symbol_database_test", 703 "text_encoding_test", 704 "text_format_test", 705 "unknown_fields_test", 706 "wire_format_test", 707 ], 708 deps = [":python_tests"], 709 ) 710