summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorİsmail Dönmez <ismail@i10z.com>2017-11-24 12:22:46 (GMT)
committerİsmail Dönmez <ismail@i10z.com>2017-11-28 16:08:33 (GMT)
commitf969f1a9ce1d0045b9d056fd08c4683c34c420fa (patch)
treea1468a9f20bf7d3ee3f662778e7f87682d78fe0e
parent7746fdb2fe0177341aadeafec2ae73aa08ddfaf6 (diff)
downloadCMake-f969f1a9ce1d0045b9d056fd08c4683c34c420fa.zip
CMake-f969f1a9ce1d0045b9d056fd08c4683c34c420fa.tar.gz
CMake-f969f1a9ce1d0045b9d056fd08c4683c34c420fa.tar.bz2
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
-rw-r--r--Modules/CMakeDetermineCompilerId.cmake6
1 files changed, 3 insertions, 3 deletions
diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index 347106e..15c304c 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -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()