diff options
author | Brad King <brad.king@kitware.com> | 2024-04-17 13:15:23 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-04-17 13:15:34 (GMT) |
commit | 9bf79a7964d18cc32678d10305f948bb72f978d6 (patch) | |
tree | ec937ab1cb10bbc0ddb5931f004eed3d4d26a0da | |
parent | 56f333ef2fc416772f08ce9fc77cd17be620755f (diff) | |
parent | 1ba4a0633833903a3429e87a4c72ffe738139dd4 (diff) | |
download | CMake-9bf79a7964d18cc32678d10305f948bb72f978d6.zip CMake-9bf79a7964d18cc32678d10305f948bb72f978d6.tar.gz CMake-9bf79a7964d18cc32678d10305f948bb72f978d6.tar.bz2 |
Merge topic 'lang-std-c++26'
1ba4a06338 GNU: Add flags for C++26 modes
2038f2c2b1 C++26: Support detection as the default standard
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9434
-rw-r--r-- | Modules/CMakeCUDACompilerId.cu.in | 4 | ||||
-rw-r--r-- | Modules/CMakeCXXCompilerId.cpp.in | 4 | ||||
-rw-r--r-- | Modules/CMakeHIPCompilerId.hip.in | 4 | ||||
-rw-r--r-- | Modules/CMakeOBJCXXCompilerId.mm.in | 4 | ||||
-rw-r--r-- | Modules/Compiler/GNU.cmake | 5 | ||||
-rw-r--r-- | Tests/CompileFeatures/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/CompileFeatures/default_dialect.cpp | 6 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/compiler_introspection.cmake | 4 |
8 files changed, 25 insertions, 7 deletions
diff --git a/Modules/CMakeCUDACompilerId.cu.in b/Modules/CMakeCUDACompilerId.cu.in index 170b6b4..be8f1b3 100644 --- a/Modules/CMakeCUDACompilerId.cu.in +++ b/Modules/CMakeCUDACompilerId.cu.in @@ -25,7 +25,9 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; #define CXX_STD __cplusplus const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > CXX_STD_20 +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 "23" #elif CXX_STD > CXX_STD_17 "20" diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in index 6df15ac..1cd8006 100644 --- a/Modules/CMakeCXXCompilerId.cpp.in +++ b/Modules/CMakeCXXCompilerId.cpp.in @@ -89,7 +89,9 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; #endif const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > CXX_STD_20 +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 "23" #elif CXX_STD > CXX_STD_17 "20" diff --git a/Modules/CMakeHIPCompilerId.hip.in b/Modules/CMakeHIPCompilerId.hip.in index f1bd120..fa97667 100644 --- a/Modules/CMakeHIPCompilerId.hip.in +++ b/Modules/CMakeHIPCompilerId.hip.in @@ -26,7 +26,9 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; #define CXX_STD __cplusplus const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > CXX_STD_20 +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 "23" #elif CXX_STD > CXX_STD_17 "20" diff --git a/Modules/CMakeOBJCXXCompilerId.mm.in b/Modules/CMakeOBJCXXCompilerId.mm.in index 265cc75..cadbaff 100644 --- a/Modules/CMakeOBJCXXCompilerId.mm.in +++ b/Modules/CMakeOBJCXXCompilerId.mm.in @@ -33,7 +33,9 @@ char const* qnxnto = "INFO" ":" "qnxnto[]"; #define CXX_STD __cplusplus const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > CXX_STD_20 +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 "23" #elif CXX_STD > CXX_STD_17 "20" diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake index fa199b4..1113e9a 100644 --- a/Modules/Compiler/GNU.cmake +++ b/Modules/Compiler/GNU.cmake @@ -293,4 +293,9 @@ macro(__compiler_gnu_cxx_standards lang) set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++2a") set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++2a") endif() + + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0) + set(CMAKE_${lang}26_STANDARD_COMPILE_OPTION "-std=c++26") + set(CMAKE_${lang}26_EXTENSION_COMPILE_OPTION "-std=gnu++26") + endif() endmacro() diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index e206e70..d6acd7b 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -286,6 +286,7 @@ if (CMAKE_CXX_COMPILE_FEATURES) if (std_flag_idx EQUAL -1) add_executable(default_dialect default_dialect.cpp) target_compile_definitions(default_dialect PRIVATE + DEFAULT_CXX26=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},26> DEFAULT_CXX23=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},23> DEFAULT_CXX20=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},20> DEFAULT_CXX17=$<EQUAL:${CMAKE_CXX_STANDARD_DEFAULT},17> diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index c0cc1b6..b873b14 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -3,7 +3,11 @@ template <long l> struct Outputter; -#if DEFAULT_CXX23 +#if DEFAULT_CXX26 +# if CXX_STD <= CXX_STD_23 +Outputter<CXX_STD> o; +# endif +#elif DEFAULT_CXX23 # if CXX_STD <= CXX_STD_20 Outputter<CXX_STD> o; # endif diff --git a/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake b/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake index f3360c7..1cfa27e 100644 --- a/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake +++ b/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake @@ -40,6 +40,6 @@ set(${lang}${standard}_EXT_FLAG ${CMAKE_${lang}${standard}_EXTENSION_COMPILE_OPT endforeach() endmacro() -info(C 90 99 11 17 23) -info(CXX 98 11 14 17 20 23) +info(C 90 99 11 17 23 26) +info(CXX 98 11 14 17 20 23 26) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}") |