Index: third_party/protobuf/patches/01_build_fixes.patch |
diff --git a/third_party/protobuf/patches/01_build_fixes.patch b/third_party/protobuf/patches/01_build_fixes.patch |
deleted file mode 100644 |
index d781c832f506afe8c2ee2318b990ffe0b5c2a3de..0000000000000000000000000000000000000000 |
--- a/third_party/protobuf/patches/01_build_fixes.patch |
+++ /dev/null |
@@ -1,349 +0,0 @@ |
-diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium |
-index 0375fd1..da9f26f 100644 |
---- a/third_party/protobuf/README.chromium |
-+++ b/third_party/protobuf/README.chromium |
-@@ -19,6 +19,9 @@ Steps used to create the current version: |
- will need to modify the README to include the correct revision, and modify |
- the buildfiles to reflect the actual files in the source tree, what they |
- #include, what warnings they trigger, etc. |
-+ 01: Miscellaneous build fixes to make the upstream sources compile. At this |
-+ point you should be able to build the protobuf_* and protoc targets (but |
-+ not necessarily anything depending on them). |
- (3) Generate descriptor_pb2.py using something like the following steps. Make |
- sure you've regenerated your buildfiles and will build protoc from the |
- newly-modified sources above. |
-diff --git a/third_party/protobuf/src/google/protobuf/arena.cc b/third_party/protobuf/src/google/protobuf/arena.cc |
-index ed1c5ef..ff7b466 100644 |
---- a/third_party/protobuf/src/google/protobuf/arena.cc |
-+++ b/third_party/protobuf/src/google/protobuf/arena.cc |
-@@ -38,17 +38,17 @@ namespace google { |
- namespace protobuf { |
- |
- google::protobuf::internal::SequenceNumber Arena::lifecycle_id_generator_; |
--#ifdef PROTOBUF_USE_DLLS |
--Arena::ThreadCache& Arena::thread_cache() { |
-- static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_ = { -1, NULL }; |
-- return thread_cache_; |
--} |
--#elif defined(GOOGLE_PROTOBUF_NO_THREADLOCAL) |
-+#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL) |
- Arena::ThreadCache& Arena::thread_cache() { |
- static internal::ThreadLocalStorage<ThreadCache>* thread_cache_ = |
- new internal::ThreadLocalStorage<ThreadCache>(); |
- return *thread_cache_->Get(); |
- } |
-+#elif defined(PROTOBUF_USE_DLLS) |
-+Arena::ThreadCache& Arena::thread_cache() { |
-+ static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_ = { -1, NULL }; |
-+ return thread_cache_; |
-+} |
- #else |
- GOOGLE_THREAD_LOCAL Arena::ThreadCache Arena::thread_cache_ = { -1, NULL }; |
- #endif |
-diff --git a/third_party/protobuf/src/google/protobuf/arena.h b/third_party/protobuf/src/google/protobuf/arena.h |
-index 51149ba..2ef20a3 100644 |
---- a/third_party/protobuf/src/google/protobuf/arena.h |
-+++ b/third_party/protobuf/src/google/protobuf/arena.h |
-@@ -34,7 +34,16 @@ |
- #if __cplusplus >= 201103L |
- #include <google/protobuf/stubs/type_traits.h> |
- #endif |
-+#if defined(_MSC_VER) && !_HAS_EXCEPTIONS |
-+// Work around bugs in MSVC <typeinfo> header when _HAS_EXCEPTIONS=0. |
-+#include <exception> |
- #include <typeinfo> |
-+namespace std { |
-+using type_info = ::type_info; |
-+} |
-+#else |
-+#include <typeinfo> |
-+#endif |
- |
- #include <google/protobuf/stubs/atomic_sequence_num.h> |
- #include <google/protobuf/stubs/atomicops.h> |
-@@ -525,15 +534,15 @@ class LIBPROTOBUF_EXPORT Arena { |
- |
- static const size_t kHeaderSize = sizeof(Block); |
- static google::protobuf::internal::SequenceNumber lifecycle_id_generator_; |
--#ifdef PROTOBUF_USE_DLLS |
-- // Thread local variables cannot be exposed through DLL interface but we can |
-- // wrap them in static functions. |
-- static ThreadCache& thread_cache(); |
--#elif defined(GOOGLE_PROTOBUF_NO_THREADLOCAL) |
-+#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL) |
- // Android ndk does not support GOOGLE_THREAD_LOCAL keyword so we use a custom thread |
- // local storage class we implemented. |
- // iOS also does not support the GOOGLE_THREAD_LOCAL keyword. |
- static ThreadCache& thread_cache(); |
-+#elif defined(PROTOBUF_USE_DLLS) |
-+ // Thread local variables cannot be exposed through DLL interface but we can |
-+ // wrap them in static functions. |
-+ static ThreadCache& thread_cache(); |
- #else |
- static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_; |
- static ThreadCache& thread_cache() { return thread_cache_; } |
-diff --git a/third_party/protobuf/src/google/protobuf/message_lite.cc b/third_party/protobuf/src/google/protobuf/message_lite.cc |
-index 4f63ad2..da6e933 100644 |
---- a/third_party/protobuf/src/google/protobuf/message_lite.cc |
-+++ b/third_party/protobuf/src/google/protobuf/message_lite.cc |
-@@ -35,6 +35,7 @@ |
- |
- #include <google/protobuf/message_lite.h> |
- #include <google/protobuf/arena.h> |
-+#include <google/protobuf/repeated_field.h> |
- #include <string> |
- #include <google/protobuf/stubs/common.h> |
- #include <google/protobuf/io/coded_stream.h> |
-@@ -353,5 +354,18 @@ string MessageLite::SerializePartialAsString() const { |
- return output; |
- } |
- |
-+namespace internal { |
-+template<> |
-+MessageLite* GenericTypeHandler<MessageLite>::NewFromPrototype( |
-+ const MessageLite* prototype, google::protobuf::Arena* arena) { |
-+ return prototype->New(arena); |
-+} |
-+template <> |
-+void GenericTypeHandler<MessageLite>::Merge(const MessageLite& from, |
-+ MessageLite* to) { |
-+ to->CheckTypeAndMergeFrom(from); |
-+} |
-+} // namespace internal |
-+ |
- } // namespace protobuf |
- } // namespace google |
-diff --git a/third_party/protobuf/src/google/protobuf/repeated_field.h b/third_party/protobuf/src/google/protobuf/repeated_field.h |
-index 14f4629..03577ea 100644 |
---- a/third_party/protobuf/src/google/protobuf/repeated_field.h |
-+++ b/third_party/protobuf/src/google/protobuf/repeated_field.h |
-@@ -545,17 +545,11 @@ class GenericTypeHandler { |
- // constructors and destructors. Note that the GOOGLE_ATTRIBUTE_NOINLINE macro |
- // requires the 'inline' storage class here, which is somewhat confusing, but |
- // the compiler does the right thing. |
-- static inline GenericType* NewFromPrototype(const GenericType* prototype, |
-- ::google::protobuf::Arena* arena = NULL) |
-- GOOGLE_ATTRIBUTE_NOINLINE { |
-- return New(arena); |
-- } |
-- static inline void Delete(GenericType* value, Arena* arena) |
-- GOOGLE_ATTRIBUTE_NOINLINE { |
-- if (arena == NULL) { |
-- delete value; |
-- } |
-- } |
-+ static GenericType* NewFromPrototype(const GenericType* prototype, |
-+ ::google::protobuf::Arena* arena = NULL) |
-+ GOOGLE_ATTRIBUTE_NOINLINE; |
-+ static void Delete(GenericType* value, Arena* arena) |
-+ GOOGLE_ATTRIBUTE_NOINLINE; |
- static inline ::google::protobuf::Arena* GetArena(GenericType* value) { |
- return ::google::protobuf::Arena::GetArena<Type>(value); |
- } |
-@@ -564,10 +558,8 @@ class GenericTypeHandler { |
- } |
- |
- static inline void Clear(GenericType* value) { value->Clear(); } |
-- static inline void Merge(const GenericType& from, GenericType* to) |
-- GOOGLE_ATTRIBUTE_NOINLINE { |
-- to->MergeFrom(from); |
-- } |
-+ static void Merge(const GenericType& from, GenericType* to) |
-+ GOOGLE_ATTRIBUTE_NOINLINE; |
- static inline int SpaceUsed(const GenericType& value) { |
- return value.SpaceUsed(); |
- } |
-@@ -576,11 +568,32 @@ class GenericTypeHandler { |
- } |
- }; |
- |
--template<> |
--inline MessageLite* GenericTypeHandler<MessageLite>::NewFromPrototype( |
-- const MessageLite* prototype, google::protobuf::Arena* arena) { |
-- return prototype->New(arena); |
-+template<typename GenericType> |
-+GenericType* GenericTypeHandler<GenericType>::NewFromPrototype( |
-+ const GenericType* prototype, |
-+ ::google::protobuf::Arena* arena) { |
-+ return New(arena); |
-+} |
-+template<typename GenericType> |
-+void GenericTypeHandler<GenericType>::Delete(GenericType* value, Arena* arena) { |
-+ if (arena == NULL) { |
-+ delete value; |
-+ } |
-+} |
-+template<typename GenericType> |
-+void GenericTypeHandler<GenericType>::Merge(const GenericType& from, |
-+ GenericType* to) { |
-+ to->MergeFrom(from); |
- } |
-+ |
-+// NewFromPrototype() and Merge() cannot be defined here; if they're declared |
-+// inline the compiler will complain about not matching ATTRIBUTE_NOINLINE |
-+// above, and if not, compilation will result in multiple definitions. These |
-+// are therefore declared as specializations here and defined in |
-+// message_lite.cc. |
-+template<> |
-+MessageLite* GenericTypeHandler<MessageLite>::NewFromPrototype( |
-+ const MessageLite* prototype, google::protobuf::Arena* arena); |
- template<> |
- inline google::protobuf::Arena* GenericTypeHandler<MessageLite>::GetArena( |
- MessageLite* value) { |
-@@ -591,14 +604,9 @@ inline void* GenericTypeHandler<MessageLite>::GetMaybeArenaPointer( |
- MessageLite* value) { |
- return value->GetMaybeArenaPointer(); |
- } |
-- |
--// Implements GenericTypeHandler specialization required by RepeatedPtrFields |
--// to work with MessageLite type. |
- template <> |
--inline void GenericTypeHandler<MessageLite>::Merge( |
-- const MessageLite& from, MessageLite* to) { |
-- to->CheckTypeAndMergeFrom(from); |
--} |
-+void GenericTypeHandler<MessageLite>::Merge(const MessageLite& from, |
-+ MessageLite* to); |
- |
- // Declarations of the specialization as we cannot define them here, as the |
- // header that defines ProtocolMessage depends on types defined in this header. |
-diff --git a/third_party/protobuf/src/google/protobuf/stubs/hash.h b/third_party/protobuf/src/google/protobuf/stubs/hash.h |
-index 9a6b217..3ff7253 100644 |
---- a/third_party/protobuf/src/google/protobuf/stubs/hash.h |
-+++ b/third_party/protobuf/src/google/protobuf/stubs/hash.h |
-@@ -41,10 +41,10 @@ |
- #define GOOGLE_PROTOBUF_HAVE_HASH_MAP 1 |
- #define GOOGLE_PROTOBUF_HAVE_HASH_SET 1 |
- |
--// Use C++11 unordered_{map|set} if available. Otherwise, libc++ always support |
--// unordered_{map|set} |
--#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X) || \ |
-- defined(_LIBCPP_VERSION) |
-+// Use C++11 unordered_{map|set} if available. |
-+#if ((__cplusplus >= 201103L) && \ |
-+ ((defined(__GLIBCXX__) && (__GLIBCXX__ > 20090421)) || \ |
-+ (defined(_LIBCPP_VERSION) && (_LIBCPP_STD_VER >= 11)))) |
- # define GOOGLE_PROTOBUF_HAS_CXX11_HASH |
- |
- // For XCode >= 4.6: the compiler is clang with libc++. |
-diff --git a/third_party/protobuf/src/google/protobuf/stubs/mathlimits.h b/third_party/protobuf/src/google/protobuf/stubs/mathlimits.h |
-index d984694..090d1c0 100644 |
---- a/third_party/protobuf/src/google/protobuf/stubs/mathlimits.h |
-+++ b/third_party/protobuf/src/google/protobuf/stubs/mathlimits.h |
-@@ -43,15 +43,10 @@ |
- #ifndef UTIL_MATH_MATHLIMITS_H__ |
- #define UTIL_MATH_MATHLIMITS_H__ |
- |
--// <math.h> lacks a lot of prototypes. However, this file needs <math.h> to |
--// access old-fashioned isinf et al. Even worse more: this file must not |
--// include <cmath> because that breaks the definition of isinf with gcc 4.9. |
--// |
--// TODO(mec): after C++11 everywhere, use <cmath> and std::isinf in this file. |
--#include <math.h> |
- #include <string.h> |
- |
- #include <cfloat> |
-+#include <cmath> |
- |
- #include <google/protobuf/stubs/common.h> |
- |
-@@ -230,11 +225,11 @@ DECL_UNSIGNED_INT_LIMITS(unsigned long long int) |
- static bool IsNegInf(const Type x) { return _fpclass(x) == _FPCLASS_NINF; } |
- #else |
- #define DECL_FP_LIMIT_FUNCS \ |
-- static bool IsFinite(const Type x) { return !isinf(x) && !isnan(x); } \ |
-- static bool IsNaN(const Type x) { return isnan(x); } \ |
-- static bool IsInf(const Type x) { return isinf(x); } \ |
-- static bool IsPosInf(const Type x) { return isinf(x) && x > 0; } \ |
-- static bool IsNegInf(const Type x) { return isinf(x) && x < 0; } |
-+ static bool IsFinite(const Type x) { return !std::isinf(x) && !std::isnan(x); } \ |
-+ static bool IsNaN(const Type x) { return std::isnan(x); } \ |
-+ static bool IsInf(const Type x) { return std::isinf(x); } \ |
-+ static bool IsPosInf(const Type x) { return std::isinf(x) && x > 0; } \ |
-+ static bool IsNegInf(const Type x) { return std::isinf(x) && x < 0; } |
- #endif |
- |
- // We can't put floating-point constant values in the header here because |
-diff --git a/third_party/protobuf/src/google/protobuf/stubs/mathutil.h b/third_party/protobuf/src/google/protobuf/stubs/mathutil.h |
-index 99c4d45..cfd073b 100644 |
---- a/third_party/protobuf/src/google/protobuf/stubs/mathutil.h |
-+++ b/third_party/protobuf/src/google/protobuf/stubs/mathutil.h |
-@@ -31,7 +31,8 @@ |
- #define GOOGLE_PROTOBUF_STUBS_MATHUTIL_H_ |
- |
- #include <float.h> |
--#include <math.h> |
-+ |
-+#include <cmath> |
- |
- #include <google/protobuf/stubs/common.h> |
- #include <google/protobuf/stubs/logging.h> |
-@@ -45,9 +46,9 @@ bool IsNan(T value) { |
- return false; |
- } |
- template<> |
--inline bool IsNan(float value) { return isnan(value); } |
-+inline bool IsNan(float value) { return std::isnan(value); } |
- template<> |
--inline bool IsNan(double value) { return isnan(value); } |
-+inline bool IsNan(double value) { return std::isnan(value); } |
- |
- template<typename T> |
- bool AlmostEquals(T a, T b) { |
-diff --git a/third_party/protobuf/src/google/protobuf/stubs/port.h b/third_party/protobuf/src/google/protobuf/stubs/port.h |
-index 8a5d1a1..da695ff 100644 |
---- a/third_party/protobuf/src/google/protobuf/stubs/port.h |
-+++ b/third_party/protobuf/src/google/protobuf/stubs/port.h |
-@@ -79,6 +79,15 @@ |
- #define LIBPROTOC_EXPORT |
- #endif |
- |
-+// These #includes are for the byte swap functions declared later on. |
-+#ifdef _MSC_VER |
-+#include <stdlib.h> // NOLINT(build/include) |
-+#elif defined(__APPLE__) |
-+#include <libkern/OSByteOrder.h> |
-+#elif defined(__GLIBC__) || defined(__CYGWIN__) |
-+#include <byteswap.h> // IWYU pragma: export |
-+#endif |
-+ |
- // =================================================================== |
- // from google3/base/port.h |
- namespace google { |
-@@ -272,7 +281,6 @@ inline void GOOGLE_UNALIGNED_STORE64(void *p, uint64 v) { |
- // The following guarantees declaration of the byte swap functions, and |
- // defines __BYTE_ORDER for MSVC |
- #ifdef _MSC_VER |
--#include <stdlib.h> // NOLINT(build/include) |
- #define __BYTE_ORDER __LITTLE_ENDIAN |
- #define bswap_16(x) _byteswap_ushort(x) |
- #define bswap_32(x) _byteswap_ulong(x) |
-@@ -280,15 +288,11 @@ inline void GOOGLE_UNALIGNED_STORE64(void *p, uint64 v) { |
- |
- #elif defined(__APPLE__) |
- // Mac OS X / Darwin features |
--#include <libkern/OSByteOrder.h> |
- #define bswap_16(x) OSSwapInt16(x) |
- #define bswap_32(x) OSSwapInt32(x) |
- #define bswap_64(x) OSSwapInt64(x) |
- |
--#elif defined(__GLIBC__) || defined(__CYGWIN__) |
--#include <byteswap.h> // IWYU pragma: export |
-- |
--#else |
-+#elif !defined(__GLIBC__) && !defined(__CYGWIN__) |
- |
- static inline uint16 bswap_16(uint16 x) { |
- return static_cast<uint16>(((x & 0xFF) << 8) | ((x & 0xFF00) >> 8)); |
-diff --git a/third_party/protobuf/src/google/protobuf/stubs/time.cc b/third_party/protobuf/src/google/protobuf/stubs/time.cc |
-index 3319a24..49c0412 100644 |
---- a/third_party/protobuf/src/google/protobuf/stubs/time.cc |
-+++ b/third_party/protobuf/src/google/protobuf/stubs/time.cc |
-@@ -21,7 +21,6 @@ static const int64 kSecondsFromEraToEpoch = 62135596800LL; |
- static const int64 kMinTime = -62135596800LL; // 0001-01-01T00:00:00 |
- static const int64 kMaxTime = 253402300799LL; // 9999-12-31T23:59:59 |
- |
--static const int kNanosPerSecond = 1000000000; |
- static const int kNanosPerMillisecond = 1000000; |
- static const int kNanosPerMicrosecond = 1000; |
- |