summaryrefslogtreecommitdiff
path: root/Modules/CheckCCompilerFlag.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-09-17 15:32:54 -0400
committerBrad King <brad.king@kitware.com>2009-09-17 15:32:54 -0400
commit7e3d437d0af7e625e19bbeac37e025d16cf8be11 (patch)
treeb1f25b9f149ce11f8d36c56f4b93e7d8addd771a /Modules/CheckCCompilerFlag.cmake
parentca76645ab7f235fdad652fcff7ad9a899bc12424 (diff)
downloadcmake-7e3d437d0af7e625e19bbeac37e025d16cf8be11.tar.gz
Fix CHECK_(C|CXX)_COMPILER_FLAG for GNU and MSVC
These compilers warn and return 0 for unrecognized flags. We fix the compiler flag check macros by looking for a warning in the output. See issue #9516.
Diffstat (limited to 'Modules/CheckCCompilerFlag.cmake')
-rw-r--r--Modules/CheckCCompilerFlag.cmake6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/CheckCCompilerFlag.cmake b/Modules/CheckCCompilerFlag.cmake
index c5c4eb195e..b4289e4660 100644
--- a/Modules/CheckCCompilerFlag.cmake
+++ b/Modules/CheckCCompilerFlag.cmake
@@ -17,7 +17,11 @@ INCLUDE(CheckCSourceCompiles)
MACRO (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
- CHECK_C_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT})
+ CHECK_C_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT}
+ # Some compilers do not fail with a bad flag
+ FAIL_REGEX "unrecognized option" # GNU
+ FAIL_REGEX "ignoring unknown option" # MSVC
+ )
SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
ENDMACRO (CHECK_C_COMPILER_FLAG)