CheckCompilerFlag: Update the regex used to detect invalid options for GCC 10

The warning emmitted by GCC for invalid options have been updated to
read "command-line option XXX is valid ..." instead of "command line
option XXX is valid ...".  Update the regex to make it valid with both
the old and new warning message.

Fixes: #21275
This commit is contained in:
Luthaf
2020-10-05 23:28:46 +02:00
committed by Brad King
parent 7f031e1130
commit d66858c8e4
2 changed files with 12 additions and 5 deletions

View File

@@ -45,20 +45,20 @@ function(CHECK_COMPILER_FLAG _lang _flag _var)
if(_lang STREQUAL C)
set(_lang_src "int main(void) { return 0; }")
set(_lang_fail_regex FAIL_REGEX "command line option .* is valid for .* but not for C")
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C")
elseif(_lang STREQUAL CXX)
set(_lang_src "int main() { return 0; }")
set(_lang_fail_regex FAIL_REGEX "command line option .* is valid for .* but not for C\\+\\+")
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+")
elseif(_lang STREQUAL Fortran)
set(_lang_src " program test\n stop\n end program")
set(_lang_fail_regex FAIL_REGEX "command line option .* is valid for .* but not for Fortran")
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
elseif(_lang STREQUAL OBJC)
set(_lang_src [=[
#ifndef __OBJC__
# error "Not an Objective-C compiler"
#endif
int main(void) { return 0; }]=])
set(_lang_fail_regex FAIL_REGEX "command line option .* is valid for .* but not for Objective-C" # GNU
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C" # GNU
FAIL_REGEX "argument unused during compilation: .*") # Clang
elseif(_lang STREQUAL OBJCXX)
set(_lang_src [=[
@@ -66,7 +66,7 @@ int main(void) { return 0; }]=])
# error "Not an Objective-C++ compiler"
#endif
int main(void) { return 0; }]=])
set(_lang_fail_regex FAIL_REGEX "command line option .* is valid for .* but not for Objective-C\\+\\+" # GNU
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C\\+\\+" # GNU
FAIL_REGEX "argument unused during compilation: .*") # Clang
else()
message (SEND_ERROR "check_compiler_flag: ${_lang}: unknown language.")

View File

@@ -13,3 +13,10 @@ if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_C_SIMULATE_ID}" STR
message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-x c' check failed")
endif()
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
check_compiler_flag(C "-frtti" SHOULD_FAIL_RTTI)
if(SHOULD_FAIL_RTTI)
message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-frtti' check passed but should have failed")
endif()
endif()