Przeglądaj źródła

ENH: Added CMAKE_REQUIRED_DEFINITIONS and CMAKE_REQUIRED_INCLUDES to the interface.

Brad King 20 lat temu
rodzic
commit
eeab2c55ed
1 zmienionych plików z 17 dodań i 1 usunięć
  1. 17 1
      Modules/CheckTypeSize.cmake

+ 17 - 1
Modules/CheckTypeSize.cmake

@@ -2,9 +2,15 @@
 #  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
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+#  CMAKE_REQUIRED_INCLUDES = list of include directories
+#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
 
 MACRO(CHECK_TYPE_SIZE TYPE VARIABLE)
   SET(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
@@ -31,12 +37,22 @@ MACRO(CHECK_TYPE_SIZE TYPE VARIABLE)
     IF(CMAKE_REQUIRED_LIBRARIES)
       SET(CHECK_TYPE_SIZE_ADD_LIBRARIES 
         "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+    ELSE(CMAKE_REQUIRED_LIBRARIES)
+      SET(CHECK_TYPE_SIZE_ADD_LIBRARIES)
     ENDIF(CMAKE_REQUIRED_LIBRARIES)
+    IF(CMAKE_REQUIRED_INCLUDES)
+      SET(CHECK_TYPE_SIZE_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    ELSE(CMAKE_REQUIRED_INCLUDES)
+      SET(CHECK_TYPE_SIZE_ADD_INCLUDES)
+    ENDIF(CMAKE_REQUIRED_INCLUDES)
     TRY_RUN(${VARIABLE} HAVE_${VARIABLE}
       ${CMAKE_BINARY_DIR}
       "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckTypeSize.c"
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
       CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_FLAGS}
       "${CHECK_TYPE_SIZE_ADD_LIBRARIES}"
+      "${CHECK_TYPE_SIZE_ADD_INCLUDES}"
       OUTPUT_VARIABLE OUTPUT)
     IF(HAVE_${VARIABLE})
       MESSAGE(STATUS "Check size of ${TYPE} - done")