15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# **EXPERIMENTAL**
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See http://sebs.googlecode.com
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This is an experimental build definition file using the SEBS build system.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# I (Kenton Varda, maintainer of Protocol Buffers) happen to be the author of
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# SEBS, though SEBS is not a Google project.  I'm sticking this file in
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# protobuf's SVN because that's the easiest place for me to put it, and it
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# shouldn't harm anyone.  This file is not included in the distribution.
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Currently, to use this file, you must generate config.h and put it at the
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# top level of the source tree.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_cpp = sebs.import_("//sebs/cpp.sebs")
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ====================================================================
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Public targets
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protobuf_lite = _cpp.Library(
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name = "protobuf-lite",
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "stubs/common.cc",
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/once.cc",
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/hash.cc",
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/hash.h",
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/map-util.h",
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/stl_util-inl.h",
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "extension_set.cc",
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "generated_message_util.cc",
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "message_lite.cc",
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "repeated_field.cc",
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "wire_format_lite.cc",
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/coded_stream.cc",
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/zero_copy_stream.cc",
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/zero_copy_stream_impl_lite.cc" ],
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ _cpp.SystemLibrary(name = "pthread") ])
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protobuf = _cpp.Library(
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name = "protobuf",
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "stubs/strutil.cc",
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/strutil.h",
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/substitute.cc",
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/substitute.h",
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/structurally_valid.cc",
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "descriptor.cc",
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "descriptor.pb.cc",
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "descriptor_database.cc",
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "dynamic_message.cc",
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "extension_set_heavy.cc",
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "generated_message_reflection.cc",
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "message.cc",
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "reflection_ops.cc",
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "service.cc",
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "text_format.cc",
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unknown_field_set.cc",
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "wire_format.cc",
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/gzip_stream.cc",
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/printer.cc",
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/tokenizer.cc",
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/zero_copy_stream_impl.cc",
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/importer.cc",
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/parser.cc" ],
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ protobuf_lite,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           _cpp.SystemLibrary(name = "z") ])
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libprotoc = _cpp.Library(
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name = "protoc",
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "compiler/code_generator.cc",
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/command_line_interface.cc",
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_enum.cc",
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_enum.h",
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_enum_field.cc",
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_enum_field.h",
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_extension.cc",
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_extension.h",
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_field.cc",
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_field.h",
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_file.cc",
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_file.h",
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_generator.cc",
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_helpers.cc",
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_helpers.h",
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_message.cc",
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_message.h",
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_message_field.cc",
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_message_field.h",
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_primitive_field.cc",
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_primitive_field.h",
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_service.cc",
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_service.h",
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_string_field.cc",
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_string_field.h",
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_enum.cc",
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_enum.h",
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_enum_field.cc",
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_enum_field.h",
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_extension.cc",
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_extension.h",
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_field.cc",
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_field.h",
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_file.cc",
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_file.h",
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_generator.cc",
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_helpers.cc",
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_helpers.h",
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_message.cc",
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_message.h",
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_message_field.cc",
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_message_field.h",
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_primitive_field.cc",
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_primitive_field.h",
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_service.cc",
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/java/java_service.h",
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/python/python_generator.cc" ],
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ protobuf ])
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protoc = _cpp.Binary(
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name = "protoc",
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "compiler/main.cc" ],
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ libprotoc ])
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ====================================================================
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ProtobufLibrary rule class
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProtobufLibrary(sebs.Rule):
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  argument_spec = sebs.ArgumentSpec(srcs = [sebs.Artifact],
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    deps = ([sebs.Rule], []),
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    lite = (bool, False))
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def _expand(self, args):
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for dep in args.deps:
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if not isinstance(dep, ProtobufLibrary):
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        raise sebs.DefinitionError(
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Dependency of ProtobufLibrary is not a ProtobufLibrary: %s" % dep)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    protoc.expand_once()
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We must build protoc for the host configuration to allow cross-compiling.
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    host_protoc = self.context.configured_artifact(protoc.binary, "host")
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    protoc_action = self.context.action(self, "protobuf")
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    protoc_args = [host_protoc, "-Isrc", "-Itmp", "-Iinclude","--cpp_out=tmp"]
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cpp_srcs = []
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for src in args.srcs:
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      protoc_args.append(src)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # We cannot build .proto files from other packages because the .pb.cc
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # and .pb.h files would be written to that package, and we aren't allowed
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # to write to other packages.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if self.context.local_filename(src) is None:
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        raise sebs.DefinitionError(
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Source file is not in this package: %s" % src)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cc_artifact = self.context.derived_artifact(src, ".pb.cc", protoc_action)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      header_artifact = self.context.derived_artifact(
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          src, ".pb.h", protoc_action)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cpp_srcs.append(cc_artifact)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cpp_srcs.append(header_artifact)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    protoc_action.set_command(
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      sebs.SubprocessCommand(protoc_action, protoc_args, implicit = cpp_srcs))
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deps = list(args.deps)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if args.lite:
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deps.append(protobuf_lite)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else:
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deps.append(protobuf)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.__cpp_library = _cpp.Library(srcs = cpp_srcs, deps = deps,
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      context = self.context)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.__cpp_library.label = self.label
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.outputs = []
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def as_cpp_library(self):
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.expand_once()
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return self.__cpp_library
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ====================================================================
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Tests
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_lite_test_protos = ProtobufLibrary(
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "unittest_lite.proto",
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_import_lite.proto" ],
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lite = True)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_test_protos = ProtobufLibrary(
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "unittest.proto",
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_empty.proto",
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_import.proto",
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_mset.proto",
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_optimize_for.proto",
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_embed_optimize_for.proto",
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_custom_options.proto",
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unittest_lite_imports_nonlite.proto",
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_test_bad_identifiers.proto" ],
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ _lite_test_protos ])
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_test_util = _cpp.Library(
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name = "test_util",
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "test_util.cc",
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "test_util.h",
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "testing/googletest.cc",
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "testing/googletest.h",
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "testing/file.cc",
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "testing/file.h" ],
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ protobuf, _test_protos, _cpp.SystemLibrary(name = "gtest")] )
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protobuf_lite_test = _cpp.Test(
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "lite_unittest.cc",
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "test_util_lite.cc",
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "test_util_lite.h" ],
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ _lite_test_protos ])
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protobuf_test = _cpp.Test(
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  srcs = [ "stubs/common_unittest.cc",
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/once_unittest.cc",
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/strutil_unittest.cc",
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "stubs/structurally_valid_unittest.cc",
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "descriptor_database_unittest.cc",
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "descriptor_unittest.cc",
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "dynamic_message_unittest.cc",
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "extension_set_unittest.cc",
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "generated_message_reflection_unittest.cc",
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "message_unittest.cc",
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "reflection_ops_unittest.cc",
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "repeated_field_unittest.cc",
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "text_format_unittest.cc",
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "unknown_field_set_unittest.cc",
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "wire_format_unittest.cc",
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/coded_stream_unittest.cc",
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/printer_unittest.cc",
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/tokenizer_unittest.cc",
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "io/zero_copy_stream_unittest.cc",
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/command_line_interface_unittest.cc",
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/importer_unittest.cc",
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/parser_unittest.cc",
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_bootstrap_unittest.cc",
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           "compiler/cpp/cpp_unittest.cc" ],
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  deps = [ protobuf, libprotoc, _test_util,
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           _cpp.SystemLibrary(name = "gtest_main") ])
241