root/rxstring/trunk/SuggestCXXFlag.cmake

Revision 683, 2.1 kB (checked in by tapted, 2 years ago)

Borrow TextCXXAcceptsFlag -- need to copy for C anyway

Line 
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
15MACRO(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})
34ENDMACRO(CHECK_CXX_ACCEPTS_FLAG)
35
36MACRO (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})
46ENDMACRO (SUGGEST_CXX_FLAG_DESC)
47
48MACRO (SUGGEST_CXX_FLAG _FLAG _VAR)
49   STRING(REPLACE "-" "" _DESC ${_FLAG})
50   SET(_DESC "CXX_ACCEPTS_${_DESC}")
51   SUGGEST_CXX_FLAG_DESC(${_FLAG} ${_VAR} ${_DESC})
52ENDMACRO (SUGGEST_CXX_FLAG)
53
54MACRO (SUGGEST_CXX_FLAGS _FLAGS _VAR)
55   foreach(_FLAG ${_FLAGS})
56     SUGGEST_CXX_FLAG(${_FLAG} ${_VAR})
57   endforeach(_FLAG)
58ENDMACRO (SUGGEST_CXX_FLAGS)
Note: See TracBrowser for help on using the browser.