From b978bf39e3b89cc16024dc73421dcf54f76dfce6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 16 Dec 2010 17:54:00 +0000 Subject: fix for error in testing C/C++ flags --- build_files/cmake/macros.cmake | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'build_files') 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() -- cgit v1.2.3