diff --git a/cmake/abseil-cpp.cmake b/cmake/abseil-cpp.cmake new file mode 100644 index 0000000000..8aff9d6a23 --- /dev/null +++ b/cmake/abseil-cpp.cmake @@ -0,0 +1,31 @@ +if(TARGET absl::strings) + # If absl is included already, skip including it. + # (https://github.com/grpc/grpc/issues/29608) +elseif(protobuf_ABSL_PROVIDER STREQUAL "module") + if(NOT ABSL_ROOT_DIR) + set(ABSL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/abseil-cpp) + endif() + if(EXISTS "${ABSL_ROOT_DIR}/CMakeLists.txt") + if(protobuf_INSTALL) + # When protobuf_INSTALL is enabled and Abseil will be built as a module, + # Abseil will be installed along with protobuf for convenience. + set(ABSL_ENABLE_INSTALL ON) + endif() + add_subdirectory(${ABSL_ROOT_DIR} third_party/abseil-cpp) + else() + message(WARNING "protobuf_ABSL_PROVIDER is \"module\" but ABSL_ROOT_DIR is wrong") + endif() + if(protobuf_INSTALL AND NOT _protobuf_INSTALL_SUPPORTED_FROM_MODULE) + message(WARNING "protobuf_INSTALL will be forced to FALSE because protobuf_ABSL_PROVIDER is \"module\" and CMake version (${CMAKE_VERSION}) is less than 3.13.") + set(protobuf_INSTALL FALSE) + endif() +elseif(protobuf_ABSL_PROVIDER STREQUAL "package") + # Use "CONFIG" as there is no built-in cmake module for absl. + find_package(absl REQUIRED CONFIG) +endif() +set(_protobuf_FIND_ABSL "if(NOT TARGET absl::strings)\n find_package(absl CONFIG)\nendif()") + +set(protobuf_ABSL_USED_TARGETS + absl::strings + absl::strings_internal +) diff --git a/cmake/libprotobuf-lite.cmake b/cmake/libprotobuf-lite.cmake index 9b1de677b4..1e4444e20c 100644 --- a/cmake/libprotobuf-lite.cmake +++ b/cmake/libprotobuf-lite.cmake @@ -1,11 +1,93 @@ -# CMake definitions for libprotobuf_lite (the "lite" C++ protobuf runtime). +set(libprotobuf_lite_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/any_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/strtod.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/structurally_valid.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.cc +) -include(${protobuf_SOURCE_DIR}/src/file_lists.cmake) +set(libprotobuf_lite_includes + ${protobuf_SOURCE_DIR}/src/google/protobuf/any.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_impl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/endian.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/explicitly_constructed.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_inl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_decl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_impl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/has_bits.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/strtod.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_entry_lite.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_lite.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_type_handler.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/metadata_lite.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/port.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/callback.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/casts.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/hash.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/logging.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/macros.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/map_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/mutex.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/once.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/platform_macros.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/port.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stl_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/template_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.h +) add_library(libprotobuf-lite ${protobuf_SHARED_OR_STATIC} - ${libprotobuf_lite_srcs} - ${libprotobuf_lite_hdrs} - ${protobuf_version_rc_file}) + ${libprotobuf_lite_files} ${libprotobuf_lite_includes} ${protobuf_version_rc_file}) if(protobuf_HAVE_LD_VERSION_SCRIPT) if(${CMAKE_VERSION} VERSION_GREATER 3.13 OR ${CMAKE_VERSION} VERSION_EQUAL 3.13) target_link_options(libprotobuf-lite PRIVATE -Wl,--version-script=${protobuf_SOURCE_DIR}/src/libprotobuf-lite.map) @@ -16,6 +98,9 @@ if(protobuf_HAVE_LD_VERSION_SCRIPT) LINK_DEPENDS ${protobuf_SOURCE_DIR}/src/libprotobuf-lite.map) endif() target_link_libraries(libprotobuf-lite PRIVATE ${CMAKE_THREAD_LIBS_INIT}) +target_include_directories(libprotobuf-lite + PRIVATE ${ABSL_ROOT_DIR} +) if(protobuf_LINK_LIBATOMIC) target_link_libraries(libprotobuf-lite PRIVATE atomic) endif() diff --git a/cmake/libprotobuf.cmake b/cmake/libprotobuf.cmake index aa3efc9a68..e597959d20 100644 --- a/cmake/libprotobuf.cmake +++ b/cmake/libprotobuf.cmake @@ -1,11 +1,106 @@ -# CMake definitions for libprotobuf (the "full" C++ protobuf runtime). +set(libprotobuf_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/any.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/duration.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/empty.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_heavy.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/field_mask.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_bases.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_full.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/gzip_stream.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/service.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/source_context.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/struct.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/substitute.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/timestamp.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/type.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/datapiece.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/default_value_objectwriter.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/error_listener.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/field_mask_utility.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_escaping.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_objectwriter.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_stream_parser.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/object_writer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/proto_writer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectsource.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectwriter.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/type_info.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/utility.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.pb.cc +) -include(${protobuf_SOURCE_DIR}/src/file_lists.cmake) +set(libprotobuf_includes + ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/duration.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/empty.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/field_access_listener.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/field_mask.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_reflection.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_bases.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/gzip_stream.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_entry.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_inl.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/message.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/metadata.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_internal.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/service.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/source_context.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/struct.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/timestamp.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/type.pb.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.pb.h +) add_library(libprotobuf ${protobuf_SHARED_OR_STATIC} - ${libprotobuf_srcs} - ${libprotobuf_hdrs} - ${protobuf_version_rc_file}) + ${libprotobuf_lite_files} ${libprotobuf_files} ${libprotobuf_includes} ${protobuf_version_rc_file}) if(protobuf_HAVE_LD_VERSION_SCRIPT) if(${CMAKE_VERSION} VERSION_GREATER 3.13 OR ${CMAKE_VERSION} VERSION_EQUAL 3.13) target_link_options(libprotobuf PRIVATE -Wl,--version-script=${protobuf_SOURCE_DIR}/src/libprotobuf.map) @@ -16,6 +111,9 @@ if(protobuf_HAVE_LD_VERSION_SCRIPT) LINK_DEPENDS ${protobuf_SOURCE_DIR}/src/libprotobuf.map) endif() target_link_libraries(libprotobuf PRIVATE ${CMAKE_THREAD_LIBS_INIT}) +target_include_directories(libprotobuf + PRIVATE ${ABSL_ROOT_DIR} +) if(protobuf_WITH_ZLIB) target_link_libraries(libprotobuf PRIVATE ${ZLIB_LIBRARIES}) endif() diff --git a/cmake/libprotoc.cmake b/cmake/libprotoc.cmake index 72b4a1abb9..7506b0220f 100644 --- a/cmake/libprotoc.cmake +++ b/cmake/libprotoc.cmake @@ -1,11 +1,117 @@ -# CMake definitions for libprotoc (the protobuf compiler library). +set(libprotoc_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/extension.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/file.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/helpers.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/map_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/padding_optimizer.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/parse_function_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/primitive_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/service.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/string_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_field_base.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_helpers.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_map_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/context.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/doc_comment.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/file.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator_factory.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/helpers.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/kotlin_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/name_resolver.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/service.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/shared_code_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field_lite.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_extension.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_file.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/php/php_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.pb.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/helpers.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/pyi_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/subprocess.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/zip_writer.cc +) -include(${protobuf_SOURCE_DIR}/src/file_lists.cmake) +set(libprotoc_headers + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/cpp_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/file.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/helpers.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/names.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_doc_comment.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_names.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_options.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/java_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/kotlin_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/names.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/php/php_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/pyi_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/python_generator.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator.h +) add_library(libprotoc ${protobuf_SHARED_OR_STATIC} - ${libprotoc_srcs} - ${libprotoc_hdrs} - ${protobuf_version_rc_file}) + ${libprotoc_files} ${libprotoc_headers} ${protobuf_version_rc_file}) if(protobuf_HAVE_LD_VERSION_SCRIPT) if(${CMAKE_VERSION} VERSION_GREATER 3.13 OR ${CMAKE_VERSION} VERSION_EQUAL 3.13) target_link_options(libprotoc PRIVATE -Wl,--version-script=${protobuf_SOURCE_DIR}/src/libprotoc.map) @@ -16,6 +122,9 @@ if(protobuf_HAVE_LD_VERSION_SCRIPT) LINK_DEPENDS ${protobuf_SOURCE_DIR}/src/libprotoc.map) endif() target_link_libraries(libprotoc PRIVATE libprotobuf) +target_include_directories(libprotoc + PRIVATE ${ABSL_ROOT_DIR} +) if(protobuf_BUILD_SHARED_LIBS) target_compile_definitions(libprotoc PUBLIC PROTOBUF_USE_DLLS diff --git a/cmake/tests.cmake b/cmake/tests.cmake index be1d429ab8..1f8bbc9d43 100644 --- a/cmake/tests.cmake +++ b/cmake/tests.cmake @@ -21,6 +21,7 @@ else() set(googlemock_source_dir "${protobuf_SOURCE_DIR}/third_party/googletest/googlemock") set(googletest_source_dir "${protobuf_SOURCE_DIR}/third_party/googletest/googletest") include_directories( + ${ABSL_ROOT_DIR} ${googlemock_source_dir} ${googletest_source_dir} ${googletest_source_dir}/include @@ -39,16 +40,59 @@ else() add_library(GTest::gmock_main ALIAS gmock_main) endif() -include(${protobuf_SOURCE_DIR}/src/file_lists.cmake) - set(lite_test_protos - ${protobuf_lite_test_protos_proto_srcs} + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_unittest.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_lite.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public_lite.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite.proto ) set(tests_protos - ${protobuf_test_protos_proto_srcs} - ${compiler_test_protos_files} - ${util_test_protos_files} + ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_bad_identifiers.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_large_enum_value.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_proto2_unittest.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_unittest.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_arena.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_custom_options.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_drop_unknown_fields.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_embed_optimize_for.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_empty.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_enormous_descriptor.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_custom_option.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_enum.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite_imports_nonlite.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset_wire_format.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_field_presence.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_generic_services.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_optimize_for.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum2.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena_lite.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_lite.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_optional.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_well_known_types.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/anys.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/books.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/default_value.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/default_value_test.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/field_mask.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/maps.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/oneofs.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/proto3.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/struct.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/timestamp_duration.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/wrappers.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format_proto3.proto + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer_unittest.proto ) macro(compile_proto_file filename) @@ -75,16 +119,24 @@ foreach(proto_file ${tests_protos}) set(tests_proto_files ${tests_proto_files} ${pb_file}) endforeach(proto_file) +set(common_lite_test_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_test_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_test_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.cc +) + add_library(protobuf-lite-test-common STATIC - ${lite_test_util_srcs} ${lite_test_proto_files}) + ${common_lite_test_files} ${lite_test_proto_files}) target_link_libraries(protobuf-lite-test-common libprotobuf-lite GTest::gmock) set(common_test_files - ${lite_test_util_srcs} - ${test_util_hdrs} - ${test_util_srcs} - ${mock_code_generator_srcs} - ${testing_srcs} + ${common_lite_test_files} + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test_util.inc + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_tester.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/googletest.cc ) add_library(protobuf-test-common STATIC @@ -92,12 +144,85 @@ add_library(protobuf-test-common STATIC target_link_libraries(protobuf-test-common libprotobuf GTest::gmock) set(tests_files - ${protobuf_test_files} - ${compiler_test_files} - ${annotation_test_util_srcs} - ${io_test_files} - ${util_test_files} - ${stubs_test_files} + ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.h + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/bootstrap_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_size_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/metadata_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/move_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/plugin_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/unittest.inc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/doc_comment_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/plugin_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/plugin_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/drop_unknown_fields_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_lite_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test.inc + ${protobuf_SOURCE_DIR}/src/google/protobuf/message_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/message_unittest.inc + ${protobuf_SOURCE_DIR}/src/google/protobuf/no_field_presence_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/preserve_unknown_enum_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_arena_lite_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_arena_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_lite_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_lite_unittest.inc + ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field_reflection_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/structurally_valid_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/template_util_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/default_value_objectwriter_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_objectwriter_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_stream_parser_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectsource_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectwriter_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/type_info_test_helper.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util_test.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/well_known_types_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.inc ) if(protobuf_ABSOLUTE_TEST_PLUGIN_PATH) @@ -130,23 +255,48 @@ if (MSVC) /wd4146 # unary minus operator applied to unsigned type, result still unsigned ) endif() -target_link_libraries(tests protobuf-lite-test-common protobuf-test-common libprotoc libprotobuf GTest::gmock_main) +target_link_libraries(tests + protobuf-lite-test-common + protobuf-test-common + libprotoc + libprotobuf + GTest::gmock_main + ${protobuf_ABSL_USED_TARGETS} +) set(test_plugin_files - ${test_plugin_files} - ${mock_code_generator_srcs} - ${testing_srcs} + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/test_plugin.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.cc + ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.h ) add_executable(test_plugin ${test_plugin_files}) -target_link_libraries(test_plugin libprotoc libprotobuf GTest::gmock) +target_link_libraries(test_plugin + libprotoc + libprotobuf + GTest::gmock + ${protobuf_ABSL_USED_TARGETS} +) -add_executable(lite-test ${protobuf_lite_test_files}) +set(lite_test_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_unittest.cc +) +add_executable(lite-test ${lite_test_files}) target_link_libraries(lite-test protobuf-lite-test-common libprotobuf-lite GTest::gmock_main) add_test(NAME lite-test COMMAND lite-test ${protobuf_GTEST_ARGS}) +set(lite_arena_test_files + ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_arena_unittest.cc +) +add_executable(lite-arena-test ${lite_arena_test_files}) +target_link_libraries(lite-arena-test protobuf-lite-test-common libprotobuf-lite GTest::gmock_main) + +add_test(NAME lite-arena-test + COMMAND lite-arena-test ${protobuf_GTEST_ARGS}) + add_custom_target(check COMMAND tests DEPENDS tests test_plugin diff --git a/java/core/src/main/java/com/google/protobuf/ByteString.java b/java/core/src/main/java/com/google/protobuf/ByteString.java index 480f85fd6d..f13a94523b 100644 --- a/java/core/src/main/java/com/google/protobuf/ByteString.java +++ b/java/core/src/main/java/com/google/protobuf/ByteString.java @@ -385,8 +385,7 @@ public abstract class ByteString implements Iterable, Serializable { // String -> ByteString /** - * Returns a {@code ByteString} from a hexadecimal String. Alternative CharSequences should use - * {@link ByteStrings#decode(CharSequence, BaseEncoding)} + * Returns a {@code ByteString} from a hexadecimal String. * * @param hexString String of hexadecimal digits to create {@code ByteString} from. * @throws NumberFormatException if the hexString does not contain a parsable hex String. diff --git a/src/Makefile.am b/src/Makefile.am index f88b75e6f4..e4a0a2b604 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -18,7 +18,7 @@ else PTHREAD_DEF = endif -PROTOBUF_VERSION = 32:1:0 +PROTOBUF_VERSION = 32:0:0 if GCC # Turn on all warnings except for sign comparison (we ignore sign comparison @@ -542,7 +542,6 @@ EXTRA_DIST = \ $(protoc_inputs) \ BUILD.bazel \ README.md \ - file_lists.cmake \ google/protobuf/BUILD.bazel \ google/protobuf/compiler/BUILD.bazel \ google/protobuf/compiler/cpp/BUILD.bazel \ diff --git a/src/file_lists.cmake b/src/file_lists.cmake deleted file mode 100644 index 620755aa29..0000000000 --- a/src/file_lists.cmake +++ /dev/null @@ -1,877 +0,0 @@ -# Auto-generated by //pkg:gen_src_file_lists_cmake -# -# This file contains lists of sources based on Bazel rules. It should -# be included from a hand-written CMake file that defines targets. -# -# Changes to this file will be overwritten based on Bazel definitions. - -if(${CMAKE_VERSION} VERSION_GREATER 3.10 OR ${CMAKE_VERSION} VERSION_EQUAL 3.10) - include_guard() -endif() - -# //pkg:protobuf -set(libprotobuf_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/duration.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/empty.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_heavy.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/field_mask.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_bases.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_full.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/gzip_stream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/strtod.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/service.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/source_context.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/struct.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/structurally_valid.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/substitute.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/timestamp.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/type.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/datapiece.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/default_value_objectwriter.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/error_listener.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/field_mask_utility.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_escaping.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_objectwriter.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_stream_parser.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/object_writer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/proto_writer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectsource.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectwriter.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/type_info.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/utility.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.pb.cc -) - -# //pkg:protobuf -set(libprotobuf_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/duration.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/empty.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/endian.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/explicitly_constructed.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_inl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/field_access_listener.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/field_mask.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_reflection.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_bases.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_decl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/has_bits.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/gzip_stream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/strtod.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_entry.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_entry_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_inl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_type_handler.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/metadata.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/metadata_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/port.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_internal.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/service.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/source_context.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/struct.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/callback.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/casts.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/hash.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/logging.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/map_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/mathutil.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/mutex.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/once.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/platform_macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/port.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status_macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stl_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/substitute.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/template_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/timestamp.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/type.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/datapiece.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/default_value_objectwriter.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/error_listener.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/field_mask_utility.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_escaping.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_objectwriter.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_stream_parser.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/location_tracker.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/object_location_tracker.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/object_source.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/object_writer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/proto_writer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectsource.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectwriter.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/structured_objectwriter.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/type_info.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/utility.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.pb.h -) - -# //pkg:protobuf_lite -set(libprotobuf_lite_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/structurally_valid.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.cc -) - -# //pkg:protobuf_lite -set(libprotobuf_lite_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/endian.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/explicitly_constructed.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_inl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_enum_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_decl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/has_bits.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/implicit_weak_message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_impl_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_entry_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_type_handler.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/metadata_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/parse_context.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/port.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_ptr_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/callback.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/casts.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/hash.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/logging.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/map_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/mathutil.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/mutex.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/once.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/platform_macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/port.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status_macros.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stl_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/template_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.h -) - -# //pkg:protoc -set(libprotoc_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/extension.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/file.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/helpers.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/map_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/padding_optimizer.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/parse_function_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/primitive_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/service.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/string_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_field_base.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_helpers.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_map_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/context.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/doc_comment.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/file.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator_factory.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/helpers.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/kotlin_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/name_resolver.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/service.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/shared_code_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field_lite.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_extension.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_file.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/php/php_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/helpers.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/pyi_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/subprocess.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/zip_writer.cc -) - -# //pkg:protoc -set(libprotoc_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/enum_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/extension.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/file.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/helpers.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/map_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_layout_helper.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/names.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/options.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/padding_optimizer.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/parse_function_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/primitive_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/service.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/string_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_doc_comment.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_field_base.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_helpers.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_map_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_message_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_names.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_options.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_primitive_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_reflection_class.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_source_generator_base.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_wrapper_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/context.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/doc_comment.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/enum_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/extension_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/file.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/generator_factory.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/helpers.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/kotlin_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/map_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_builder_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/message_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/name_resolver.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/names.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/options.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/primitive_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/service.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/shared_code_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/string_field_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_extension.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_file.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_map_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_message_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_oneof.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/php/php_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/helpers.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/pyi_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/scc.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/subprocess.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/zip_writer.h -) - -# //src/google/protobuf:well_known_type_protos -set(wkt_protos_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/any.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/api.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/duration.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/empty.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/field_mask.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/source_context.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/struct.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/timestamp.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/type.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.proto -) - -# //src/google/protobuf:descriptor_proto -set(descriptor_proto_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto -) - -# //src/google/protobuf:descriptor_proto -set(descriptor_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto.pb.cc -) - -# //src/google/protobuf:descriptor_proto -set(descriptor_proto_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto.pb.h -) - -# //src/google/protobuf:descriptor_proto -set(descriptor_proto_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_proto-descriptor-set.proto.bin -) - -# //src/google/protobuf/compiler:plugin_proto -set(plugin_proto_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto -) - -# //src/google/protobuf/compiler:plugin_proto -set(plugin_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto.pb.cc -) - -# //src/google/protobuf/compiler:plugin_proto -set(plugin_proto_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto.pb.h -) - -# //src/google/protobuf/compiler:plugin_proto -set(plugin_proto_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin_proto-descriptor-set.proto.bin -) - -# //pkg:lite_test_util -set(lite_test_util_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_test_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_test_util.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.cc -) - -# //pkg:lite_test_util -set(lite_test_util_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_test_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_test_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test_util_impl.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_lite_unittest.inc - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.h -) - -# //pkg:test_util -set(test_util_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_tester.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util.cc -) - -# //pkg:test_util -set(test_util_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test.inc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test_util.inc - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_unittest.inc - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_tester.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util.inc - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.inc -) - -# //src/google/protobuf:full_test_srcs -set(protobuf_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenastring_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/arenaz_sampler_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_database_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/drop_unknown_fields_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/dynamic_message_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/extension_set_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_reflection_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/generated_message_tctable_lite_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/inlined_string_field_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_field_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/message_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/no_field_presence_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/preserve_unknown_enum_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_arena_lite_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_arena_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/proto3_lite_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_ops_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field_reflection_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/repeated_field_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/text_format_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unknown_field_set_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/well_known_types_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.cc -) - -# //src/google/protobuf:test_protos -set(protobuf_test_protos_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_proto2_unittest.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_unittest.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_arena.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_custom_options.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_drop_unknown_fields.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_embed_optimize_for.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_empty.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_enormous_descriptor.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_custom_option.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_enum.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite_imports_nonlite.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset_wire_format.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_field_presence.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_generic_services.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_optimize_for.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum2.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena_lite.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_lite.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_optional.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_well_known_types.proto -) - -# //src/google/protobuf:test_protos -set(protobuf_test_protos_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_proto2_unittest.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_unittest.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_arena.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_custom_options.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_drop_unknown_fields.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_embed_optimize_for.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_empty.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_enormous_descriptor.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_custom_option.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_enum.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite_imports_nonlite.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset_wire_format.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_field_presence.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_generic_services.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_optimize_for.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum2.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena_lite.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_lite.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_optional.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_well_known_types.proto.pb.cc -) - -# //src/google/protobuf:test_protos -set(protobuf_test_protos_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_proto2_unittest.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_unittest.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_arena.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_custom_options.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_drop_unknown_fields.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_embed_optimize_for.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_empty.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_enormous_descriptor.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_custom_option.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lazy_dependencies_enum.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite_imports_nonlite.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_mset_wire_format.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_field_presence.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_no_generic_services.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_optimize_for.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_preserve_unknown_enum2.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_arena_lite.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_lite.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_proto3_optional.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_well_known_types.proto.pb.h -) - -# //src/google/protobuf:test_protos -set(protobuf_test_protos_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/test_protos-descriptor-set.proto.bin -) - -# //src/google/protobuf:lite_test_srcs -set(protobuf_lite_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_arena_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_unittest.cc -) - -# //src/google/protobuf:lite_test_protos -set(protobuf_lite_test_protos_proto_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_unittest.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_lite.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public_lite.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite.proto -) - -# //src/google/protobuf:lite_test_protos -set(protobuf_lite_test_protos_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_unittest.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_lite.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public_lite.proto.pb.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite.proto.pb.cc -) - -# //src/google/protobuf:lite_test_protos -set(protobuf_lite_test_protos_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_unittest.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_lite.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_public_lite.proto.pb.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite.proto.pb.h -) - -# //src/google/protobuf:lite_test_protos -set(protobuf_lite_test_protos_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_test_protos-descriptor-set.proto.bin -) - -# //src/google/protobuf/compiler:test_srcs -set(compiler_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/bootstrap_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/message_size_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/metadata_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/move_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/plugin_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/importer_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/doc_comment_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/java/plugin_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/parser_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/python/plugin_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc -) - -# //pkg:compiler_annotation_test_util -set(annotation_test_util_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.cc -) - -# //pkg:compiler_annotation_test_util -set(annotation_test_util_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.h -) - -# //pkg:compiler_mock_code_generator -set(mock_code_generator_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.cc -) - -# //pkg:compiler_mock_code_generator -set(mock_code_generator_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.h -) - -# //src/google/protobuf/compiler:test_proto_srcs -set(compiler_test_protos_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_bad_identifiers.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_large_enum_value.proto -) - -# //src/google/protobuf/compiler:test_plugin_srcs -set(test_plugin_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/test_plugin.cc -) - -# //src/google/protobuf/io:test_srcs -set(io_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/printer_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/tokenizer_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_unittest.cc -) - -# //pkg:testinglib -set(testing_srcs - ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/googletest.cc -) - -# //pkg:testinglib -set(testing_hdrs - ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.h - ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/googletest.h -) - -# //src/google/protobuf/util:test_srcs -set(util_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_mask_util_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/default_value_objectwriter_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_objectwriter_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/json_stream_parser_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectsource_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/protostream_objectwriter_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/type_info_test_helper.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_util_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/time_util_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util_test.cc -) - -# //src/google/protobuf/util:test_proto_srcs -set(util_test_protos_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/anys.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/books.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/default_value.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/default_value_test.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/field_mask.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/maps.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/oneofs.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/proto3.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/struct.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/timestamp_duration.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/internal/testdata/wrappers.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format_proto3.proto - ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer_unittest.proto -) - -# //src/google/protobuf/stubs:test_srcs -set(stubs_test_files - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/bytestream_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/int128_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/status_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/statusor_test.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringpiece_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/stringprintf_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/structurally_valid_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/strutil_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/template_util_unittest.cc - ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/time_test.cc -) diff --git a/src/google/protobuf/any.pb.cc b/src/google/protobuf/any.pb.cc index c02f9eb7f8..379991e24a 100644 --- a/src/google/protobuf/any.pb.cc +++ b/src/google/protobuf/any.pb.cc @@ -52,6 +52,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fany_2eproto::offsets[] PROTOBUF_S ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Any, _impl_.type_url_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Any, _impl_.value_), }; diff --git a/src/google/protobuf/api.pb.cc b/src/google/protobuf/api.pb.cc index 24b60497cd..24e118eebc 100644 --- a/src/google/protobuf/api.pb.cc +++ b/src/google/protobuf/api.pb.cc @@ -85,6 +85,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fapi_2eproto::offsets[] PROTOBUF_S ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Api, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Api, _impl_.methods_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Api, _impl_.options_), @@ -98,6 +100,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fapi_2eproto::offsets[] PROTOBUF_S ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Method, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Method, _impl_.request_type_url_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Method, _impl_.request_streaming_), @@ -111,13 +115,15 @@ const uint32_t TableStruct_google_2fprotobuf_2fapi_2eproto::offsets[] PROTOBUF_S ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Mixin, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Mixin, _impl_.root_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Api)}, - { 13, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Method)}, - { 26, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Mixin)}, + { 15, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Method)}, + { 30, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Mixin)}, }; static const ::_pb::Message* const file_default_instances[] = { diff --git a/src/google/protobuf/arenastring.cc b/src/google/protobuf/arenastring.cc index d886ddad66..4dce6df08f 100644 --- a/src/google/protobuf/arenastring.cc +++ b/src/google/protobuf/arenastring.cc @@ -86,7 +86,7 @@ const std::string& LazyString::Init() const { namespace { -#if defined(NDEBUG) || !GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL +#if defined(NDEBUG) || !defined(GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL) class ScopedCheckPtrInvariants { public: @@ -102,7 +102,7 @@ inline TaggedStringPtr CreateString(ConstStringParam value) { return res; } -#if !GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL +#ifndef GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL // Creates an arena allocated std::string value. TaggedStringPtr CreateArenaString(Arena& arena, ConstStringParam s) { @@ -123,7 +123,17 @@ void ArenaStringPtr::Set(ConstStringParam value, Arena* arena) { tagged_ptr_ = arena != nullptr ? CreateArenaString(*arena, value) : CreateString(value); } else { +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (arena == nullptr) { + Destroy(); + tagged_ptr_ = CreateString(value); + } else { + UnsafeMutablePointer()->assign("garbagedata"); + tagged_ptr_ = CreateArenaString(*arena, value); + } +#else // PROTOBUF_FORCE_COPY_DEFAULT_STRING UnsafeMutablePointer()->assign(value.data(), value.length()); +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING } } diff --git a/src/google/protobuf/compiler/cpp/field.h b/src/google/protobuf/compiler/cpp/field.h index dd2a51a2fe..3fcbda371c 100644 --- a/src/google/protobuf/compiler/cpp/field.h +++ b/src/google/protobuf/compiler/cpp/field.h @@ -150,9 +150,6 @@ class FieldGenerator { // method, invoked by each of the generated constructors. virtual void GenerateConstructorCode(io::Printer* printer) const = 0; - // Generate initialization code for private members in the cold struct. - virtual void GenerateCreateSplitMessageCode(io::Printer* printer) const {} - // Generate any code that needs to go in the class's SharedDtor() method, // invoked by the destructor. // Most field types don't need this, so the default implementation is empty. diff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc index d3190fabc3..f4eb744e2f 100644 --- a/src/google/protobuf/compiler/cpp/message.cc +++ b/src/google/protobuf/compiler/cpp/message.cc @@ -1986,9 +1986,6 @@ void MessageGenerator::GenerateClassDefinition(io::Printer* printer) { } if (ShouldSplit(descriptor_, options_)) { - format( - "static Impl_::Split* CreateSplitMessage(" - "::$proto_ns$::Arena* arena);\n"); format("friend struct $1$;\n", DefaultInstanceType(descriptor_, options_, /*split=*/true)); } @@ -2036,7 +2033,6 @@ void MessageGenerator::GenerateSchema(io::Printer* printer, int offset, GOOGLE_DCHECK(!IsMapEntryMessage(descriptor_)); inlined_string_indices_offset = has_offset + has_bit_indices_.size(); } - format("{ $1$, $2$, $3$, sizeof($classtype$)},\n", offset, has_offset, inlined_string_indices_offset); } @@ -2199,9 +2195,13 @@ void MessageGenerator::GenerateClassMethods(io::Printer* printer) { format( "void $classname$::PrepareSplitMessageForWrite() {\n" " if (IsSplitMessageDefault()) {\n" - " $split$ = CreateSplitMessage(GetArenaForAllocation());\n" + " void* chunk = " + "::PROTOBUF_NAMESPACE_ID::internal::CreateSplitMessageGeneric(" + "GetArenaForAllocation(), &$1$, sizeof(Impl_::Split));\n" + " $split$ = reinterpret_cast(chunk);\n" " }\n" - "}\n"); + "}\n", + DefaultInstanceName(descriptor_, options_, /*split=*/true)); } GenerateVerify(printer); @@ -2276,7 +2276,16 @@ std::pair MessageGenerator::GenerateOffsets( } else { format("~0u, // no _inlined_string_donated_\n"); } - const int kNumGenericOffsets = 6; // the number of fixed offsets above + if (ShouldSplit(descriptor_, options_)) { + format( + "PROTOBUF_FIELD_OFFSET($classtype$, $split$),\n" + "sizeof($classtype$::Impl_::Split),\n"); + } else { + format( + "~0u, // no _split_\n" + "~0u, // no sizeof(Split)\n"); + } + const int kNumGenericOffsets = 8; // the number of fixed offsets above const size_t offsets = kNumGenericOffsets + descriptor_->field_count() + descriptor_->real_oneof_decl_count(); size_t entries = offsets; @@ -2304,12 +2313,17 @@ std::pair MessageGenerator::GenerateOffsets( // offset of the field, so that the information is available when // reflectively accessing the field at run time. // - // Embed whether the field is eagerly verified lazy or inlined string to the - // LSB of the offset. + // We embed whether the field is cold to the MSB of the offset, and whether + // the field is eagerly verified lazy or inlined string to the LSB of the + // offset. + + if (ShouldSplit(field, options_)) { + format(" | ::_pbi::kSplitFieldOffsetMask /*split*/"); + } if (IsEagerlyVerifiedLazy(field, options_, scc_analyzer_)) { - format(" | 0x1u // eagerly verified lazy\n"); + format(" | 0x1u /*eagerly verified lazy*/"); } else if (IsStringInlined(field, options_)) { - format(" | 0x1u // inlined\n"); + format(" | 0x1u /*inlined*/"); } format(",\n"); } @@ -2470,45 +2484,6 @@ void MessageGenerator::GenerateSharedConstructorCode(io::Printer* printer) { format("}\n\n"); } -void MessageGenerator::GenerateCreateSplitMessage(io::Printer* printer) { - Formatter format(printer, variables_); - format( - "$classname$::Impl_::Split* " - "$classname$::CreateSplitMessage(::$proto_ns$::Arena* arena) {\n"); - format.Indent(); - const char* field_sep = " "; - const auto put_sep = [&] { - format("\n$1$ ", field_sep); - field_sep = ","; - }; - format( - "const size_t size = sizeof(Impl_::Split);\n" - "void* chunk = (arena == nullptr) ?\n" - " ::operator new(size) :\n" - " arena->AllocateAligned(size, alignof(Impl_::Split));\n" - "Impl_::Split* ptr = reinterpret_cast(chunk);\n" - "new (ptr) Impl_::Split{"); - format.Indent(); - for (const FieldDescriptor* field : optimized_order_) { - GOOGLE_DCHECK(!IsFieldStripped(field, options_)); - if (ShouldSplit(field, options_)) { - put_sep(); - field_generators_.get(field).GenerateAggregateInitializer(printer); - } - } - format.Outdent(); - format("};\n"); - for (const FieldDescriptor* field : optimized_order_) { - GOOGLE_DCHECK(!IsFieldStripped(field, options_)); - if (ShouldSplit(field, options_)) { - field_generators_.get(field).GenerateCreateSplitMessageCode(printer); - } - } - format("return ptr;\n"); - format.Outdent(); - format("}\n"); -} - void MessageGenerator::GenerateInitDefaultSplitInstance(io::Printer* printer) { if (!ShouldSplit(descriptor_, options_)) return; @@ -2947,10 +2922,6 @@ void MessageGenerator::GenerateStructors(io::Printer* printer) { // Generate the shared constructor code. GenerateSharedConstructorCode(printer); - if (ShouldSplit(descriptor_, options_)) { - GenerateCreateSplitMessage(printer); - } - // Generate the destructor. if (!HasSimpleBaseClass(descriptor_, options_)) { format( diff --git a/src/google/protobuf/compiler/cpp/message.h b/src/google/protobuf/compiler/cpp/message.h index 5bdfcb35e2..998ebdb242 100644 --- a/src/google/protobuf/compiler/cpp/message.h +++ b/src/google/protobuf/compiler/cpp/message.h @@ -119,7 +119,6 @@ class MessageGenerator { // default instance. void GenerateConstexprConstructor(io::Printer* printer); - void GenerateCreateSplitMessage(io::Printer* printer); void GenerateInitDefaultSplitInstance(io::Printer* printer); // Generate standard Message methods. diff --git a/src/google/protobuf/compiler/cpp/parse_function_generator.cc b/src/google/protobuf/compiler/cpp/parse_function_generator.cc index 91ceeeb257..3254b37581 100644 --- a/src/google/protobuf/compiler/cpp/parse_function_generator.cc +++ b/src/google/protobuf/compiler/cpp/parse_function_generator.cc @@ -93,7 +93,7 @@ bool IsFieldEligibleForFastParsing( if (field->is_map() || field->real_containing_oneof() || field->options().weak() || IsImplicitWeakField(field, options, scc_analyzer) || - IsLazy(field, options, scc_analyzer)) { + IsLazy(field, options, scc_analyzer) || ShouldSplit(field, options)) { return false; } @@ -313,6 +313,16 @@ TailCallTableInfo::TailCallTableInfo( ", _impl_._inlined_string_donated_)}"); } + // If this message is split, store the split pointer offset in the third + // auxiliary entry. + if (ShouldSplit(descriptor, options)) { + aux_entries.resize(4); // pad if necessary + aux_entries[2] = StrCat("_fl::Offset{offsetof(", + ClassName(descriptor), ", _impl_._split_)}"); + aux_entries[3] = StrCat("_fl::Offset{sizeof(", ClassName(descriptor), + "::Impl_::Split)}"); + } + // Fill in mini table entries. for (const FieldDescriptor* field : ordered_fields) { field_entries.push_back( @@ -919,14 +929,12 @@ void ParseFunctionGenerator::GenerateFastFieldEntries(Formatter& format) { if (info.func_name.empty()) { format("{::_pbi::TcParser::MiniParse, {}},\n"); } else { - bool cold = ShouldSplit(info.field, options_); + GOOGLE_CHECK(!ShouldSplit(info.field, options_)); format( "{$1$,\n" - " {$2$, $3$, $4$, PROTOBUF_FIELD_OFFSET($classname$$5$, $6$)}},\n", + " {$2$, $3$, $4$, PROTOBUF_FIELD_OFFSET($classname$, $5$)}},\n", info.func_name, info.coded_tag, info.hasbit_idx, info.aux_idx, - cold ? "::Impl_::Split" : "", - cold ? FieldName(info.field) + "_" - : FieldMemberName(info.field, /*cold=*/false)); + FieldMemberName(info.field, /*split=*/false)); } } } @@ -1067,6 +1075,10 @@ static void FormatFieldKind(Formatter& format, } } + if (ShouldSplit(field, options)) { + format(" | ::_fl::kSplitTrue"); + } + format(")"); } @@ -1081,11 +1093,14 @@ void ParseFunctionGenerator::GenerateFieldEntries(Formatter& format) { format("/* weak */ 0, 0, 0, 0"); } else { const OneofDescriptor* oneof = field->real_containing_oneof(); - bool cold = ShouldSplit(field, options_); - format("PROTOBUF_FIELD_OFFSET($classname$$1$, $2$), ", - cold ? "::Impl_::Split" : "", - cold ? FieldName(field) + "_" - : FieldMemberName(field, /*cold=*/false)); + bool split = ShouldSplit(field, options_); + if (split) { + format("PROTOBUF_FIELD_OFFSET($classname$::Impl_::Split, $1$), ", + FieldName(field) + "_"); + } else { + format("PROTOBUF_FIELD_OFFSET($classname$, $1$), ", + FieldMemberName(field, /*cold=*/false)); + } if (oneof) { format("$1$, ", oneof->index()); } else if (num_hasbits_ > 0 || IsMapEntryMessage(descriptor_)) { diff --git a/src/google/protobuf/compiler/cpp/string_field.cc b/src/google/protobuf/compiler/cpp/string_field.cc index 9e7c96d7ca..71b9b54120 100644 --- a/src/google/protobuf/compiler/cpp/string_field.cc +++ b/src/google/protobuf/compiler/cpp/string_field.cc @@ -445,21 +445,6 @@ void StringFieldGenerator::GenerateConstructorCode(io::Printer* printer) const { } } -void StringFieldGenerator::GenerateCreateSplitMessageCode( - io::Printer* printer) const { - GOOGLE_CHECK(ShouldSplit(descriptor_, options_)); - GOOGLE_CHECK(!inlined_); - Formatter format(printer, variables_); - format("ptr->$name$_.InitDefault();\n"); - if (IsString(descriptor_, options_) && - descriptor_->default_value_string().empty()) { - format( - "#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING\n" - " ptr->$name$_.Set(\"\", GetArenaForAllocation());\n" - "#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING\n"); - } -} - void StringFieldGenerator::GenerateCopyConstructorCode( io::Printer* printer) const { Formatter format(printer, variables_); diff --git a/src/google/protobuf/compiler/cpp/string_field.h b/src/google/protobuf/compiler/cpp/string_field.h index db5f18bfb7..b1865ea67d 100644 --- a/src/google/protobuf/compiler/cpp/string_field.h +++ b/src/google/protobuf/compiler/cpp/string_field.h @@ -63,7 +63,6 @@ class StringFieldGenerator : public FieldGenerator { void GenerateMergingCode(io::Printer* printer) const override; void GenerateSwappingCode(io::Printer* printer) const override; void GenerateConstructorCode(io::Printer* printer) const override; - void GenerateCreateSplitMessageCode(io::Printer* printer) const override; void GenerateCopyConstructorCode(io::Printer* printer) const override; void GenerateDestructorCode(io::Printer* printer) const override; void GenerateArenaDestructorCode(io::Printer* printer) const override; diff --git a/src/google/protobuf/compiler/plugin.pb.cc b/src/google/protobuf/compiler/plugin.pb.cc index def353e215..32bfac19a2 100644 --- a/src/google/protobuf/compiler/plugin.pb.cc +++ b/src/google/protobuf/compiler/plugin.pb.cc @@ -102,6 +102,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto::offset ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::Version, _impl_.major_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::Version, _impl_.minor_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::Version, _impl_.patch_), @@ -116,6 +118,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto::offset ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest, _impl_.file_to_generate_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest, _impl_.parameter_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest, _impl_.proto_file_), @@ -130,6 +134,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto::offset ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File, _impl_.insertion_point_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File, _impl_.content_), @@ -144,6 +150,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto::offset ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse, _impl_.error_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse, _impl_.supported_features_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse, _impl_.file_), @@ -152,10 +160,10 @@ const uint32_t TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto::offset ~0u, }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { - { 0, 10, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::Version)}, - { 14, 24, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest)}, - { 28, 38, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File)}, - { 42, 51, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse)}, + { 0, 12, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::Version)}, + { 16, 28, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest)}, + { 32, 44, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File)}, + { 48, 59, -1, sizeof(::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse)}, }; static const ::_pb::Message* const file_default_instances[] = { diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc index 645096686d..257798e4ae 100644 --- a/src/google/protobuf/descriptor.pb.cc +++ b/src/google/protobuf/descriptor.pb.cc @@ -517,6 +517,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorSet, _impl_.file_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto, _internal_metadata_), @@ -524,6 +526,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto, _impl_.package_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto, _impl_.dependency_), @@ -554,6 +558,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange, _impl_.start_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange, _impl_.end_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange, _impl_.options_), @@ -566,6 +572,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange, _impl_.start_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange, _impl_.end_), 0, @@ -576,6 +584,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto, _impl_.field_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DescriptorProto, _impl_.extension_), @@ -602,6 +612,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions, _impl_.uninterpreted_option_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto, _internal_metadata_), @@ -609,6 +621,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto, _impl_.number_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto, _impl_.label_), @@ -637,6 +651,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto, _impl_.options_), 0, @@ -647,6 +663,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange, _impl_.start_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange, _impl_.end_), 0, @@ -657,6 +675,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto, _impl_.value_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto, _impl_.options_), @@ -673,6 +693,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto, _impl_.number_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto, _impl_.options_), @@ -685,6 +707,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto, _impl_.method_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto, _impl_.options_), @@ -697,6 +721,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto, _impl_.input_type_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto, _impl_.output_type_), @@ -715,6 +741,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileOptions, _impl_.java_package_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileOptions, _impl_.java_outer_classname_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FileOptions, _impl_.java_multiple_files_), @@ -763,6 +791,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MessageOptions, _impl_.message_set_wire_format_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MessageOptions, _impl_.no_standard_descriptor_accessor_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MessageOptions, _impl_.deprecated_), @@ -779,6 +809,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldOptions, _impl_.ctype_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldOptions, _impl_.packed_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldOptions, _impl_.jstype_), @@ -801,6 +833,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::OneofOptions, _impl_.uninterpreted_option_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumOptions, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumOptions, _internal_metadata_), @@ -808,6 +842,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumOptions, _impl_.allow_alias_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumOptions, _impl_.deprecated_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumOptions, _impl_.uninterpreted_option_), @@ -820,6 +856,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValueOptions, _impl_.deprecated_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValueOptions, _impl_.uninterpreted_option_), 0, @@ -830,6 +868,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ServiceOptions, _impl_.deprecated_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ServiceOptions, _impl_.uninterpreted_option_), 0, @@ -840,6 +880,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodOptions, _impl_.deprecated_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodOptions, _impl_.idempotency_level_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::MethodOptions, _impl_.uninterpreted_option_), @@ -852,6 +894,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart, _impl_.name_part_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart, _impl_.is_extension_), 0, @@ -862,6 +906,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UninterpretedOption, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UninterpretedOption, _impl_.identifier_value_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UninterpretedOption, _impl_.positive_int_value_), @@ -882,6 +928,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location, _impl_.path_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location, _impl_.span_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location, _impl_.leading_comments_), @@ -898,6 +946,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo, _impl_.location_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation, _internal_metadata_), @@ -905,6 +955,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation, _impl_.path_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation, _impl_.source_file_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation, _impl_.begin_), @@ -919,36 +971,38 @@ const uint32_t TableStruct_google_2fprotobuf_2fdescriptor_2eproto::offsets[] PRO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo, _impl_.annotation_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FileDescriptorSet)}, - { 7, 25, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto)}, - { 37, 46, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange)}, - { 49, 57, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange)}, - { 59, 75, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto)}, - { 85, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions)}, - { 92, 109, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto)}, - { 120, 128, -1, sizeof(::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto)}, - { 130, 138, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange)}, - { 140, 151, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto)}, - { 156, 165, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto)}, - { 168, 177, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto)}, - { 180, 192, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto)}, - { 198, 225, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FileOptions)}, - { 246, 257, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MessageOptions)}, - { 262, 276, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FieldOptions)}, - { 284, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::OneofOptions)}, - { 291, 300, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumOptions)}, - { 303, 311, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValueOptions)}, - { 313, 321, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ServiceOptions)}, - { 323, 332, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MethodOptions)}, - { 335, 343, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart)}, - { 345, 358, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UninterpretedOption)}, - { 365, 376, -1, sizeof(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location)}, - { 381, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo)}, - { 388, 398, -1, sizeof(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation)}, - { 402, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo)}, + { 9, 29, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FileDescriptorProto)}, + { 41, 52, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange)}, + { 55, 65, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange)}, + { 67, 85, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DescriptorProto)}, + { 95, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions)}, + { 104, 123, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto)}, + { 134, 144, -1, sizeof(::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto)}, + { 146, 156, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange)}, + { 158, 171, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto)}, + { 176, 187, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto)}, + { 190, 201, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto)}, + { 204, 218, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto)}, + { 224, 253, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FileOptions)}, + { 274, 287, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MessageOptions)}, + { 292, 308, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FieldOptions)}, + { 316, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::OneofOptions)}, + { 325, 336, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumOptions)}, + { 339, 349, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValueOptions)}, + { 351, 361, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ServiceOptions)}, + { 363, 374, -1, sizeof(::PROTOBUF_NAMESPACE_ID::MethodOptions)}, + { 377, 387, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart)}, + { 389, 404, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UninterpretedOption)}, + { 411, 424, -1, sizeof(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location)}, + { 429, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo)}, + { 438, 450, -1, sizeof(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation)}, + { 454, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo)}, }; static const ::_pb::Message* const file_default_instances[] = { diff --git a/src/google/protobuf/duration.pb.cc b/src/google/protobuf/duration.pb.cc index 72766bd3b4..94671ee6c9 100644 --- a/src/google/protobuf/duration.pb.cc +++ b/src/google/protobuf/duration.pb.cc @@ -47,6 +47,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fduration_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Duration, _impl_.seconds_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Duration, _impl_.nanos_), }; diff --git a/src/google/protobuf/dynamic_message.cc b/src/google/protobuf/dynamic_message.cc index 1c96ca2080..3940564583 100644 --- a/src/google/protobuf/dynamic_message.cc +++ b/src/google/protobuf/dynamic_message.cc @@ -808,8 +808,11 @@ const Message* DynamicMessageFactory::GetPrototypeNoLock( type_info->oneof_case_offset, type_info->size, type_info->weak_field_map_offset, - nullptr /* inlined_string_indices_ */, - 0 /* inlined_string_donated_offset_ */}; + nullptr, // inlined_string_indices_ + 0, // inlined_string_donated_offset_ + -1, // split_offset_ + -1, // sizeof_split_ + }; type_info->reflection.reset( new Reflection(type_info->type, schema, type_info->pool, this)); diff --git a/src/google/protobuf/dynamic_message.h b/src/google/protobuf/dynamic_message.h index 6fa64259ee..e318259e01 100644 --- a/src/google/protobuf/dynamic_message.h +++ b/src/google/protobuf/dynamic_message.h @@ -81,6 +81,9 @@ class DescriptorPool; // descriptor.h // encapsulates this "cache". All DynamicMessages of the same type created // from the same factory will share the same support data. Any Descriptors // used with a particular factory must outlive the factory. +// +// The thread safety for this class is subtle, see comments around GetPrototype +// for details class PROTOBUF_EXPORT DynamicMessageFactory : public MessageFactory { public: // Construct a DynamicMessageFactory that will search for extensions in diff --git a/src/google/protobuf/empty.pb.cc b/src/google/protobuf/empty.pb.cc index 3a30776386..8af459dbf8 100644 --- a/src/google/protobuf/empty.pb.cc +++ b/src/google/protobuf/empty.pb.cc @@ -44,6 +44,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fempty_2eproto::offsets[] PROTOBUF ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Empty)}, diff --git a/src/google/protobuf/field_mask.pb.cc b/src/google/protobuf/field_mask.pb.cc index 7860bfbfed..8448013e6f 100644 --- a/src/google/protobuf/field_mask.pb.cc +++ b/src/google/protobuf/field_mask.pb.cc @@ -46,6 +46,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ffield_5fmask_2eproto::offsets[] P ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FieldMask, _impl_.paths_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { diff --git a/src/google/protobuf/generated_message_reflection.cc b/src/google/protobuf/generated_message_reflection.cc index 53ca9acd32..aefec99081 100644 --- a/src/google/protobuf/generated_message_reflection.cc +++ b/src/google/protobuf/generated_message_reflection.cc @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -1114,8 +1115,14 @@ void Reflection::InternalSwap(Message* lhs, Message* rhs) const { const FieldDescriptor* field = descriptor_->field(i); if (schema_.InRealOneof(field)) continue; if (schema_.IsFieldStripped(field)) continue; + if (schema_.IsSplit(field)) { + continue; + } UnsafeShallowSwapField(lhs, rhs, field); } + if (schema_.IsSplit()) { + std::swap(*MutableSplitField(lhs), *MutableSplitField(rhs)); + } const int oneof_decl_count = descriptor_->oneof_decl_count(); for (int i = 0; i < oneof_decl_count; i++) { const OneofDescriptor* oneof = descriptor_->oneof_decl(i); @@ -2437,13 +2444,34 @@ bool Reflection::SupportsUnknownEnumValues() const { template const Type& Reflection::GetRawNonOneof(const Message& message, const FieldDescriptor* field) const { + if (schema_.IsSplit(field)) { + return *GetConstPointerAtOffset( + GetSplitField(&message), schema_.GetFieldOffsetNonOneof(field)); + } return GetConstRefAtOffset(message, schema_.GetFieldOffsetNonOneof(field)); } +void Reflection::PrepareSplitMessageForWrite(Message* message) const { + void** split = MutableSplitField(message); + const void* default_split = GetSplitField(schema_.default_instance_); + if (*split == default_split) { + uint32_t size = schema_.SizeofSplit(); + Arena* arena = message->GetArenaForAllocation(); + *split = (arena == nullptr) ? ::operator new(size) + : arena->AllocateAligned(size); + memcpy(*split, default_split, size); + } +} + template Type* Reflection::MutableRawNonOneof(Message* message, const FieldDescriptor* field) const { + if (schema_.IsSplit(field)) { + PrepareSplitMessageForWrite(message); + return GetPointerAtOffset(*MutableSplitField(message), + schema_.GetFieldOffsetNonOneof(field)); + } return GetPointerAtOffset(message, schema_.GetFieldOffsetNonOneof(field)); } @@ -2451,6 +2479,11 @@ Type* Reflection::MutableRawNonOneof(Message* message, template Type* Reflection::MutableRaw(Message* message, const FieldDescriptor* field) const { + if (schema_.IsSplit(field)) { + PrepareSplitMessageForWrite(message); + return GetPointerAtOffset(*MutableSplitField(message), + schema_.GetFieldOffset(field)); + } return GetPointerAtOffset(message, schema_.GetFieldOffset(field)); } @@ -2875,9 +2908,11 @@ ReflectionSchema MigrationToReflectionSchema( MigrationSchema migration_schema) { ReflectionSchema result; result.default_instance_ = *default_instance; - // First 7 offsets are offsets to the special fields. The following offsets + // First 9 offsets are offsets to the special fields. The following offsets // are the proto fields. - result.offsets_ = offsets + migration_schema.offsets_index + 6; + // + // TODO(congliu): Find a way to not encode sizeof_split_ in offsets. + result.offsets_ = offsets + migration_schema.offsets_index + 8; result.has_bit_indices_ = offsets + migration_schema.has_bit_indices_index; result.has_bits_offset_ = offsets[migration_schema.offsets_index + 0]; result.metadata_offset_ = offsets[migration_schema.offsets_index + 1]; @@ -2887,6 +2922,8 @@ ReflectionSchema MigrationToReflectionSchema( result.weak_field_map_offset_ = offsets[migration_schema.offsets_index + 4]; result.inlined_string_donated_offset_ = offsets[migration_schema.offsets_index + 5]; + result.split_offset_ = offsets[migration_schema.offsets_index + 6]; + result.sizeof_split_ = offsets[migration_schema.offsets_index + 7]; result.inlined_string_indices_ = offsets + migration_schema.inlined_string_indices_index; return result; diff --git a/src/google/protobuf/generated_message_reflection.h b/src/google/protobuf/generated_message_reflection.h index 334b2ccf1d..7d1b699d43 100644 --- a/src/google/protobuf/generated_message_reflection.h +++ b/src/google/protobuf/generated_message_reflection.h @@ -72,6 +72,19 @@ class DefaultEmptyOneof; class ExtensionSet; // extension_set.h class WeakFieldMap; // weak_field_map.h +enum { + // Tag used on offsets for fields that don't have a real offset. + // For example, weak message fields go into the WeakFieldMap and not in an + // actual field. + kInvalidFieldOffsetTag = 0x40000000u, + + // Mask used on offsets for split fields. + kSplitFieldOffsetMask = 0x80000000u, + + kLazyMask = 0x1u, + kInlinedMask = 0x1u, +}; + // This struct describes the internal layout of the message, hence this is // used to act on the message reflectively. // default_instance: The default instance of the message. This is only @@ -234,6 +247,24 @@ struct ReflectionSchema { return false; } + bool IsSplit() const { return split_offset_ != -1; } + + bool IsSplit(const FieldDescriptor* field) const { + return split_offset_ != -1 && + (offsets_[field->index()] & kSplitFieldOffsetMask) != 0; + } + + // Byte offset of _split_. + uint32_t SplitOffset() const { + GOOGLE_DCHECK(IsSplit()); + return static_cast(split_offset_); + } + + uint32_t SizeofSplit() const { + GOOGLE_DCHECK(IsSplit()); + return static_cast(sizeof_split_); + } + bool HasWeakFields() const { return weak_field_map_offset_ > 0; } @@ -254,6 +285,8 @@ struct ReflectionSchema { int weak_field_map_offset_; const uint32_t* inlined_string_indices_; int inlined_string_donated_offset_; + int split_offset_; + int sizeof_split_; // We tag offset values to provide additional data about fields (such as // "unused" or "lazy" or "inlined"). @@ -261,15 +294,15 @@ struct ReflectionSchema { if (type == FieldDescriptor::TYPE_MESSAGE || type == FieldDescriptor::TYPE_STRING || type == FieldDescriptor::TYPE_BYTES) { - return v & 0xFFFFFFFEu; + return v & (~kSplitFieldOffsetMask) & (~kInlinedMask) & (~kLazyMask); } - return v; + return v & (~kSplitFieldOffsetMask); } static bool Inlined(uint32_t v, FieldDescriptor::Type type) { if (type == FieldDescriptor::TYPE_STRING || type == FieldDescriptor::TYPE_BYTES) { - return (v & 1u) != 0u; + return (v & kInlinedMask) != 0u; } else { // Non string/byte fields are not inlined. return false; @@ -312,13 +345,6 @@ struct PROTOBUF_EXPORT DescriptorTable { const ServiceDescriptor** file_level_service_descriptors; }; -enum { - // Tag used on offsets for fields that don't have a real offset. - // For example, weak message fields go into the WeakFieldMap and not in an - // actual field. - kInvalidFieldOffsetTag = 0x40000000u, -}; - // AssignDescriptors() pulls the compiled FileDescriptor from the DescriptorPool // and uses it to populate all of the global variables which store pointers to // the descriptor objects. It also constructs the reflection objects. It is diff --git a/src/google/protobuf/generated_message_tctable_impl.h b/src/google/protobuf/generated_message_tctable_impl.h index 53bdc76da6..1ea1250f8b 100644 --- a/src/google/protobuf/generated_message_tctable_impl.h +++ b/src/google/protobuf/generated_message_tctable_impl.h @@ -64,10 +64,11 @@ namespace internal { // |15 .. 8|7 .. 0| // +-----------------------+-----------------------+ // : . : . : . : . : . : . : 3|========| [3] FieldType -// : : : : : : 5|=====| : : [2] FieldCardinality -// : . : . : . : . 8|========| : . : . : [3] FieldRep -// : : : 10|=====| : : : : [2] TransformValidation -// : . : .12|=====| . : . : . : . : . : [2] FormatDiscriminator +// : : : : : : . 4|==| : : [1] FieldSplit +// : : : : : 6|=====| . : : [2] FieldCardinality +// : . : . : . : 9|========| . : . : . : [3] FieldRep +// : : :11|=====| : : : : : [2] TransformValidation +// : . :13|=====| : . : . : . : . : . : [2] FormatDiscriminator // +-----------------------+-----------------------+ // |15 .. 8|7 .. 0| // +-----------------------+-----------------------+ @@ -95,11 +96,21 @@ enum FieldKind : uint16_t { static_assert(kFkMap < (1 << kFkBits), "too many types"); +// Split (1 bit): +enum FieldSplit : uint16_t { + kSplitShift = kFkShift+ kFkBits, + kSplitBits = 1, + kSplitMask = ((1 << kSplitBits) - 1) << kSplitShift, + + kSplitFalse = 0, + kSplitTrue = 1 << kSplitShift, +}; + // Cardinality (2 bits): // These values determine how many values a field can have and its presence. // Packed fields are represented in FieldType. enum Cardinality : uint16_t { - kFcShift = kFkShift + kFkBits, + kFcShift = kSplitShift+ kSplitBits, kFcBits = 2, kFcMask = ((1 << kFcBits) - 1) << kFcShift, @@ -179,7 +190,7 @@ enum FormatDiscriminator : uint16_t { }; // Update this assertion (and comments above) when adding or removing bits: -static_assert(kFmtShift + kFmtBits == 12, "number of bits changed"); +static_assert(kFmtShift + kFmtBits == 13, "number of bits changed"); // This assertion should not change unless the storage width changes: static_assert(kFmtShift + kFmtBits <= 16, "too many bits"); @@ -549,14 +560,18 @@ class PROTOBUF_EXPORT TcParser final { static constexpr const uint32_t kMtSmallScanSize = 4; // Mini parsing: + template static const char* MpVarint(PROTOBUF_TC_PARAM_DECL); static const char* MpRepeatedVarint(PROTOBUF_TC_PARAM_DECL); static const char* MpPackedVarint(PROTOBUF_TC_PARAM_DECL); + template static const char* MpFixed(PROTOBUF_TC_PARAM_DECL); static const char* MpRepeatedFixed(PROTOBUF_TC_PARAM_DECL); static const char* MpPackedFixed(PROTOBUF_TC_PARAM_DECL); + template static const char* MpString(PROTOBUF_TC_PARAM_DECL); static const char* MpRepeatedString(PROTOBUF_TC_PARAM_DECL); + template static const char* MpMessage(PROTOBUF_TC_PARAM_DECL); static const char* MpRepeatedMessage(PROTOBUF_TC_PARAM_DECL); static const char* MpMap(PROTOBUF_TC_PARAM_DECL); diff --git a/src/google/protobuf/generated_message_tctable_lite.cc b/src/google/protobuf/generated_message_tctable_lite.cc index 519b10776c..1f13e83ccb 100644 --- a/src/google/protobuf/generated_message_tctable_lite.cc +++ b/src/google/protobuf/generated_message_tctable_lite.cc @@ -315,24 +315,43 @@ const char* TcParser::MiniParse(PROTOBUF_TC_PARAM_DECL) { data.data = entry_offset << 32 | tag; using field_layout::FieldKind; - auto field_type = entry->type_card & FieldKind::kFkMask; + auto field_type = + entry->type_card & (+field_layout::kSplitMask | FieldKind::kFkMask); switch (field_type) { case FieldKind::kFkNone: PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkVarint: - PROTOBUF_MUSTTAIL return MpVarint(PROTOBUF_TC_PARAM_PASS); + PROTOBUF_MUSTTAIL return MpVarint(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkPackedVarint: PROTOBUF_MUSTTAIL return MpPackedVarint(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkFixed: - PROTOBUF_MUSTTAIL return MpFixed(PROTOBUF_TC_PARAM_PASS); + PROTOBUF_MUSTTAIL return MpFixed(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkPackedFixed: PROTOBUF_MUSTTAIL return MpPackedFixed(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkString: - PROTOBUF_MUSTTAIL return MpString(PROTOBUF_TC_PARAM_PASS); + PROTOBUF_MUSTTAIL return MpString(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkMessage: - PROTOBUF_MUSTTAIL return MpMessage(PROTOBUF_TC_PARAM_PASS); + PROTOBUF_MUSTTAIL return MpMessage(PROTOBUF_TC_PARAM_PASS); case FieldKind::kFkMap: PROTOBUF_MUSTTAIL return MpMap(PROTOBUF_TC_PARAM_PASS); + + case +field_layout::kSplitMask | FieldKind::kFkNone: + PROTOBUF_FALLTHROUGH_INTENDED; + case +field_layout::kSplitMask | FieldKind::kFkPackedVarint: + PROTOBUF_FALLTHROUGH_INTENDED; + case +field_layout::kSplitMask | FieldKind::kFkPackedFixed: + PROTOBUF_FALLTHROUGH_INTENDED; + case +field_layout::kSplitMask | FieldKind::kFkMap: + return Error(PROTOBUF_TC_PARAM_PASS); + + case +field_layout::kSplitMask | FieldKind::kFkVarint: + PROTOBUF_MUSTTAIL return MpVarint(PROTOBUF_TC_PARAM_PASS); + case +field_layout::kSplitMask | FieldKind::kFkFixed: + PROTOBUF_MUSTTAIL return MpFixed(PROTOBUF_TC_PARAM_PASS); + case +field_layout::kSplitMask | FieldKind::kFkString: + PROTOBUF_MUSTTAIL return MpString(PROTOBUF_TC_PARAM_PASS); + case +field_layout::kSplitMask | FieldKind::kFkMessage: + PROTOBUF_MUSTTAIL return MpMessage(PROTOBUF_TC_PARAM_PASS); default: return Error(PROTOBUF_TC_PARAM_PASS); } @@ -1392,6 +1411,43 @@ bool TcParser::ChangeOneof(const TcParseTableBase* table, return true; } +namespace { +enum { + kSplitOffsetIdx = 2, + kSplitSizeIdx = 3, +}; +uint32_t GetSplitOffset(const TcParseTableBase* table) { + return table->field_aux(kSplitOffsetIdx)->offset; +} + +uint32_t GetSizeofSplit(const TcParseTableBase* table) { + return table->field_aux(kSplitSizeIdx)->offset; +} + +void* MaybeGetSplitBase(MessageLite* msg, const bool is_split, + const TcParseTableBase* table, + ::google::protobuf::internal::ParseContext* ctx) { + void* out = msg; + if (is_split) { + const uint32_t split_offset = GetSplitOffset(table); + void* default_split = + TcParser::RefAt(table->default_instance, split_offset); + void*& split = TcParser::RefAt(msg, split_offset); + if (split == default_split) { + // Allocate split instance when needed. + uint32_t size = GetSizeofSplit(table); + Arena* arena = ctx->data().arena; + split = (arena == nullptr) ? ::operator new(size) + : arena->AllocateAligned(size); + memcpy(split, default_split, size); + } + out = split; + } + return out; +} +} // namespace + +template const char* TcParser::MpFixed(PROTOBUF_TC_PARAM_DECL) { const auto& entry = RefAt(table, data.entry_offset()); const uint16_t type_card = entry.type_card; @@ -1420,12 +1476,13 @@ const char* TcParser::MpFixed(PROTOBUF_TC_PARAM_DECL) { } else if (card == field_layout::kFcOneof) { ChangeOneof(table, entry, data.tag() >> 3, ctx, msg); } + void* const base = MaybeGetSplitBase(msg, is_split, table, ctx); // Copy the value: if (rep == field_layout::kRep64Bits) { - RefAt(msg, entry.offset) = UnalignedLoad(ptr); + RefAt(base, entry.offset) = UnalignedLoad(ptr); ptr += sizeof(uint64_t); } else { - RefAt(msg, entry.offset) = UnalignedLoad(ptr); + RefAt(base, entry.offset) = UnalignedLoad(ptr); ptr += sizeof(uint32_t); } PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_PASS); @@ -1510,6 +1567,7 @@ const char* TcParser::MpPackedFixed(PROTOBUF_TC_PARAM_DECL) { PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_PASS); } +template const char* TcParser::MpVarint(PROTOBUF_TC_PARAM_DECL) { const auto& entry = RefAt(table, data.entry_offset()); const uint16_t type_card = entry.type_card; @@ -1558,13 +1616,14 @@ const char* TcParser::MpVarint(PROTOBUF_TC_PARAM_DECL) { ChangeOneof(table, entry, data.tag() >> 3, ctx, msg); } + void* const base = MaybeGetSplitBase(msg, is_split, table, ctx); if (rep == field_layout::kRep64Bits) { - RefAt(msg, entry.offset) = tmp; + RefAt(base, entry.offset) = tmp; } else if (rep == field_layout::kRep32Bits) { - RefAt(msg, entry.offset) = static_cast(tmp); + RefAt(base, entry.offset) = static_cast(tmp); } else { GOOGLE_DCHECK_EQ(rep, static_cast(field_layout::kRep8Bits)); - RefAt(msg, entry.offset) = static_cast(tmp); + RefAt(base, entry.offset) = static_cast(tmp); } PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_PASS); @@ -1705,6 +1764,7 @@ bool TcParser::MpVerifyUtf8(StringPiece wire_bytes, return true; } +template const char* TcParser::MpString(PROTOBUF_TC_PARAM_DECL) { const auto& entry = RefAt(table, data.entry_offset()); const uint16_t type_card = entry.type_card; @@ -1735,9 +1795,10 @@ const char* TcParser::MpString(PROTOBUF_TC_PARAM_DECL) { bool is_valid = false; Arena* arena = ctx->data().arena; + void* const base = MaybeGetSplitBase(msg, is_split, table, ctx); switch (rep) { case field_layout::kRepAString: { - auto& field = RefAt(msg, entry.offset); + auto& field = RefAt(base, entry.offset); if (need_init) field.InitDefault(); if (arena) { ptr = ctx->ReadArenaString(ptr, &field, arena); @@ -1803,6 +1864,7 @@ const char* TcParser::MpRepeatedString(PROTOBUF_TC_PARAM_DECL) { return ToParseLoop(PROTOBUF_TC_PARAM_PASS); } +template const char* TcParser::MpMessage(PROTOBUF_TC_PARAM_DECL) { const auto& entry = RefAt(table, data.entry_offset()); const uint16_t type_card = entry.type_card; @@ -1845,8 +1907,10 @@ const char* TcParser::MpMessage(PROTOBUF_TC_PARAM_DECL) { } else if (is_oneof) { need_init = ChangeOneof(table, entry, data.tag() >> 3, ctx, msg); } + + void* const base = MaybeGetSplitBase(msg, is_split, table, ctx); SyncHasbits(msg, hasbits, table); - MessageLite*& field = RefAt(msg, entry.offset); + MessageLite*& field = RefAt(base, entry.offset); if ((type_card & field_layout::kTvMask) == field_layout::kTvTable) { auto* inner_table = table->field_aux(&entry)->table; if (need_init || field == nullptr) { diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc index 6cdc6c8393..3e044f742f 100644 --- a/src/google/protobuf/message.cc +++ b/src/google/protobuf/message.cc @@ -213,6 +213,16 @@ uint64_t Message::GetInvariantPerBuild(uint64_t salt) { return salt; } +namespace internal { +void* CreateSplitMessageGeneric(Arena* arena, void* default_split, + size_t size) { + void* split = + (arena == nullptr) ? ::operator new(size) : arena->AllocateAligned(size); + memcpy(split, default_split, size); + return split; +} +} // namespace internal + // ============================================================================= // MessageFactory diff --git a/src/google/protobuf/message.h b/src/google/protobuf/message.h index d20963bc67..82873885bb 100644 --- a/src/google/protobuf/message.h +++ b/src/google/protobuf/message.h @@ -203,12 +203,12 @@ struct Metadata { namespace internal { template -inline To* GetPointerAtOffset(Message* message, uint32_t offset) { +inline To* GetPointerAtOffset(void* message, uint32_t offset) { return reinterpret_cast(reinterpret_cast(message) + offset); } template -const To* GetConstPointerAtOffset(const Message* message, uint32_t offset) { +const To* GetConstPointerAtOffset(const void* message, uint32_t offset) { return reinterpret_cast(reinterpret_cast(message) + offset); } @@ -406,6 +406,9 @@ class PROTOBUF_EXPORT Message : public MessageLite { }; namespace internal { +// Creates and returns an allocation for a split message. +void* CreateSplitMessageGeneric(Arena* arena, void* default_split, size_t size); + // Forward-declare interfaces used to implement RepeatedFieldRef. // These are protobuf internals that users shouldn't care about. class RepeatedFieldAccessor; @@ -1029,6 +1032,10 @@ class PROTOBUF_EXPORT Reflection final { bool IsLazilyVerifiedLazyField(const FieldDescriptor* field) const; bool IsEagerlyVerifiedLazyField(const FieldDescriptor* field) const; + bool IsSplit(const FieldDescriptor* field) const { + return schema_.IsSplit(field); + } + friend class FastReflectionMessageMutator; friend bool internal::IsDescendant(Message& root, const Message& message); @@ -1174,6 +1181,14 @@ class PROTOBUF_EXPORT Reflection final { inline void SwapInlinedStringDonated(Message* lhs, Message* rhs, const FieldDescriptor* field) const; + // Returns the `_split_` pointer. Requires: IsSplit() == true. + inline const void* GetSplitField(const Message* message) const; + // Returns the address of the `_split_` pointer. Requires: IsSplit() == true. + inline void** MutableSplitField(Message* message) const; + + // Allocate the split instance if needed. + void PrepareSplitMessageForWrite(Message* message) const; + // Shallow-swap fields listed in fields vector of two messages. It is the // caller's responsibility to make sure shallow swap is safe. void UnsafeShallowSwapFields( @@ -1267,6 +1282,9 @@ class PROTOBUF_EXPORT Reflection final { }; // Abstract interface for a factory for message objects. +// +// The thread safety for this class is implementation dependent, see comments +// around GetPrototype for details class PROTOBUF_EXPORT MessageFactory { public: inline MessageFactory() {} @@ -1483,11 +1501,26 @@ bool Reflection::HasOneofField(const Message& message, static_cast(field->number())); } +const void* Reflection::GetSplitField(const Message* message) const { + GOOGLE_DCHECK(schema_.IsSplit()); + return *internal::GetConstPointerAtOffset(message, + schema_.SplitOffset()); +} + +void** Reflection::MutableSplitField(Message* message) const { + GOOGLE_DCHECK(schema_.IsSplit()); + return internal::GetPointerAtOffset(message, schema_.SplitOffset()); +} + template const Type& Reflection::GetRaw(const Message& message, const FieldDescriptor* field) const { GOOGLE_DCHECK(!schema_.InRealOneof(field) || HasOneofField(message, field)) << "Field = " << field->full_name(); + if (schema_.IsSplit(field)) { + return *internal::GetConstPointerAtOffset( + GetSplitField(&message), schema_.GetFieldOffset(field)); + } return internal::GetConstRefAtOffset(message, schema_.GetFieldOffset(field)); } diff --git a/src/google/protobuf/port_def.inc b/src/google/protobuf/port_def.inc index b32cda8ca2..0b463b8c6a 100644 --- a/src/google/protobuf/port_def.inc +++ b/src/google/protobuf/port_def.inc @@ -798,7 +798,7 @@ // Windows declares several inconvenient macro names. We #undef them and then // restore them in port_undef.inc. -#ifdef _MSC_VER +#ifdef _WIN32 #pragma push_macro("CREATE_NEW") #undef CREATE_NEW #pragma push_macro("DELETE") @@ -851,7 +851,7 @@ #undef STRICT #pragma push_macro("timezone") #undef timezone -#endif // _MSC_VER +#endif // _WIN32 #ifdef __APPLE__ // Inconvenient macro names from usr/include/math.h in some macOS SDKs. diff --git a/src/google/protobuf/port_undef.inc b/src/google/protobuf/port_undef.inc index f8968d9a86..44663219f0 100644 --- a/src/google/protobuf/port_undef.inc +++ b/src/google/protobuf/port_undef.inc @@ -110,7 +110,7 @@ #endif // Restore macro that may have been #undef'd in port_def.inc. -#ifdef _MSC_VER +#ifdef _WIN32 #pragma pop_macro("CREATE_NEW") #pragma pop_macro("DELETE") #pragma pop_macro("DOUBLE_CLICK") diff --git a/src/google/protobuf/repeated_field.h b/src/google/protobuf/repeated_field.h index a74832f787..06b3353cc7 100644 --- a/src/google/protobuf/repeated_field.h +++ b/src/google/protobuf/repeated_field.h @@ -94,23 +94,6 @@ constexpr int RepeatedFieldLowerClampLimit() { constexpr int kRepeatedFieldUpperClampLimit = (std::numeric_limits::max() / 2) + 1; -template -inline int CalculateReserve(Iter begin, Iter end, std::forward_iterator_tag) { - return static_cast(std::distance(begin, end)); -} - -template -inline int CalculateReserve(Iter /*begin*/, Iter /*end*/, - std::input_iterator_tag /*unused*/) { - return -1; -} - -template -inline int CalculateReserve(Iter begin, Iter end) { - typedef typename std::iterator_traits::iterator_category Category; - return CalculateReserve(begin, end, Category()); -} - // Swaps two blocks of memory of size sizeof(T). template inline void SwapBlock(char* p, char* q) { @@ -722,13 +705,13 @@ inline Element* RepeatedField::Add() { template template inline void RepeatedField::Add(Iter begin, Iter end) { - int reserve = internal::CalculateReserve(begin, end); - if (reserve != -1) { - if (reserve == 0) { - return; - } + if (std::is_base_of< + std::forward_iterator_tag, + typename std::iterator_traits::iterator_category>::value) { + int additional = std::distance(begin, end); + if (additional == 0) return; - Reserve(reserve + size()); + Reserve(size() + additional); // TODO(ckennelly): The compiler loses track of the buffer freshly // allocated by Reserve() by the time we call elements, so it cannot // guarantee that elements does not alias [begin(), end()). @@ -736,7 +719,7 @@ inline void RepeatedField::Add(Iter begin, Iter end) { // If restrict is available, annotating the pointer obtained from elements() // causes this to lower to memcpy instead of memmove. std::copy(begin, end, elements() + size()); - current_size_ = reserve + size(); + current_size_ = size() + additional; } else { FastAdder fast_adder(this); for (; begin != end; ++begin) fast_adder.Add(*begin); diff --git a/src/google/protobuf/source_context.pb.cc b/src/google/protobuf/source_context.pb.cc index e7525e99cf..89118797ba 100644 --- a/src/google/protobuf/source_context.pb.cc +++ b/src/google/protobuf/source_context.pb.cc @@ -46,6 +46,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fsource_5fcontext_2eproto::offsets ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::SourceContext, _impl_.file_name_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { diff --git a/src/google/protobuf/struct.pb.cc b/src/google/protobuf/struct.pb.cc index 87c72d4aa4..43c1eae0a3 100644 --- a/src/google/protobuf/struct.pb.cc +++ b/src/google/protobuf/struct.pb.cc @@ -84,6 +84,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fstruct_2eproto::offsets[] PROTOBU ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse, key_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse, value_), 0, @@ -94,6 +96,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fstruct_2eproto::offsets[] PROTOBU ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Struct, _impl_.fields_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Value, _internal_metadata_), @@ -101,6 +105,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fstruct_2eproto::offsets[] PROTOBU PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Value, _impl_._oneof_case_[0]), ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, @@ -114,13 +120,15 @@ const uint32_t TableStruct_google_2fprotobuf_2fstruct_2eproto::offsets[] PROTOBU ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::ListValue, _impl_.values_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { - { 0, 8, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse)}, - { 10, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Struct)}, - { 17, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Value)}, - { 30, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ListValue)}, + { 0, 10, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse)}, + { 12, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Struct)}, + { 21, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Value)}, + { 36, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::ListValue)}, }; static const ::_pb::Message* const file_default_instances[] = { diff --git a/src/google/protobuf/timestamp.pb.cc b/src/google/protobuf/timestamp.pb.cc index 728a004389..09b1b176d6 100644 --- a/src/google/protobuf/timestamp.pb.cc +++ b/src/google/protobuf/timestamp.pb.cc @@ -47,6 +47,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ftimestamp_2eproto::offsets[] PROT ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Timestamp, _impl_.seconds_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Timestamp, _impl_.nanos_), }; diff --git a/src/google/protobuf/type.pb.cc b/src/google/protobuf/type.pb.cc index e29bbb83a1..4f76508f72 100644 --- a/src/google/protobuf/type.pb.cc +++ b/src/google/protobuf/type.pb.cc @@ -119,6 +119,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ftype_2eproto::offsets[] PROTOBUF_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Type, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Type, _impl_.fields_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Type, _impl_.oneofs_), @@ -131,6 +133,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ftype_2eproto::offsets[] PROTOBUF_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Field, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Field, _impl_.cardinality_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Field, _impl_.number_), @@ -147,6 +151,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ftype_2eproto::offsets[] PROTOBUF_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Enum, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Enum, _impl_.enumvalue_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Enum, _impl_.options_), @@ -158,6 +164,8 @@ const uint32_t TableStruct_google_2fprotobuf_2ftype_2eproto::offsets[] PROTOBUF_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValue, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValue, _impl_.number_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::EnumValue, _impl_.options_), @@ -167,15 +175,17 @@ const uint32_t TableStruct_google_2fprotobuf_2ftype_2eproto::offsets[] PROTOBUF_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Option, _impl_.name_), PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Option, _impl_.value_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Type)}, - { 12, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Field)}, - { 28, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Enum)}, - { 39, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValue)}, - { 48, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Option)}, + { 14, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Field)}, + { 32, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Enum)}, + { 45, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::EnumValue)}, + { 56, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Option)}, }; static const ::_pb::Message* const file_default_instances[] = { diff --git a/src/google/protobuf/wrappers.pb.cc b/src/google/protobuf/wrappers.pb.cc index 40ba60a492..7f78690e6e 100644 --- a/src/google/protobuf/wrappers.pb.cc +++ b/src/google/protobuf/wrappers.pb.cc @@ -150,6 +150,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::DoubleValue, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FloatValue, _internal_metadata_), @@ -157,6 +159,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::FloatValue, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Int64Value, _internal_metadata_), @@ -164,6 +168,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Int64Value, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UInt64Value, _internal_metadata_), @@ -171,6 +177,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UInt64Value, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Int32Value, _internal_metadata_), @@ -178,6 +186,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::Int32Value, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UInt32Value, _internal_metadata_), @@ -185,6 +195,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::UInt32Value, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::BoolValue, _internal_metadata_), @@ -192,6 +204,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::BoolValue, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::StringValue, _internal_metadata_), @@ -199,6 +213,8 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::StringValue, _impl_.value_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::BytesValue, _internal_metadata_), @@ -206,18 +222,20 @@ const uint32_t TableStruct_google_2fprotobuf_2fwrappers_2eproto::offsets[] PROTO ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ + ~0u, // no _split_ + ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::PROTOBUF_NAMESPACE_ID::BytesValue, _impl_.value_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::DoubleValue)}, - { 7, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FloatValue)}, - { 14, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Int64Value)}, - { 21, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UInt64Value)}, - { 28, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Int32Value)}, - { 35, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UInt32Value)}, - { 42, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::BoolValue)}, - { 49, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::StringValue)}, - { 56, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::BytesValue)}, + { 9, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::FloatValue)}, + { 18, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Int64Value)}, + { 27, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UInt64Value)}, + { 36, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::Int32Value)}, + { 45, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::UInt32Value)}, + { 54, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::BoolValue)}, + { 63, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::StringValue)}, + { 72, -1, -1, sizeof(::PROTOBUF_NAMESPACE_ID::BytesValue)}, }; static const ::_pb::Message* const file_default_instances[] = {