cURL / Mailing Lists / curl-library / Single Mail

curl-library

[PATCH] CMake: Use upstream CheckTypeSize module

From: Brad King <brad.king_at_kitware.com>
Date: Wed, 5 Jan 2011 11:32:41 -0500

The CheckTypeSize module that comes with CMake 2.6.2 and above does
everything we need and also supports cross-compiling. Avoid duplicating
an older version of it here. This also fixes a cross-compiling error
because the old line

  include ("${CMAKE_MODULE_PATH}/CheckTypeSize.cmake")

failed because CMAKE_MODULE_PATH is a search path and not a directory.

Signed-off-by: Brad King <brad.king_at_kitware.com>

---
 CMake/CheckTypeSize.c.in  |   44 ----------------------------------
 CMake/CheckTypeSize.cmake |   57 ---------------------------------------------
 CMakeLists.txt            |   14 +++++-----
 3 files changed, 7 insertions(+), 108 deletions(-)
 delete mode 100644 CMake/CheckTypeSize.c.in
 delete mode 100644 CMake/CheckTypeSize.cmake
diff --git a/CMake/CheckTypeSize.c.in b/CMake/CheckTypeSize.c.in
deleted file mode 100644
index 8ff07bf..0000000
--- a/CMake/CheckTypeSize.c.in
+++ /dev/null
@@ -1,44 +0,0 @@
-#cmakedefine CHECK_TYPE_SIZE_TYPE @CHECK_TYPE_SIZE_TYPE@
-#ifdef CHECK_TYPE_SIZE_TYPE
-
-_at_CHECK_TYPE_SIZE_PREINCLUDE@
-#ifdef HAVE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_SYS_SOCKET_H
-#  include <sys/socket.h>
-#endif
-
-#ifdef _WIN32
-#  include <winsock2.h>
-#  include <ws2tcpip.h>
-#endif
-
-
-#ifdef HAVE_STDINT_H
-#  include <stdint.h>
-#endif /* HAVE_STDINT_H */
-
-#ifdef HAVE_STDDEF_H
-#  include <stddef.h>
-#endif /* HAVE_STDDEF_H */
-
-_at_CHECK_TYPE_SIZE_PREMAIN@
-
-#ifdef __CLASSIC_C__
-int main(){
-  int ac;
-  char*av[];
-#else
-int main(int ac, char*av[]){
-#endif
-  if(ac > 1000){return *av[0];}
-  return sizeof(CHECK_TYPE_SIZE_TYPE);
-}
-
-#else  /* CHECK_TYPE_SIZE_TYPE */
-
-#  error "CHECK_TYPE_SIZE_TYPE has to specify the type"
-
-#endif /* CHECK_TYPE_SIZE_TYPE */
diff --git a/CMake/CheckTypeSize.cmake b/CMake/CheckTypeSize.cmake
deleted file mode 100644
index 2c2ceab..0000000
--- a/CMake/CheckTypeSize.cmake
+++ /dev/null
@@ -1,57 +0,0 @@
-# - Check sizeof a type
-#  CHECK_TYPE_SIZE(TYPE VARIABLE)
-# Check if the type exists and determine size of type.  if the type
-# exists, the size will be stored to the variable.
-#
-#  VARIABLE - variable to store size if the type exists.
-#  HAVE_${VARIABLE} - does the variable exists or not
-
-macro(CHECK_TYPE_SIZE TYPE VARIABLE)
-  set(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
-  if(NOT DEFINED ${VARIABLE})
-    if("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
-      set(CHECK_TYPE_SIZE_TYPE "${TYPE}")
-      set(MACRO_CHECK_TYPE_SIZE_FLAGS
-        "${CMAKE_REQUIRED_FLAGS}")
-      foreach(def HAVE_SYS_TYPES_H 
-         HAVE_STDINT_H HAVE_STDDEF_H HAVE_SYS_SOCKET_H)
-        if("${def}")
-          set(MACRO_CHECK_TYPE_SIZE_FLAGS
-            "${MACRO_CHECK_TYPE_SIZE_FLAGS} -D${def}")
-        endif("${def}")
-      endforeach(def)
-      set(CHECK_TYPE_SIZE_PREMAIN)
-      foreach(def ${CMAKE_EXTRA_INCLUDE_FILES})
-        set(CHECK_TYPE_SIZE_PREMAIN "${CHECK_TYPE_SIZE_PREMAIN}#include \"${def}\"\n")
-      endforeach(def)
-      configure_file(
-        "${CMAKE_CURRENT_SOURCE_DIR}/CMake/CheckTypeSize.c.in"
-        "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
-        IMMEDIATE @ONLY)
-      file(READ
-        "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
-        CHECK_TYPE_SIZE_FILE_CONTENT)
-      message(STATUS "Check size of ${TYPE}")
-      if(CMAKE_REQUIRED_LIBRARIES)
-        set(CHECK_TYPE_SIZE_ADD_LIBRARIES
-          "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-      endif(CMAKE_REQUIRED_LIBRARIES)
-      try_run(${VARIABLE} HAVE_${VARIABLE}
-        ${CMAKE_BINARY_DIR}
-        "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
-        CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_FLAGS}
-        "${CHECK_TYPE_SIZE_ADD_LIBRARIES}"
-        OUTPUT_VARIABLE OUTPUT)
-      if(HAVE_${VARIABLE})
-        message(STATUS "Check size of ${TYPE} - done")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Determining size of ${TYPE} passed with the following output:\n${OUTPUT}\n\n")
-      else(HAVE_${VARIABLE})
-        message(STATUS "Check size of ${TYPE} - failed")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\nCheckTypeSize.c:\n${CHECK_TYPE_SIZE_FILE_CONTENT}\n\n")
-      endif(HAVE_${VARIABLE})
-    endif("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
-  endif(NOT DEFINED ${VARIABLE})
-  set(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS )
-endmacro(CHECK_TYPE_SIZE)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 244085b..55312cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,13 +183,7 @@ include (CheckIncludeFile)
 include (CheckIncludeFiles)
 include (CheckLibraryExists)
 include (CheckSymbolExists)
-# if crosscompiling is on, the CHECK_TYPE_SIZE macro coming with cmake uses
-# TRY_COMPILE instead of TRY_RUN which makes crosscompiling easier, Alex
-if(CMAKE_CROSSCOMPILING)
-  include ("${CMAKE_MODULE_PATH}/CheckTypeSize.cmake")
-else(CMAKE_CROSSCOMPILING)
-  include (CheckTypeSize)
-endif(CMAKE_CROSSCOMPILING)
+include (CheckTypeSize)
 
 # On windows preload settings
 if(WIN32)
@@ -781,7 +775,13 @@ endif(CMAKE_COMPILER_IS_GNUCC AND APPLE)
 
 if(HAVE_SOCKLEN_T)
   set(CURL_TYPEOF_CURL_SOCKLEN_T "socklen_t")
+  if(WIN32)
+    set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;ws2tcpip.h")
+  elseif(HAVE_SYS_SOCKET_H)
+    set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
+  endif()
   check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T)
+  set(CMAKE_EXTRA_INCLUDE_FILES)
   if(NOT HAVE_CURL_SIZEOF_CURL_SOCKLEN_T)
     message(FATAL_ERROR 
      "Check for sizeof socklen_t failed, see CMakeFiles/CMakerror.log")
-- 
1.7.2.3
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
Received on 2011-01-05