mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06: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()
|
||||
endif()
|
||||
|
||||
# Test whether a GNU-like command-line option works.
|
||||
execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --version
|
||||
# Test whether an MSVC-like command-line option works.
|
||||
execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" /?
|
||||
RESULT_VARIABLE _clang_result
|
||||
OUTPUT_VARIABLE _clang_stdout
|
||||
ERROR_VARIABLE _clang_stderr)
|
||||
if(NOT _clang_result EQUAL 0)
|
||||
if(_clang_result EQUAL 0)
|
||||
return()
|
||||
endif()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user