Browse Source

COMP: Added KWSYS_CXX_HAS_CSTDDEF try-compile to KWSys to provide kwsys/cstddef header (to get size_t for hash_fun.hxx).

Brad King 20 years ago
parent
commit
bddade9696

+ 8 - 0
Source/kwsys/CMakeLists.txt

@@ -178,6 +178,9 @@ ELSE(KWSYS_IOS_USE_SSTREAM)
   ENDIF(KWSYS_IOS_USE_STRSTREAM_H)
 ENDIF(KWSYS_IOS_USE_SSTREAM)
 
+KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_CSTDDEF
+  "Checking whether header cstddef is available" DIRECT)
+
 SET(KWSYS_PLATFORM_CXX_TEST_DEFINES
   -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD})
 KWSYS_PLATFORM_CXX_TEST(KWSYS_STL_STRING_HAVE_NEQ_CHAR
@@ -294,6 +297,11 @@ FOREACH(header algorithm deque iterator list map numeric queue set stack string
   ENDIF(KWSYS_HEADER_INSTALL_DIR)
 ENDFOREACH(header)
 
+# Provide cstddef header.
+CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_cstddef.hxx.in
+               ${KWSYS_HEADER_DIR}/cstddef
+               @ONLY IMMEDIATE)
+
 #-----------------------------------------------------------------------------
 # Create streams header wrappers to give standard names by which they
 # may be included.

+ 4 - 0
Source/kwsys/Configure.hxx.in

@@ -63,6 +63,9 @@
 # define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios
 #endif
 
+/* Whether the cstddef header is available.  */
+#define @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF @KWSYS_CXX_HAS_CSTDDEF@
+
 /* Whether the compiler supports null template arguments.  */
 #define @KWSYS_NAMESPACE@_CXX_HAS_NULL_TEMPLATE_ARGS @KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS@
 
@@ -133,6 +136,7 @@
 # define KWSYS_IOS_USE_STRSTREAM_H      @KWSYS_NAMESPACE@_IOS_USE_STRSTREAM_H
 # define KWSYS_IOS_USE_STRSTREA_H       @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H
 # define KWSYS_STAT_HAS_ST_MTIM         @KWSYS_NAMESPACE@_STAT_HAS_ST_MTIM
+# define KWSYS_CXX_HAS_CSTDDEF          @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF
 # define KWSYS_STL_STRING_HAVE_OSTREAM  @KWSYS_NAMESPACE@_STL_STRING_HAVE_OSTREAM
 # define KWSYS_STL_STRING_HAVE_ISTREAM  @KWSYS_NAMESPACE@_STL_STRING_HAVE_ISTREAM
 # define KWSYS_STL_STRING_HAVE_NEQ_CHAR @KWSYS_NAMESPACE@_STL_STRING_HAVE_NEQ_CHAR

+ 2 - 0
Source/kwsys/hash_fun.hxx.in

@@ -41,6 +41,8 @@
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 
+#include <@KWSYS_NAMESPACE@/cstddef>        // size_t
+
 namespace @KWSYS_NAMESPACE@
 {
 

+ 1 - 0
Source/kwsys/hashtable.hxx.in

@@ -41,6 +41,7 @@
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 
+#include <@KWSYS_NAMESPACE@/cstddef>        // size_t
 #include <@KWSYS_NAMESPACE@/stl/algorithm>  // lower_bound
 #include <@KWSYS_NAMESPACE@/stl/functional> // unary_function
 #include <@KWSYS_NAMESPACE@/stl/iterator>   // iterator_traits

+ 6 - 0
Source/kwsys/kwsysPlatformCxxTests.cxx

@@ -59,6 +59,12 @@ bool f(const kwsys_stl::string& s) { return s != ""; }
 int main() { return 0; }
 #endif
 
+#ifdef TEST_KWSYS_CXX_HAS_CSTDDEF
+#include <cstddef>
+void f(size_t) {}
+int main() { return 0; }
+#endif
+
 #ifdef TEST_KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS
 template <class T> class A;
 template <class T> int f(A<T>&);

+ 37 - 0
Source/kwsys/kwsys_cstddef.hxx.in

@@ -0,0 +1,37 @@
+/*=========================================================================
+
+  Program:   KWSys - Kitware System Library
+  Module:    $RCSfile$
+
+  Copyright (c) Kitware, Inc., Insight Consortium.  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#ifndef @KWSYS_NAMESPACE@_cstddef
+#define @KWSYS_NAMESPACE@_cstddef
+
+#include <@KWSYS_NAMESPACE@/Configure.hxx>
+
+/* Avoid warnings in MSVC standard headers.  */
+#ifdef _MSC_VER
+# pragma warning (push, 1)
+# pragma warning (disable: 4702)
+# pragma warning (disable: 4786)
+#endif
+
+/* Include the real header.  */
+#if @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF
+# include <cstddef>
+#else
+# include <stddef.h>
+#endif
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+#endif

+ 11 - 0
bootstrap

@@ -209,6 +209,7 @@ cmake_kwsys_config_replace_string ()
                 s/@KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE@/${KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE}/g;
                 s/@KWSYS_STL_HAS_ALLOCATOR_REBIND@/${KWSYS_STL_HAS_ALLOCATOR_REBIND}/g;
                 s/@KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT@/${KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT}/g;
+                s/@KWSYS_CXX_HAS_CSTDDEF@/${KWSYS_CXX_HAS_CSTDDEF}/g;
                 s/@KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS@/${KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS}/g;
                 s/@KWSYS_CXX_HAS_MEMBER_TEMPLATES@/${KWSYS_CXX_HAS_MEMBER_TEMPLATES}/g;
                 s/@KWSYS_CXX_HAS_FULL_SPECIALIZATION@/${KWSYS_CXX_HAS_FULL_SPECIALIZATION}/g;
@@ -727,6 +728,7 @@ KWSYS_STL_HAS___ITERATOR_CATEGORY=0
 KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE=0
 KWSYS_STL_HAS_ALLOCATOR_REBIND=0
 KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT=0
+KWSYS_CXX_HAS_CSTDDEF=0
 KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS=0
 KWSYS_CXX_HAS_MEMBER_TEMPLATES=0
 KWSYS_CXX_HAS_FULL_SPECIALIZATION=0
@@ -862,6 +864,15 @@ if [ "x${KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE}" = "x0" ]; then
   fi
 fi
 
+if cmake_try_run "${cmake_cxx_compiler}" \
+  "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_CSTDDEF" \
+  "${cmake_source_dir}/Source/kwsys/kwsysPlatformCxxTests.cxx" >> cmake_bootstrap.log 2>&1; then
+  KWSYS_CXX_HAS_CSTDDEF=1
+  echo "${cmake_cxx_compiler} has header cstddef"
+else
+  echo "${cmake_cxx_compiler} does not have header cstddef"
+fi
+
 if cmake_try_run "${cmake_cxx_compiler}" \
   "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS" \
   "${cmake_source_dir}/Source/kwsys/kwsysPlatformCxxTests.cxx" >> cmake_bootstrap.log 2>&1; then