mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-29 18:51:05 -05:00
Clang: Do not mistake clang-cl 6.0 for GNU-like clang
The check added by commit v3.10.0-rc2~2^2 (Clang: Diagnose unsupported
GNU-like clang targeting MSVC ABI, 2017-10-10) is incorrectly detecting
clang-cl 6.0 as GNU-like. Currently cmake is testing if the clang
compiler accepts `--version` to see if it accepts GNU style flags.
However, with the latest llvm snapshot this also works for clang-cl:
> clang-cl --version
clang version 6.0.0 (trunk)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
So instead we should use the `/?` flag which fails with clang but
works with clang-cl:
> clang-cl /? &> /dev/null; echo $?
0
> clang /? &> /dev/null; echo $?
1
Fixes: #17518
This commit is contained in:
@@ -742,12 +742,12 @@ function(CMAKE_DIAGNOSE_UNSUPPORTED_CLANG lang envvar)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Test whether a GNU-like command-line option works.
|
# Test whether an MSVC-like command-line option works.
|
||||||
execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --version
|
execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" /?
|
||||||
RESULT_VARIABLE _clang_result
|
RESULT_VARIABLE _clang_result
|
||||||
OUTPUT_VARIABLE _clang_stdout
|
OUTPUT_VARIABLE _clang_stdout
|
||||||
ERROR_VARIABLE _clang_stderr)
|
ERROR_VARIABLE _clang_stderr)
|
||||||
if(NOT _clang_result EQUAL 0)
|
if(_clang_result EQUAL 0)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user