1# 2# Check if the type exists and determine size of type. if the type 3# exists, the size will be stored to the variable. 4# 5# CHECK_TYPE_SIZE - macro which checks the size of type 6# VARIABLE - variable to store size if the type exists. 7# HAVE_${VARIABLE} - does the variable exists or not 8# 9 10MACRO (HDF_CHECK_TYPE_SIZE TYPE VARIABLE) 11 set (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1) 12 if ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$") 13 set (MACRO_CHECK_TYPE_SIZE_FLAGS 14 "-DCHECK_TYPE_SIZE_TYPE=\"${TYPE}\" ${CMAKE_REQUIRED_FLAGS}" 15 ) 16 foreach (def HAVE_SYS_TYPES_H HAVE_STDINT_H HAVE_STDDEF_H HAVE_INTTYPES_H) 17 if ("${def}") 18 set (MACRO_CHECK_TYPE_SIZE_FLAGS "${MACRO_CHECK_TYPE_SIZE_FLAGS} -D${def}") 19 ENDIF("${def}") 20 endforeach (def) 21 22 message (STATUS "Check size of ${TYPE}") 23 if (CMAKE_REQUIRED_LIBRARIES) 24 set (CHECK_TYPE_SIZE_ADD_LIBRARIES 25 "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" 26 ) 27 endif (CMAKE_REQUIRED_LIBRARIES) 28 TRY_RUN (${VARIABLE} HAVE_${VARIABLE} 29 ${CMAKE_BINARY_DIR} 30 ${HDF5_RESOURCES_DIR}/CheckTypeSize.c 31 CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_FLAGS} 32 "${CHECK_TYPE_SIZE_ADD_LIBRARIES}" 33 OUTPUT_VARIABLE OUTPUT 34 ) 35 if (HAVE_${VARIABLE}) 36 message (STATUS "Check size of ${TYPE} - done") 37 file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log 38 "Determining size of ${TYPE} passed with the following output:\n${OUTPUT}\n\n" 39 ) 40 else (HAVE_${VARIABLE}) 41 message (STATUS "Check size of ${TYPE} - failed") 42 file (APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log 43 "Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\n\n" 44 ) 45 endif (HAVE_${VARIABLE}) 46 endif ("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$") 47 set (CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS) 48ENDMACRO (HDF_CHECK_TYPE_SIZE) 49 50