macros.cmake (1884B)
1macro(SET_OPTION _NAME _DESC) 2 list(APPEND ALLOPTIONS ${_NAME}) 3 if(${ARGC} EQUAL 3) 4 set(_DEFLT ${ARGV2}) 5 else() 6 set(_DEFLT OFF) 7 endif() 8 option(${_NAME} ${_DESC} ${_DEFLT}) 9endmacro() 10 11macro(DEP_OPTION _NAME _DESC _DEFLT _DEPTEST _FAILDFLT) 12 list(APPEND ALLOPTIONS ${_NAME}) 13 cmake_dependent_option(${_NAME} ${_DESC} ${_DEFLT} ${_DEPTEST} ${_FAILDFLT}) 14endmacro() 15 16macro(OPTION_STRING _NAME _DESC _VALUE) 17 list(APPEND ALLOPTIONS ${_NAME}) 18 set(${_NAME} ${_VALUE} CACHE STRING "${_DESC}") 19 set(HAVE_${_NAME} ${_VALUE}) 20ENDMACRO() 21 22# Message Output 23macro(MESSAGE_WARN _TEXT) 24 message(STATUS "*** WARNING: ${_TEXT}") 25endmacro() 26 27macro(MESSAGE_ERROR _TEXT) 28 message(FATAL_ERROR "*** ERROR: ${_TEXT}") 29endmacro() 30 31macro(MESSAGE_BOOL_OPTION _NAME _VALUE) 32 if(${_VALUE}) 33 message(STATUS " ${_NAME}:\tON") 34 else() 35 message(STATUS " ${_NAME}:\tOFF") 36 endif() 37endmacro() 38 39macro(MESSAGE_TESTED_OPTION _NAME) 40 set(_REQVALUE ${${_NAME}}) 41 set(_PAD " ") 42 if(${ARGC} EQUAL 2) 43 set(_PAD ${ARGV1}) 44 endif() 45 if(NOT HAVE_${_NAME}) 46 set(HAVE_${_NAME} OFF) 47 elseif("${HAVE_${_NAME}}" MATCHES "1|TRUE|YES|Y") 48 set(HAVE_${_NAME} ON) 49 endif() 50 message(STATUS " ${_NAME}${_PAD}(Wanted: ${_REQVALUE}): ${HAVE_${_NAME}}") 51endmacro() 52 53macro(LISTTOSTR _LIST _OUTPUT) 54 if(${ARGC} EQUAL 3) 55 # prefix for each element 56 set(_LPREFIX ${ARGV2}) 57 else() 58 set(_LPREFIX "") 59 endif() 60 # Do not use string(REPLACE ";" " ") here to avoid messing up list 61 # entries 62 foreach(_ITEM ${${_LIST}}) 63 set(${_OUTPUT} "${_LPREFIX}${_ITEM} ${${_OUTPUT}}") 64 endforeach() 65endmacro() 66 67macro(CHECK_OBJC_SOURCE_COMPILES SOURCE VAR) 68 set(PREV_REQUIRED_DEFS "${CMAKE_REQUIRED_DEFINITIONS}") 69 set(CMAKE_REQUIRED_DEFINITIONS "-ObjC ${PREV_REQUIRED_DEFS}") 70 CHECK_C_SOURCE_COMPILES(${SOURCE} ${VAR}) 71 set(CMAKE_REQUIRED_DEFINITIONS "${PREV_REQUIRED_DEFS}") 72endmacro() 73