MACRO(CHECK_STRUCT_MEMBER STRUCT_NAME MEMBER_NAME VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") IF(CMAKE_REQUIRED_INCLUDES) SET(CHECK_STRUCT_MEMBER_C_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") ELSE(CMAKE_REQUIRED_INCLUDES) SET(CHECK_STRUCT_MEMBER_C_INCLUDE_DIRS) ENDIF(CMAKE_REQUIRED_INCLUDES) SET(MACRO_CHECK_STRUCT_MEMBER_FLAGS ${CMAKE_REQUIRED_FLAGS}) SET(CHECK_STRUCT_MEMBER_PREINCLUDE) FOREACH(def ${CMAKE_EXTRA_INCLUDE_FILES}) STRING (REGEX REPLACE "/" "_" S ${def}) STRING (REGEX REPLACE "\\." "_" S ${S}) STRING (TOUPPER "HAVE_${S}" IF_PRAGMA) IF (${${IF_PRAGMA}}) SET (MACRO_CHECK_STRUCT_MEMBER_FLAGS "${MACRO_CHECK_STRUCT_MEMBER_FLAGS} -D${IF_PRAGMA}" ) ENDIF (${${IF_PRAGMA}}) SET(CHECK_STRUCT_MEMBER_PREINCLUDE "${CHECK_STRUCT_MEMBER_PREINCLUDE}#if ${IF_PRAGMA}\n#include <${def}>\n#endif\n") ENDFOREACH(def) SET(CHECK_STRUCT_NAME ${STRUCT_NAME}) SET(CHECK_MEMBER_NAME ${MEMBER_NAME}) CONFIGURE_FILE(${CMAKE_BINARY_DIR}/builds/cmake/CheckStructMember.cxx.in "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckStructMember.cxx" IMMEDIATE) TRY_COMPILE(${VARIABLE} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckStructMember.cxx COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_STRUCT_MEMBER_FLAGS} "${CHECK_STRUCT_MEMBER_C_INCLUDE_DIRS}" OUTPUT_VARIABLE OUTPUT) IF(${VARIABLE}) MESSAGE(STATUS "Check for ${STRUCT_NAME} have ${MEMBER_NAME} member - yes") SET(${VARIABLE} 1 CACHE INTERNAL "${STRUCT_NAME} have ${MEMBER_NAME}") FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log "Determining if the ${STRUCT_NAME} have ${MEMBER_NAME} " "exists passed with the following output:\n" "${OUTPUT}\n\n") ELSE(${VARIABLE}) MESSAGE(STATUS "Check for ${STRUCT_NAME} have ${MEMBER_NAME} member - no") SET(${VARIABLE} 0 CACHE INTERNAL "${STRUCT_NAME} have ${MEMBER_NAME}") FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log "Determining if the ${STRUCT_NAME} have ${MEMBER_NAME} " "exists passed with the following output:\n" "${OUTPUT}\n\n") ENDIF(${VARIABLE}) ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$") ENDMACRO(CHECK_STRUCT_MEMBER)