cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

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