Compilation error fix for NetBSD
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 9 Jan 2014 10:15:24 +0000 (16:15 +0600)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 9 Jan 2014 10:15:24 +0000 (16:15 +0600)
Based on the patch from Joerg Sonnenberger.

extern/carve/lib/triangulator.cpp
extern/carve/patches/clang_is_heap_fix.patch

index bd5a30b0c2b2497e538dde47b49563efcbe530df..fa829c6a1e65dad265a60f5b42690cd0c644f79c 100644 (file)
 //
 // 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
     }
index 435e408d6cdfbfbdea4d477cb5b1ece51cee4fef..a00710b95400dddf4328e0cb709345e25cd1ce86 100644 (file)
@@ -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
+     }