From 2038f2c2b14b733a697d332fdaf357a1ea3167bb Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Mon, 15 Apr 2024 17:38:07 +0300 Subject: [PATCH] C++26: Support detection as the default standard This was missed in commit f808d8afb9 (CMake: Support upcoming C++26 language level, 2022-08-19, v3.25.0-rc1~218^2). --- Modules/CMakeCUDACompilerId.cu.in | 4 +++- Modules/CMakeCXXCompilerId.cpp.in | 4 +++- Modules/CMakeHIPCompilerId.hip.in | 4 +++- Modules/CMakeOBJCXXCompilerId.mm.in | 4 +++- Tests/CompileFeatures/CMakeLists.txt | 1 + Tests/CompileFeatures/default_dialect.cpp | 6 +++++- Tests/RunCMake/CompileFeatures/compiler_introspection.cmake | 4 ++-- 7 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Modules/CMakeCUDACompilerId.cu.in b/Modules/CMakeCUDACompilerId.cu.in index 170b6b4f01..be8f1b3d43 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 6df15acb8c..1cd8006fcf 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 f1bd1204f1..fa97667022 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 265cc75695..cadbaffb3c 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/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index e206e70bdd..d6acd7b1e5 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=$ DEFAULT_CXX23=$ DEFAULT_CXX20=$ DEFAULT_CXX17=$ diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index c0cc1b601f..b873b14677 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -3,7 +3,11 @@ template struct Outputter; -#if DEFAULT_CXX23 +#if DEFAULT_CXX26 +# if CXX_STD <= CXX_STD_23 +Outputter o; +# endif +#elif DEFAULT_CXX23 # if CXX_STD <= CXX_STD_20 Outputter o; # endif diff --git a/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake b/Tests/RunCMake/CompileFeatures/compiler_introspection.cmake index f3360c7958..1cfa27e298 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}")