diff options
author | Raul Tambre <raul@tambre.ee> | 2021-02-07 09:27:21 (GMT) |
---|---|---|
committer | Raul Tambre <raul@tambre.ee> | 2021-02-25 16:22:07 (GMT) |
commit | 7596d8b951e34c61b73e54a38cca86bdcf89dad8 (patch) | |
tree | e40bb87c19db86ce2ad28345e99918de915c810a | |
parent | c99db7153337865861ccb79c8f855d4d9f3539fc (diff) | |
download | CMake-7596d8b951e34c61b73e54a38cca86bdcf89dad8.zip CMake-7596d8b951e34c61b73e54a38cca86bdcf89dad8.tar.gz CMake-7596d8b951e34c61b73e54a38cca86bdcf89dad8.tar.bz2 |
CMakeCCompilerId: Fix C standard detection in Clang MSVC mode
Clang doesn't define __STDC__ if in MSVC compatibility mode, but does define
__STDC_VERSION__.
Avoid the fallback for this combination.
-rw-r--r-- | Modules/CMakeCCompilerId.c.in | 5 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in index 8ba6abc..e6662b8 100644 --- a/Modules/CMakeCCompilerId.c.in +++ b/Modules/CMakeCCompilerId.c.in @@ -33,9 +33,8 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; @CMAKE_C_COMPILER_ID_PLATFORM_CONTENT@ @CMAKE_C_COMPILER_ID_ERROR_FOR_TEST@ -#if !defined(__STDC__) -# if (defined(_MSC_VER) && !defined(__clang__)) \ - || (defined(__ibmxl__) || defined(__IBMC__)) +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) # define C_DIALECT "90" # else # define C_DIALECT diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index fed0841..5f8ff42 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -417,6 +417,13 @@ function(add_RunCMake_test_try_compile) set(CMAKE_C_STANDARD_DEFAULT "") endif() endif() + if(CMAKE_VERSION VERSION_LESS 3.20.20210225 AND "x${CMAKE_C_COMPILER_ID}" STREQUAL "xClang") + # Older CMake versions do not know about Clang MSVC compatibility mode + # standards. Approximate the logic from Clang-C.cmake. + if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.5.2) + set(CMAKE_C_STANDARD_DEFAULT 11) + endif() + endif() foreach(var CMAKE_SYSTEM_NAME CMAKE_C_COMPILER_ID |