Merge pull request #3057 from xfxyjwf/3.3.x

Fix several C++ build issues.
pull/3063/head
Feng Xiao 8 years ago committed by GitHub
commit 3c369dc07c
  1. 1
      BUILD
  2. 2
      cmake/extract_includes.bat.in
  3. 1
      cmake/libprotobuf.cmake
  4. 1
      src/Makefile.am
  5. 4
      src/google/protobuf/compiler/code_generator.h
  6. 8
      src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc
  7. 6
      src/google/protobuf/generated_message_table_driven.cc

@ -128,6 +128,7 @@ cc_library(
"src/google/protobuf/extension_set_heavy.cc", "src/google/protobuf/extension_set_heavy.cc",
"src/google/protobuf/field_mask.pb.cc", "src/google/protobuf/field_mask.pb.cc",
"src/google/protobuf/generated_message_reflection.cc", "src/google/protobuf/generated_message_reflection.cc",
"src/google/protobuf/generated_message_table_driven.cc",
"src/google/protobuf/io/gzip_stream.cc", "src/google/protobuf/io/gzip_stream.cc",
"src/google/protobuf/io/printer.cc", "src/google/protobuf/io/printer.cc",
"src/google/protobuf/io/strtod.cc", "src/google/protobuf/io/strtod.cc",

@ -50,6 +50,7 @@ copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\field_mask.pb.h" incl
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_reflection.h" include\google\protobuf\generated_enum_reflection.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_reflection.h" include\google\protobuf\generated_enum_reflection.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_util.h" include\google\protobuf\generated_enum_util.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_util.h" include\google\protobuf\generated_enum_util.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_reflection.h" include\google\protobuf\generated_message_reflection.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_reflection.h" include\google\protobuf\generated_message_reflection.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_table_driven.h" include\google\protobuf\generated_message_table_driven.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_util.h" include\google\protobuf\generated_message_util.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_util.h" include\google\protobuf\generated_message_util.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\has_bits.h" include\google\protobuf\has_bits.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\has_bits.h" include\google\protobuf\has_bits.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\coded_stream.h" include\google\protobuf\io\coded_stream.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\coded_stream.h" include\google\protobuf\io\coded_stream.h
@ -70,6 +71,7 @@ copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_type_handler.h" i
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message.h" include\google\protobuf\message.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message.h" include\google\protobuf\message.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message_lite.h" include\google\protobuf\message_lite.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message_lite.h" include\google\protobuf\message_lite.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\metadata.h" include\google\protobuf\metadata.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\metadata.h" include\google\protobuf\metadata.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\metadata_lite.h" include\google\protobuf\metadata_lite.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection.h" include\google\protobuf\reflection.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection.h" include\google\protobuf\reflection.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection_ops.h" include\google\protobuf\reflection_ops.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection_ops.h" include\google\protobuf\reflection_ops.h
copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\repeated_field.h" include\google\protobuf\repeated_field.h copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\repeated_field.h" include\google\protobuf\repeated_field.h

@ -13,6 +13,7 @@ set(libprotobuf_files
${protobuf_source_dir}/src/google/protobuf/extension_set_heavy.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/field_mask.pb.cc
${protobuf_source_dir}/src/google/protobuf/generated_message_reflection.cc ${protobuf_source_dir}/src/google/protobuf/generated_message_reflection.cc
${protobuf_source_dir}/src/google/protobuf/generated_message_table_driven.cc
${protobuf_source_dir}/src/google/protobuf/io/gzip_stream.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/printer.cc
${protobuf_source_dir}/src/google/protobuf/io/strtod.cc ${protobuf_source_dir}/src/google/protobuf/io/strtod.cc

@ -250,6 +250,7 @@ libprotobuf_la_SOURCES = \
google/protobuf/extension_set_heavy.cc \ google/protobuf/extension_set_heavy.cc \
google/protobuf/field_mask.pb.cc \ google/protobuf/field_mask.pb.cc \
google/protobuf/generated_message_reflection.cc \ google/protobuf/generated_message_reflection.cc \
google/protobuf/generated_message_table_driven.cc \
google/protobuf/map_field.cc \ google/protobuf/map_field.cc \
google/protobuf/message.cc \ google/protobuf/message.cc \
google/protobuf/reflection_internal.h \ google/protobuf/reflection_internal.h \

@ -162,8 +162,8 @@ typedef GeneratorContext OutputDirectory;
// "foo=bar,baz,qux=corge" // "foo=bar,baz,qux=corge"
// parses to the pairs: // parses to the pairs:
// ("foo", "bar"), ("baz", ""), ("qux", "corge") // ("foo", "bar"), ("baz", ""), ("qux", "corge")
extern void ParseGeneratorParameter(const string&, LIBPROTOC_EXPORT void ParseGeneratorParameter(
std::vector<std::pair<string, string> >*); const string&, std::vector<std::pair<string, string> >*);
} // namespace compiler } // namespace compiler
} // namespace protobuf } // namespace protobuf

@ -134,6 +134,14 @@ class GenerateAndTest {
}; };
TEST(CsharpBootstrapTest, GeneratedCsharpDescriptorMatches) { TEST(CsharpBootstrapTest, GeneratedCsharpDescriptorMatches) {
// Skip this whole test if the csharp directory doesn't exist (i.e., a C++11
// only distribution).
string descriptor_file_name =
"../csharp/src/Google.Protobuf/Reflection/Descriptor.cs";
if (!File::Exists(TestSourceDir() + "/" + descriptor_file_name)) {
return;
}
MockErrorCollector error_collector; MockErrorCollector error_collector;
DiskSourceTree source_tree; DiskSourceTree source_tree;
Importer importer(&source_tree, &error_collector); Importer importer(&source_tree, &error_collector);

@ -74,7 +74,7 @@ inline Arena* GetArena(MessageLite* msg, int64 arena_offset) {
template <typename Type> template <typename Type>
inline Type* AddField(MessageLite* msg, int64 offset) { inline Type* AddField(MessageLite* msg, int64 offset) {
#if LANG_CXX11 #if LANG_CXX11
static_assert(std::is_trivially_copy_assignable<Type>::value, static_assert(google::protobuf::internal::has_trivial_copy<Type>::value,
"Do not assign"); "Do not assign");
#endif #endif
@ -94,7 +94,7 @@ inline string* AddField<string>(MessageLite* msg, int64 offset) {
template <typename Type> template <typename Type>
inline void AddField(MessageLite* msg, int64 offset, Type value) { inline void AddField(MessageLite* msg, int64 offset, Type value) {
#if LANG_CXX11 #if LANG_CXX11
static_assert(std::is_trivially_copy_assignable<Type>::value, static_assert(google::protobuf::internal::has_trivial_copy<Type>::value,
"Do not assign"); "Do not assign");
#endif #endif
*AddField<Type>(msg, offset) = value; *AddField<Type>(msg, offset) = value;
@ -118,7 +118,7 @@ template <typename Type>
inline void SetField(MessageLite* msg, uint32* has_bits, uint32 has_bit_index, inline void SetField(MessageLite* msg, uint32* has_bits, uint32 has_bit_index,
int64 offset, Type value) { int64 offset, Type value) {
#if LANG_CXX11 #if LANG_CXX11
static_assert(std::is_trivially_copy_assignable<Type>::value, static_assert(google::protobuf::internal::has_trivial_copy<Type>::value,
"Do not assign"); "Do not assign");
#endif #endif
*MutableField<Type>(msg, has_bits, has_bit_index, offset) = value; *MutableField<Type>(msg, has_bits, has_bit_index, offset) = value;

Loading…
Cancel
Save