diff options
-rw-r--r-- | extern/carve/lib/triangulator.cpp | 18 | ||||
-rw-r--r-- | extern/carve/patches/clang_is_heap_fix.patch | 29 |
2 files changed, 38 insertions, 9 deletions
diff --git a/extern/carve/lib/triangulator.cpp b/extern/carve/lib/triangulator.cpp index bd5a30b0c2b..fa829c6a1e6 100644 --- a/extern/carve/lib/triangulator.cpp +++ b/extern/carve/lib/triangulator.cpp @@ -31,9 +31,19 @@ // // TODO(sergey): Move it some some more generic header with platform-specific // declarations. -#ifdef _LIBCPP_VERSION -# define __is_heap is_heap -#endif + +// Indicates whether __is_heap is available +#undef HAVE_IS_HEAP + +#ifdef __GNUC__ +// NeyBSD doesn't have __is_heap +# ifndef __NetBSD__ +# define HAVE_IS_HEAP +# ifdef _LIBCPP_VERSION +# define __is_heap is_heap +# endif // _LIBCPP_VERSION +# endif // !__NetBSD__ +#endif // __GNUC__ namespace { // private code related to hole patching. @@ -129,7 +139,7 @@ namespace { std::vector<vertex_info *> queue; void checkheap() { -#ifdef __GNUC__ +#if defined(HAVE_IS_HEAP) CARVE_ASSERT(std::__is_heap(queue.begin(), queue.end(), vertex_info_ordering())); #endif } diff --git a/extern/carve/patches/clang_is_heap_fix.patch b/extern/carve/patches/clang_is_heap_fix.patch index 435e408d6cd..a00710b9540 100644 --- a/extern/carve/patches/clang_is_heap_fix.patch +++ b/extern/carve/patches/clang_is_heap_fix.patch @@ -1,7 +1,7 @@ diff -r 2e6e59022e6e lib/triangulator.cpp --- a/lib/triangulator.cpp Fri Nov 09 09:35:35 2012 +1100 -+++ b/lib/triangulator.cpp Thu Nov 28 13:34:52 2013 +0600 -@@ -27,6 +27,13 @@ ++++ b/lib/triangulator.cpp Thu Jan 09 16:13:17 2014 +0600 +@@ -27,6 +27,23 @@ #include <algorithm> @@ -9,9 +9,28 @@ diff -r 2e6e59022e6e lib/triangulator.cpp +// +// TODO(sergey): Move it some some more generic header with platform-specific +// declarations. -+#ifdef _LIBCPP_VERSION -+# define __is_heap is_heap -+#endif ++ ++// Indicates whether __is_heap is available ++#undef HAVE_IS_HEAP ++ ++#ifdef __GNUC__ ++// NeyBSD doesn't have __is_heap ++# ifndef __NetBSD__ ++# define HAVE_IS_HEAP ++# ifdef _LIBCPP_VERSION ++# define __is_heap is_heap ++# endif // _LIBCPP_VERSION ++# endif // !__NetBSD__ ++#endif // __GNUC__ namespace { // private code related to hole patching. +@@ -122,7 +139,7 @@ + std::vector<vertex_info *> queue; + + void checkheap() { +-#ifdef __GNUC__ ++#if defined(HAVE_IS_HEAP) + CARVE_ASSERT(std::__is_heap(queue.begin(), queue.end(), vertex_info_ordering())); + #endif + } |