summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/configure_windows_clang_common.cmake4
-rw-r--r--Modules/Compiler/Clang.cmake14
2 files changed, 13 insertions, 5 deletions
diff --git a/.gitlab/ci/configure_windows_clang_common.cmake b/.gitlab/ci/configure_windows_clang_common.cmake
index 89d0c9c..738477e 100644
--- a/.gitlab/ci/configure_windows_clang_common.cmake
+++ b/.gitlab/ci/configure_windows_clang_common.cmake
@@ -2,9 +2,9 @@ if("$ENV{CMAKE_CI_BUILD_NAME}" MATCHES "(^|_)gnu(_|$)")
set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "")
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23;26" CACHE STRING "")
else()
- # FIXME: Implement C23 and C++23 support for clang-cl.
+ # FIXME: Implement C23 support for clang-cl.
set(CMake_TEST_C_STANDARDS "90;99;11;17" CACHE STRING "")
- set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20" CACHE STRING "")
+ set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "")
endif()
set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")
diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake
index f09d36d..e85cdb2 100644
--- a/Modules/Compiler/Clang.cmake
+++ b/Modules/Compiler/Clang.cmake
@@ -245,17 +245,25 @@ macro(__compiler_clang_cxx_standards lang)
set(CMAKE_${lang}_STANDARD_LATEST 17)
if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
- set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
- set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++20")
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++20")
- set(CMAKE_${lang}_STANDARD_LATEST 23)
+ set(CMAKE_${lang}_STANDARD_LATEST 20)
elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++latest")
set(CMAKE_${lang}_STANDARD_LATEST 20)
endif()
+ if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "17.0")
+ set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-clang:-std=c++23")
+ set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-clang:-std=c++23")
+ set(CMAKE_${lang}_STANDARD_LATEST 23)
+ elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
+ set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_${lang}_STANDARD_LATEST 23)
+ endif()
+
__compiler_check_default_language_standard(${lang} 3.9 14)
else()
# This version of clang-cl, or the MSVC version it simulates, does not have