From 668439d16a5c30587ab77461fb3211306ad62587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 11 Apr 2019 17:48:49 +0200 Subject: [PATCH] vhacd: Reapply downstream changes to namespace conflicting bullet code Also adding a patch to easily identify and reapply them. --- thirdparty/README.md | 5 + thirdparty/vhacd/0001-bullet-namespace.patch | 213 ++++++++++++++++++ thirdparty/vhacd/inc/btAlignedAllocator.h | 9 + thirdparty/vhacd/inc/btAlignedObjectArray.h | 8 + thirdparty/vhacd/inc/btConvexHullComputer.h | 8 + thirdparty/vhacd/inc/btMinMax.h | 8 + thirdparty/vhacd/inc/btScalar.h | 17 ++ thirdparty/vhacd/inc/btVector3.h | 8 + thirdparty/vhacd/src/btAlignedAllocator.cpp | 8 + thirdparty/vhacd/src/btConvexHullComputer.cpp | 8 + 10 files changed, 292 insertions(+) create mode 100644 thirdparty/vhacd/0001-bullet-namespace.patch diff --git a/thirdparty/README.md b/thirdparty/README.md index 6e8be5d5ee0..6997a9ba96d 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -539,6 +539,11 @@ Files extracted from upstream source: - From `src/VHACD_Lib/`: `inc`, `public` and `src` - `LICENSE` +Some downstream changes have been made and are identified by +`// -- GODOT start --` and `// -- GODOT end --` comments. +They can be reapplied using the patches included in the `vhacd` +folder. + ## zlib diff --git a/thirdparty/vhacd/0001-bullet-namespace.patch b/thirdparty/vhacd/0001-bullet-namespace.patch new file mode 100644 index 00000000000..cfb1ffeff07 --- /dev/null +++ b/thirdparty/vhacd/0001-bullet-namespace.patch @@ -0,0 +1,213 @@ +diff --git a/thirdparty/vhacd/inc/btAlignedAllocator.h b/thirdparty/vhacd/inc/btAlignedAllocator.h +index 11f6e12dc..94e71d512 100644 +--- a/thirdparty/vhacd/inc/btAlignedAllocator.h ++++ b/thirdparty/vhacd/inc/btAlignedAllocator.h +@@ -21,6 +21,11 @@ subject to the following restrictions: + ///that is better portable and more predictable + + #include "btScalar.h" ++ ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + //#define BT_DEBUG_MEMORY_ALLOCATIONS 1 + #ifdef BT_DEBUG_MEMORY_ALLOCATIONS + +@@ -101,4 +106,8 @@ public: + friend bool operator==(const self_type&, const self_type&) { return true; } + }; + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_ALIGNED_ALLOCATOR +diff --git a/thirdparty/vhacd/inc/btAlignedObjectArray.h b/thirdparty/vhacd/inc/btAlignedObjectArray.h +index e6620adf6..1ce03d21b 100644 +--- a/thirdparty/vhacd/inc/btAlignedObjectArray.h ++++ b/thirdparty/vhacd/inc/btAlignedObjectArray.h +@@ -38,6 +38,10 @@ subject to the following restrictions: + #include //for placement new + #endif //BT_USE_PLACEMENT_NEW + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + ///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods + ///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data + template +@@ -445,4 +449,8 @@ public: + } + }; + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_OBJECT_ARRAY__ +diff --git a/thirdparty/vhacd/inc/btConvexHullComputer.h b/thirdparty/vhacd/inc/btConvexHullComputer.h +index 3c5075c2c..04bb96f64 100644 +--- a/thirdparty/vhacd/inc/btConvexHullComputer.h ++++ b/thirdparty/vhacd/inc/btConvexHullComputer.h +@@ -18,6 +18,10 @@ subject to the following restrictions: + #include "btAlignedObjectArray.h" + #include "btVector3.h" + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + /// Convex hull implementation based on Preparata and Hong + /// See http://code.google.com/p/bullet/issues/detail?id=275 + /// Ole Kniemeyer, MAXON Computer GmbH +@@ -94,4 +98,8 @@ public: + } + }; + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_CONVEX_HULL_COMPUTER_H +diff --git a/thirdparty/vhacd/inc/btMinMax.h b/thirdparty/vhacd/inc/btMinMax.h +index 40b0ceb6e..9bc1e1c77 100644 +--- a/thirdparty/vhacd/inc/btMinMax.h ++++ b/thirdparty/vhacd/inc/btMinMax.h +@@ -17,6 +17,10 @@ subject to the following restrictions: + + #include "btScalar.h" + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + template + SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) + { +@@ -62,4 +66,8 @@ SIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub) + } + } + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_GEN_MINMAX_H +diff --git a/thirdparty/vhacd/inc/btScalar.h b/thirdparty/vhacd/inc/btScalar.h +index b814474bd..617fd7c44 100644 +--- a/thirdparty/vhacd/inc/btScalar.h ++++ b/thirdparty/vhacd/inc/btScalar.h +@@ -28,11 +28,19 @@ subject to the following restrictions: + /* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/ + #define BT_BULLET_VERSION 279 + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + inline int32_t btGetVersion() + { + return BT_BULLET_VERSION; + } + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #if defined(DEBUG) || defined(_DEBUG) + #define BT_DEBUG + #endif +@@ -199,6 +207,10 @@ inline int32_t btGetVersion() + #endif //__CELLOS_LV2__ + #endif + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + ///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. + #if defined(BT_USE_DOUBLE_PRECISION) + typedef double btScalar; +@@ -530,4 +542,9 @@ struct btTypedObject { + return m_objectType; + } + }; ++ ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_SCALAR_H +diff --git a/thirdparty/vhacd/inc/btVector3.h b/thirdparty/vhacd/inc/btVector3.h +index 0f2fefbbd..4ed971673 100644 +--- a/thirdparty/vhacd/inc/btVector3.h ++++ b/thirdparty/vhacd/inc/btVector3.h +@@ -26,6 +26,10 @@ subject to the following restrictions: + #define btVector3DataName "btVector3FloatData" + #endif //BT_USE_DOUBLE_PRECISION + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + /**@brief btVector3 can be used to represent 3D points and vectors. + * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user + * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers +@@ -712,4 +716,8 @@ SIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3Data& dataIn + m_floats[i] = dataIn.m_floats[i]; + } + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_VECTOR3_H +diff --git a/thirdparty/vhacd/src/btAlignedAllocator.cpp b/thirdparty/vhacd/src/btAlignedAllocator.cpp +index 11d594f6c..ce0e7f26f 100644 +--- a/thirdparty/vhacd/src/btAlignedAllocator.cpp ++++ b/thirdparty/vhacd/src/btAlignedAllocator.cpp +@@ -15,6 +15,10 @@ subject to the following restrictions: + + #include "btAlignedAllocator.h" + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + #ifdef _MSC_VER + #pragma warning(disable:4311 4302) + #endif +@@ -177,4 +181,8 @@ void btAlignedFreeInternal(void* ptr) + sAlignedFreeFunc(ptr); + } + ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- ++ + #endif //BT_DEBUG_MEMORY_ALLOCATIONS +diff --git a/thirdparty/vhacd/src/btConvexHullComputer.cpp b/thirdparty/vhacd/src/btConvexHullComputer.cpp +index d3d749adb..8ab34af2a 100644 +--- a/thirdparty/vhacd/src/btConvexHullComputer.cpp ++++ b/thirdparty/vhacd/src/btConvexHullComputer.cpp +@@ -49,6 +49,10 @@ typedef unsigned long long int32_t uint64_t; + #include + #endif + ++// -- GODOT start -- ++namespace VHACD { ++// -- GODOT end -- ++ + // Convex hull implementation based on Preparata and Hong + // Ole Kniemeyer, MAXON Computer GmbH + class btConvexHullInternal { +@@ -2477,3 +2481,7 @@ btScalar btConvexHullComputer::compute(const void* coords, bool doubleCoords, in + + return shift; + } ++ ++// -- GODOT start -- ++}; // namespace VHACD ++// -- GODOT end -- diff --git a/thirdparty/vhacd/inc/btAlignedAllocator.h b/thirdparty/vhacd/inc/btAlignedAllocator.h index 11f6e12dcaf..94e71d51250 100644 --- a/thirdparty/vhacd/inc/btAlignedAllocator.h +++ b/thirdparty/vhacd/inc/btAlignedAllocator.h @@ -21,6 +21,11 @@ subject to the following restrictions: ///that is better portable and more predictable #include "btScalar.h" + +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + //#define BT_DEBUG_MEMORY_ALLOCATIONS 1 #ifdef BT_DEBUG_MEMORY_ALLOCATIONS @@ -101,4 +106,8 @@ public: friend bool operator==(const self_type&, const self_type&) { return true; } }; +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_ALIGNED_ALLOCATOR diff --git a/thirdparty/vhacd/inc/btAlignedObjectArray.h b/thirdparty/vhacd/inc/btAlignedObjectArray.h index e6620adf6fa..1ce03d21bce 100644 --- a/thirdparty/vhacd/inc/btAlignedObjectArray.h +++ b/thirdparty/vhacd/inc/btAlignedObjectArray.h @@ -38,6 +38,10 @@ subject to the following restrictions: #include //for placement new #endif //BT_USE_PLACEMENT_NEW +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + ///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods ///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data template @@ -445,4 +449,8 @@ public: } }; +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_OBJECT_ARRAY__ diff --git a/thirdparty/vhacd/inc/btConvexHullComputer.h b/thirdparty/vhacd/inc/btConvexHullComputer.h index 3c5075c2cbb..04bb96f64aa 100644 --- a/thirdparty/vhacd/inc/btConvexHullComputer.h +++ b/thirdparty/vhacd/inc/btConvexHullComputer.h @@ -18,6 +18,10 @@ subject to the following restrictions: #include "btAlignedObjectArray.h" #include "btVector3.h" +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + /// Convex hull implementation based on Preparata and Hong /// See http://code.google.com/p/bullet/issues/detail?id=275 /// Ole Kniemeyer, MAXON Computer GmbH @@ -94,4 +98,8 @@ public: } }; +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_CONVEX_HULL_COMPUTER_H diff --git a/thirdparty/vhacd/inc/btMinMax.h b/thirdparty/vhacd/inc/btMinMax.h index 40b0ceb6eda..9bc1e1c7707 100644 --- a/thirdparty/vhacd/inc/btMinMax.h +++ b/thirdparty/vhacd/inc/btMinMax.h @@ -17,6 +17,10 @@ subject to the following restrictions: #include "btScalar.h" +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + template SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) { @@ -62,4 +66,8 @@ SIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub) } } +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_GEN_MINMAX_H diff --git a/thirdparty/vhacd/inc/btScalar.h b/thirdparty/vhacd/inc/btScalar.h index b814474bdff..617fd7c44f5 100644 --- a/thirdparty/vhacd/inc/btScalar.h +++ b/thirdparty/vhacd/inc/btScalar.h @@ -28,11 +28,19 @@ subject to the following restrictions: /* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/ #define BT_BULLET_VERSION 279 +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + inline int32_t btGetVersion() { return BT_BULLET_VERSION; } +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #if defined(DEBUG) || defined(_DEBUG) #define BT_DEBUG #endif @@ -199,6 +207,10 @@ inline int32_t btGetVersion() #endif //__CELLOS_LV2__ #endif +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + ///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. #if defined(BT_USE_DOUBLE_PRECISION) typedef double btScalar; @@ -530,4 +542,9 @@ struct btTypedObject { return m_objectType; } }; + +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_SCALAR_H diff --git a/thirdparty/vhacd/inc/btVector3.h b/thirdparty/vhacd/inc/btVector3.h index 0f2fefbbd5a..4ed97167341 100644 --- a/thirdparty/vhacd/inc/btVector3.h +++ b/thirdparty/vhacd/inc/btVector3.h @@ -26,6 +26,10 @@ subject to the following restrictions: #define btVector3DataName "btVector3FloatData" #endif //BT_USE_DOUBLE_PRECISION +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + /**@brief btVector3 can be used to represent 3D points and vectors. * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers @@ -712,4 +716,8 @@ SIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3Data& dataIn m_floats[i] = dataIn.m_floats[i]; } +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_VECTOR3_H diff --git a/thirdparty/vhacd/src/btAlignedAllocator.cpp b/thirdparty/vhacd/src/btAlignedAllocator.cpp index 11d594f6c95..ce0e7f26f95 100644 --- a/thirdparty/vhacd/src/btAlignedAllocator.cpp +++ b/thirdparty/vhacd/src/btAlignedAllocator.cpp @@ -15,6 +15,10 @@ subject to the following restrictions: #include "btAlignedAllocator.h" +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + #ifdef _MSC_VER #pragma warning(disable:4311 4302) #endif @@ -177,4 +181,8 @@ void btAlignedFreeInternal(void* ptr) sAlignedFreeFunc(ptr); } +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end -- + #endif //BT_DEBUG_MEMORY_ALLOCATIONS diff --git a/thirdparty/vhacd/src/btConvexHullComputer.cpp b/thirdparty/vhacd/src/btConvexHullComputer.cpp index d3d749adbe3..8ab34af2abd 100644 --- a/thirdparty/vhacd/src/btConvexHullComputer.cpp +++ b/thirdparty/vhacd/src/btConvexHullComputer.cpp @@ -49,6 +49,10 @@ typedef unsigned long long int32_t uint64_t; #include #endif +// -- GODOT start -- +namespace VHACD { +// -- GODOT end -- + // Convex hull implementation based on Preparata and Hong // Ole Kniemeyer, MAXON Computer GmbH class btConvexHullInternal { @@ -2477,3 +2481,7 @@ btScalar btConvexHullComputer::compute(const void* coords, bool doubleCoords, in return shift; } + +// -- GODOT start -- +}; // namespace VHACD +// -- GODOT end --