diff options
-rw-r--r-- | build_files/cmake/macros.cmake | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index b1428cdf131..ff8baa544b8 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -275,15 +275,34 @@ macro(remove_strict_flags) endmacro() + +# XXX, until cmake fix this bug! from CheckCCompilerFlag.cmakem reported 11615 +INCLUDE(CheckCSourceCompiles) +MACRO (CHECK_C_COMPILER_FLAG__INTERNAL _FLAG _RESULT) + SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") + SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") + CHECK_C_SOURCE_COMPILES("int main(void) { return 0;}" ${_RESULT} + # Some compilers do not fail with a bad flag + FAIL_REGEX "unrecognized .*option" # GNU + FAIL_REGEX "ignoring unknown option" # MSVC + FAIL_REGEX "[Uu]nknown option" # HP + FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro + FAIL_REGEX "command option .* is not recognized" # XL + ) + SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") +ENDMACRO (CHECK_C_COMPILER_FLAG__INTERNAL) +# XXX, end duplicate code. + macro(ADD_CHECK_C_COMPILER_FLAG _CFLAGS _FLAG) - include(CheckCCompilerFlag) + # include(CheckCCompilerFlag) - CHECK_C_COMPILER_FLAG(${_FLAG} SUPPORT_WALL) - - if(SUPPORT_WALL) + # odd workaround + set(CFLAG_TEST "CFLAG_TEST") + CHECK_C_COMPILER_FLAG__INTERNAL("${_FLAG}" CFLAG_TEST) + if(CFLAG_TEST) # message(STATUS "Using CFLAG: ${_FLAG}") set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}") else() @@ -297,9 +316,10 @@ macro(ADD_CHECK_CXX_COMPILER_FLAG include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG(${_FLAG} SUPPORT_WALL) - - if(SUPPORT_WALL) + # odd workaround + set(CFLAG_TEST "CXXFLAG_TEST") + CHECK_CXX_COMPILER_FLAG("${_FLAG}" CXXFLAG_TEST) + if(CXXFLAG_TEST) # message(STATUS "Using CXXFLAG: ${_FLAG}") set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}") else() |