Browse Source

CheckCompilerFlag: Match the Clang "argument unused" output for all languages

Improve detection of missing compiler flags: move "argument unused
during compilation: .*" pattern from language-specific branches into
the common list.
KOLANICH 2 years ago
parent
commit
5b45a3d0ce

+ 1 - 0
Modules/CMakeCheckCompilerFlagCommonPatterns.cmake

@@ -12,6 +12,7 @@ macro (CHECK_COMPILER_FLAG_COMMON_PATTERNS _VAR)
     FAIL_REGEX "switch .* is no longer supported"          # GNU
     FAIL_REGEX "unknown .*option"                          # Clang
     FAIL_REGEX "optimization flag .* not supported"        # Clang
+    FAIL_REGEX "argument unused during compilation: .*"    # Clang
     FAIL_REGEX "unknown argument ignored"                  # Clang (cl)
     FAIL_REGEX "ignoring unknown option"                   # MSVC, Intel
     FAIL_REGEX "warning D9002"                             # MSVC, any lang

+ 0 - 1
Modules/Internal/CMakeTryCompilerOrLinkerFlag.cmake

@@ -69,7 +69,6 @@ function(CMAKE_TRY_COMPILER_OR_LINKER_FLAG lang flag result)
     set (CCCF_COMMAND_PATTERN "<FLAG> -o <OUTPUT> <SOURCE>")
   endif()
 
-  list (APPEND CCCF_FAIL_REGEX "argument unused during compilation") # clang
   if (check_lang STREQUAL "C")
     list(APPEND CCCF_FAIL_REGEX
       "command line option .* is valid for .* but not for C") # GNU

+ 3 - 7
Modules/Internal/CheckFlagCommonConfig.cmake

@@ -22,30 +22,26 @@ macro(CMAKE_CHECK_FLAG_COMMON_INIT _FUNC _LANG _SRC _PATTERNS)
       FAIL_REGEX "-Werror=.* argument .* is not valid for C\\+\\+")
   elseif("${_LANG}" STREQUAL "CUDA")
     set(${_SRC} "__host__ int main() { return 0; }")
-    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+" # Host GNU
-      FAIL_REGEX "argument unused during compilation: .*") # Clang
+    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+") # Host GNU
   elseif("${_LANG}" STREQUAL "Fortran")
     set(${_SRC} "       program test\n       stop\n       end program")
     set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
   elseif("${_LANG}" STREQUAL "HIP")
     set(${_SRC} "__host__ int main() { return 0; }")
-    set(${_PATTERNS} FAIL_REGEX "argument unused during compilation: .*") # Clang
   elseif("${_LANG}" STREQUAL "OBJC")
     set(${_SRC} [=[
       #ifndef __OBJC__
       #  error "Not an Objective-C compiler"
       #endif
       int main(void) { return 0; }]=])
-    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C" # GNU
-      FAIL_REGEX "argument unused during compilation: .*") # Clang
+    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C") # GNU
   elseif("${_LANG}" STREQUAL "OBJCXX")
     set(${_SRC} [=[
       #ifndef __OBJC__
       #  error "Not an Objective-C++ compiler"
       #endif
       int main(void) { return 0; }]=])
-    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C\\+\\+" # GNU
-      FAIL_REGEX "argument unused during compilation: .*") # Clang
+    set(${_PATTERNS} FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C\\+\\+") # GNU
   elseif("${_LANG}" STREQUAL "ISPC")
     set(${_SRC} "float func(uniform int32, float a) { return a / 2.25; }")
   elseif("${_LANG}" STREQUAL "Swift")