| 1 | ## SuggestCXXFlag, adds the following macros: |
|---|
| 2 | # |
|---|
| 3 | # SUGGEST_CXX_FLAGS(FLAGS VAR) |
|---|
| 4 | # where FLAGS is a semi-colon separated list of flags, |
|---|
| 5 | # each flag is added to VAR if the compiler accepts it |
|---|
| 6 | # |
|---|
| 7 | # SUGGEST_CXX_FLAG(FLAG VAR) |
|---|
| 8 | # Check a single FLAG and add it to VAR if compiler accepts it |
|---|
| 9 | # |
|---|
| 10 | # SUGGEST_CXX_FLAG_DESC(FLAG VAR DESC) |
|---|
| 11 | # Check a single FLAG and add to VAR if compiler accepts it, storing |
|---|
| 12 | # the result of the checking in the variable DESC |
|---|
| 13 | # |
|---|
| 14 | |
|---|
| 15 | MACRO(CHECK_CXX_ACCEPTS_FLAG FLAGS VARIABLE) |
|---|
| 16 | IF(NOT DEFINED ${VARIABLE}) |
|---|
| 17 | TRY_COMPILE(${VARIABLE} |
|---|
| 18 | ${CMAKE_BINARY_DIR} |
|---|
| 19 | ${CMAKE_ROOT}/Modules/DummyCXXFile.cxx |
|---|
| 20 | CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${FLAGS} |
|---|
| 21 | OUTPUT_VARIABLE OUTPUT) |
|---|
| 22 | IF(${VARIABLE}) |
|---|
| 23 | MESSAGE(STATUS "Checking to see if CXX compiler accepts flag ${FLAGS} - yes") |
|---|
| 24 | FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log |
|---|
| 25 | "Determining if the CXX compiler accepts the flag ${FLAGS} passed with " |
|---|
| 26 | "the following output:\n${OUTPUT}\n\n") |
|---|
| 27 | ELSE(${VARIABLE}) |
|---|
| 28 | MESSAGE(STATUS "Checking to see if CXX compiler accepts flag ${FLAGS} - no") |
|---|
| 29 | FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log |
|---|
| 30 | "Determining if the CXX compiler accepts the flag ${FLAGS} failed with " |
|---|
| 31 | "the following output:\n${OUTPUT}\n\n") |
|---|
| 32 | ENDIF(${VARIABLE}) |
|---|
| 33 | ENDIF(NOT DEFINED ${VARIABLE}) |
|---|
| 34 | ENDMACRO(CHECK_CXX_ACCEPTS_FLAG) |
|---|
| 35 | |
|---|
| 36 | MACRO (SUGGEST_CXX_FLAG_DESC _FLAG _VAR _DESC) |
|---|
| 37 | CHECK_CXX_ACCEPTS_FLAG(${_FLAG} ${_DESC}) |
|---|
| 38 | if (${_DESC}) |
|---|
| 39 | if (${_VAR}) |
|---|
| 40 | SET(${_VAR} "${${_VAR}} ${_FLAG}") |
|---|
| 41 | else (${_VAR}) |
|---|
| 42 | SET(${_VAR} ${_FLAG}) |
|---|
| 43 | endif (${_VAR}) |
|---|
| 44 | MESSAGE("-- Added ${_FLAG} to ${_VAR}") |
|---|
| 45 | endif (${_DESC}) |
|---|
| 46 | ENDMACRO (SUGGEST_CXX_FLAG_DESC) |
|---|
| 47 | |
|---|
| 48 | MACRO (SUGGEST_CXX_FLAG _FLAG _VAR) |
|---|
| 49 | STRING(REPLACE "-" "" _DESC ${_FLAG}) |
|---|
| 50 | SET(_DESC "CXX_ACCEPTS_${_DESC}") |
|---|
| 51 | SUGGEST_CXX_FLAG_DESC(${_FLAG} ${_VAR} ${_DESC}) |
|---|
| 52 | ENDMACRO (SUGGEST_CXX_FLAG) |
|---|
| 53 | |
|---|
| 54 | MACRO (SUGGEST_CXX_FLAGS _FLAGS _VAR) |
|---|
| 55 | foreach(_FLAG ${_FLAGS}) |
|---|
| 56 | SUGGEST_CXX_FLAG(${_FLAG} ${_VAR}) |
|---|
| 57 | endforeach(_FLAG) |
|---|
| 58 | ENDMACRO (SUGGEST_CXX_FLAGS) |
|---|