From dc863592bce3f4cda927c55a550af661a0663513 Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike@sf-mail.de>
Date: Mon, 19 Mar 2018 21:52:40 +0100
Subject: WCDH: use better fallback value for nullptr with old gcc versions

GCC supports the __null builtin basically forever (since at least 2.95), which
behaves very much like nullptr later does. Use this instead of plain "0" as
fallback value, otherwise passing the define to functions annotated with
__attribute__((sentinel)) will result in a compiler warning.
---
 Modules/WriteCompilerDetectionHeader.cmake | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake
index e7f9912..675df84 100644
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ b/Modules/WriteCompilerDetectionHeader.cmake
@@ -557,7 +557,18 @@ template<> struct ${prefix_arg}StaticAssert<true>{};
 #  endif
 \n")
       endif()
-      _simpledefine(cxx_nullptr NULLPTR nullptr 0)
+      if (feature STREQUAL cxx_nullptr)
+        set(def_value "${prefix_arg}_NULLPTR")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} nullptr
+#  elif ${prefix_arg}_COMPILER_IS_GNU
+#    define ${def_value} __null
+#  else
+#    define ${def_value} 0
+#  endif
+\n")
+      endif()
       if (feature STREQUAL cxx_thread_local)
         set(def_value "${prefix_arg}_THREAD_LOCAL")
         string(APPEND file_content "
-- 
cgit v0.12