macros.cmake (1893B)
1 macro(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}) 9 endmacro() 10 11 macro(DEP_OPTION _NAME _DESC _DEFLT _DEPTEST _FAILDFLT) 12 list(APPEND ALLOPTIONS ${_NAME}) 13 cmake_dependent_option(${_NAME} ${_DESC} ${_DEFLT} ${_DEPTEST} ${_FAILDFLT}) 14 endmacro() 15 16 macro(OPTION_STRING _NAME _DESC _VALUE) 17 list(APPEND ALLOPTIONS ${_NAME}) 18 set(${_NAME} ${_VALUE} CACHE STRING "${_DESC}") 19 set(HAVE_${_NAME} ${_VALUE}) 20 ENDMACRO() 21 22 # Message Output 23 macro(MESSAGE_WARN _TEXT) 24 message(STATUS "*** WARNING: ${_TEXT}") 25 endmacro() 26 27 macro(MESSAGE_ERROR _TEXT) 28 message(FATAL_ERROR "*** ERROR: ${_TEXT}") 29 endmacro() 30 31 macro(MESSAGE_BOOL_OPTION _NAME _VALUE) 32 if(${_VALUE}) 33 message(STATUS " ${_NAME}:\tON") 34 else() 35 message(STATUS " ${_NAME}:\tOFF") 36 endif() 37 endmacro() 38 39 macro(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}}") 51 endmacro() 52 53 macro(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() 65 endmacro() 66 67 macro(CHECK_OBJC_SOURCE_COMPILES SOURCE VAR) 68 set(PREV_REQUIRED_DEFS "${CMAKE_REQUIRED_DEFINITIONS}") 69 set(CMAKE_REQUIRED_DEFINITIONS "-x objective-c ${PREV_REQUIRED_DEFS}") 70 CHECK_C_SOURCE_COMPILES(${SOURCE} ${VAR}) 71 set(CMAKE_REQUIRED_DEFINITIONS "${PREV_REQUIRED_DEFS}") 72 endmacro() 73