blob: 4cda90e245c81887facc8c14c7b57c2d41c3b895 [file]
#this macro throws an error if any of the vars are not defined
MACRO(MUSTDEFINE_VAR VARS)
foreach(ARG ${VARS})
IF ( NOT ${ARG} )
MESSAGE( FATAL_ERROR "The symbol '${ARG}' was not defined." )
ENDIF ( NOT ${ARG} )
endforeach(ARG)
ENDMACRO(MUSTDEFINE_VAR)
#required headers
MACRO(CHECK_REQUIRED_HEADERS COMPULSARY_HEADERS)
FOREACH(func ${ARGV})
STRING(TOUPPER ${func} FUNC)
STRING(REPLACE . _ FUNC ${FUNC})
CHECK_INCLUDE_FILE_CXX (${func} HAVE_${FUNC})
IF ( HAVE_${FUNC} )
SET(_CL_HAVE_${FUNC} ${FUNC})
ENDIF ( HAVE_${FUNC} )
IF ( NOT HAVE_${FUNC} )
MESSAGE ( FATAL_ERROR "${func} could not be found" )
ENDIF ( NOT HAVE_${FUNC} )
ENDFOREACH(func ${COMPULSARY_HEADERS})
ENDMACRO(CHECK_REQUIRED_HEADERS)
#optional headers
MACRO(CHECK_OPTIONAL_HEADERS OPTIONAL_HEADERS)
FOREACH(func ${ARGV})
STRING(TOUPPER ${func} FUNC)
STRING(REPLACE . _ FUNC ${FUNC})
STRING(REPLACE / _ FUNC ${FUNC})
CHECK_INCLUDE_FILE_CXX (${func} HAVE_${FUNC})
IF ( HAVE_${FUNC} )
SET(_CL_HAVE_${FUNC} ${FUNC})
ENDIF ( HAVE_${FUNC} )
ENDFOREACH(func ${OPTIONAL_HEADERS})
ENDMACRO(CHECK_OPTIONAL_HEADERS)
#check for compulsary functions
MACRO(CHECK_REQUIRED_FUNCTIONS COMPULSARY_FUNCTIONS)
FOREACH(func ${ARGV})
CHECK_OPTIONAL_FUNCTIONS ( ${func} )
IF ( NOT _CL_HAVE_FUNCTION_${FUNC} )
MESSAGE ( FATAL_ERROR "${func} could not be found" )
ENDIF ( NOT _CL_HAVE_FUNCTION_${FUNC} )
ENDFOREACH(func ${COMPULSARY_FUNCTIONS})
SET( CMAKE_EXTRA_INCLUDE_FILES )
ENDMACRO(CHECK_REQUIRED_FUNCTIONS)
#check for optional functions
MACRO(CHECK_OPTIONAL_FUNCTIONS OPTIONAL_FUNCTIONS)
FOREACH(func ${ARGV})
STRING(TOUPPER ${func} FUNC)
STRING(REGEX MATCH "[(|)]+" CHECK_OPTIONAL_FUNCTIONS_MATCH ${func} )
IF ( CHECK_OPTIONAL_FUNCTIONS_MATCH STREQUAL "" )
CHECK_FUNCTION_EXISTS (${func} _CL_HAVE_FUNCTION_${FUNC})
ELSE ( CHECK_OPTIONAL_FUNCTIONS_MATCH STREQUAL "" )
STRING(REGEX REPLACE "(\\(.*\\))" "" CHECK_OPTIONAL_FUNCTIONS_MATCH ${func} )
STRING( TOUPPER ${CHECK_OPTIONAL_FUNCTIONS_MATCH} FUNC )
CHECK_STDCALL_FUNCTION_EXISTS (${func} _CL_HAVE_FUNCTION_${FUNC})
ENDIF ( CHECK_OPTIONAL_FUNCTIONS_MATCH STREQUAL "" )
ENDFOREACH(func ${OPTIONAL_FUNCTIONS})
ENDMACRO(CHECK_OPTIONAL_FUNCTIONS)