summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/prop_tgt/OBJC_STANDARD.rst10
-rw-r--r--Modules/CMakeCUDACompilerId.cu.in20
-rw-r--r--Modules/CMakeCXXCompilerId.cpp.in4
-rw-r--r--Modules/CMakeHIPCompilerId.hip.in21
-rw-r--r--Modules/CMakeOBJCCompilerId.m.in20
-rw-r--r--Modules/CMakeOBJCXXCompilerId.mm.in23
-rw-r--r--Modules/Compiler/GNU.cmake5
-rw-r--r--Modules/FindBoost.cmake4
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Tests/CompileFeatures/CMakeLists.txt1
-rw-r--r--Tests/CompileFeatures/default_dialect.cpp6
-rw-r--r--Tests/FindGTK2/gdk/main.c2
-rw-r--r--Tests/RunCMake/CompileFeatures/compiler_introspection.cmake4
13 files changed, 89 insertions, 33 deletions
diff --git a/Help/prop_tgt/OBJC_STANDARD.rst b/Help/prop_tgt/OBJC_STANDARD.rst
index 0609239..a3c5653 100644
--- a/Help/prop_tgt/OBJC_STANDARD.rst
+++ b/Help/prop_tgt/OBJC_STANDARD.rst
@@ -20,6 +20,16 @@ Supported values are:
``11``
Objective C11
+``17``
+ .. versionadded:: 3.21
+
+ Objective C17
+
+``23``
+ .. versionadded:: 3.21
+
+ Objective C23
+
If the value requested does not result in a compile flag being added for
the compiler in use, a previous standard flag will be added instead. This
means that using:
diff --git a/Modules/CMakeCUDACompilerId.cu.in b/Modules/CMakeCUDACompilerId.cu.in
index d5a3b03..be8f1b3 100644
--- a/Modules/CMakeCUDACompilerId.cu.in
+++ b/Modules/CMakeCUDACompilerId.cu.in
@@ -16,16 +16,26 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
@CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT@
@CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
+#define CXX_STD __cplusplus
+
const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if __cplusplus > 202002L
+#if CXX_STD > CXX_STD_23
+ "26"
+#elif CXX_STD > CXX_STD_20
"23"
-#elif __cplusplus > 201703L
+#elif CXX_STD > CXX_STD_17
"20"
-#elif __cplusplus >= 201703L
+#elif CXX_STD > CXX_STD_14
"17"
-#elif __cplusplus >= 201402L
+#elif CXX_STD > CXX_STD_11
"14"
-#elif __cplusplus >= 201103L
+#elif CXX_STD >= CXX_STD_11
"11"
#else
"03"
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 4ac0f30..fa97667 100644
--- a/Modules/CMakeHIPCompilerId.hip.in
+++ b/Modules/CMakeHIPCompilerId.hip.in
@@ -16,16 +16,27 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
@CMAKE_HIP_COMPILER_ID_PLATFORM_CONTENT@
@CMAKE_HIP_COMPILER_ID_ERROR_FOR_TEST@
+#define CXX_STD_98 199711L
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
+#define CXX_STD __cplusplus
+
const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if __cplusplus > 202002L
+#if CXX_STD > CXX_STD_23
+ "26"
+#elif CXX_STD > CXX_STD_20
"23"
-#elif __cplusplus > 201703L
+#elif CXX_STD > CXX_STD_17
"20"
-#elif __cplusplus >= 201703L
+#elif CXX_STD > CXX_STD_14
"17"
-#elif __cplusplus >= 201402L
+#elif CXX_STD > CXX_STD_11
"14"
-#elif __cplusplus >= 201103L
+#elif CXX_STD >= CXX_STD_11
"11"
#else
"98"
diff --git a/Modules/CMakeOBJCCompilerId.m.in b/Modules/CMakeOBJCCompilerId.m.in
index 89bfe02..e88bb6f 100644
--- a/Modules/CMakeOBJCCompilerId.m.in
+++ b/Modules/CMakeOBJCCompilerId.m.in
@@ -20,20 +20,28 @@ char const* qnxnto = "INFO" ":" "qnxnto[]";
@CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT@
@CMAKE_OBJC_COMPILER_ID_ERROR_FOR_TEST@
+#define C_STD_99 199901L
+#define C_STD_11 201112L
+#define C_STD_17 201710L
+#define C_STD_23 202311L
+
+#ifdef __STDC_VERSION__
+# define C_STD __STDC_VERSION__
+#endif
+
#if !defined(__STDC__)
-# if (defined(_MSC_VER) && !defined(__clang__)) \
- || (defined(__ibmxl__) || defined(__IBMC__))
+# if defined(__ibmxl__) || defined(__IBMC__)
# define C_VERSION "90"
# else
# define C_VERSION
# endif
-#elif __STDC_VERSION__ > 201710L
+#elif C_STD > C_STD_17
# define C_VERSION "23"
-#elif __STDC_VERSION__ >= 201710L
+#elif C_STD > C_STD_11
# define C_VERSION "17"
-#elif __STDC_VERSION__ >= 201000L
+#elif C_STD > C_STD_99
# define C_VERSION "11"
-#elif __STDC_VERSION__ >= 199901L
+#elif C_STD >= C_STD_99
# define C_VERSION "99"
#else
# define C_VERSION "90"
diff --git a/Modules/CMakeOBJCXXCompilerId.mm.in b/Modules/CMakeOBJCXXCompilerId.mm.in
index 2145b40..cadbaff 100644
--- a/Modules/CMakeOBJCXXCompilerId.mm.in
+++ b/Modules/CMakeOBJCXXCompilerId.mm.in
@@ -23,22 +23,27 @@ char const* qnxnto = "INFO" ":" "qnxnto[]";
@CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT@
@CMAKE_OBJCXX_COMPILER_ID_ERROR_FOR_TEST@
-#if defined(_MSC_VER) && defined(_MSVC_LANG)
-#define CXX_STD _MSVC_LANG
-#else
+#define CXX_STD_98 199711L
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
#define CXX_STD __cplusplus
-#endif
const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if CXX_STD > 202002L
+#if CXX_STD > CXX_STD_23
+ "26"
+#elif CXX_STD > CXX_STD_20
"23"
-#elfif CXX_STD > 201703L
+#elif CXX_STD > CXX_STD_17
"20"
-#elif CXX_STD >= 201703L
+#elif CXX_STD > CXX_STD_14
"17"
-#elif CXX_STD >= 201402L
+#elif CXX_STD > CXX_STD_11
"14"
-#elif CXX_STD >= 201103L
+#elif CXX_STD >= CXX_STD_11
"11"
#else
"98"
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/Modules/FindBoost.cmake b/Modules/FindBoost.cmake
index 11a38df..df71350 100644
--- a/Modules/FindBoost.cmake
+++ b/Modules/FindBoost.cmake
@@ -1395,7 +1395,7 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
set(_Boost_THREAD_DEPENDENCIES chrono atomic)
set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono atomic)
set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
- if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.85.0 AND NOT Boost_NO_WARN_NEW_VERSIONS)
+ if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.86.0 AND NOT Boost_NO_WARN_NEW_VERSIONS)
message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
endif()
endif()
@@ -1670,7 +1670,7 @@ else()
# _Boost_COMPONENT_HEADERS. See the instructions at the top of
# _Boost_COMPONENT_DEPENDENCIES.
set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
- "1.84.0" "1.84"
+ "1.85.0" "1.85" "1.84.0" "1.84"
"1.83.0" "1.83" "1.82.0" "1.82" "1.81.0" "1.81" "1.80.0" "1.80" "1.79.0" "1.79"
"1.78.0" "1.78" "1.77.0" "1.77" "1.76.0" "1.76" "1.75.0" "1.75" "1.74.0" "1.74"
"1.73.0" "1.73" "1.72.0" "1.72" "1.71.0" "1.71" "1.70.0" "1.70" "1.69.0" "1.69"
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 226f3a0..4923917 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 29)
-set(CMake_VERSION_PATCH 20240416)
+set(CMake_VERSION_PATCH 20240418)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
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/FindGTK2/gdk/main.c b/Tests/FindGTK2/gdk/main.c
index 71f523b..2d03fbe 100644
--- a/Tests/FindGTK2/gdk/main.c
+++ b/Tests/FindGTK2/gdk/main.c
@@ -2,6 +2,6 @@
int main(int argc, char* argv[])
{
- gdk_init(argc, argv);
+ gdk_init(&argc, &argv);
return 0;
}
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}")