diff options
-rw-r--r-- | .gitlab/ci/configure_windows_clang_common.cmake | 4 | ||||
-rw-r--r-- | Modules/Compiler/Clang.cmake | 14 |
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 |