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
This commit is contained in:
Brad King
2024-04-17 13:15:23 +00:00
committed by Kitware Robot
8 changed files with 25 additions and 7 deletions
+3 -1
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"
+3 -1
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"
+3 -1
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"
+3 -1
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"
+5
View File
@@ -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()
+1
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>
+5 -1
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
@@ -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}")