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).
This commit is contained in:
Raul Tambre 2024-04-15 17:38:07 +03:00 committed by Brad King
parent dcbc2ef00d
commit 2038f2c2b1
7 changed files with 20 additions and 7 deletions

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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>

View File

@ -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

View File

@ -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}")