diff options
-rw-r--r-- | Help/prop_tgt/OBJC_STANDARD.rst | 10 | ||||
-rw-r--r-- | Modules/CMakeCUDACompilerId.cu.in | 20 | ||||
-rw-r--r-- | Modules/CMakeCXXCompilerId.cpp.in | 4 | ||||
-rw-r--r-- | Modules/CMakeHIPCompilerId.hip.in | 21 | ||||
-rw-r--r-- | Modules/CMakeOBJCCompilerId.m.in | 20 | ||||
-rw-r--r-- | Modules/CMakeOBJCXXCompilerId.mm.in | 23 | ||||
-rw-r--r-- | Modules/Compiler/GNU.cmake | 5 | ||||
-rw-r--r-- | Modules/FindBoost.cmake | 4 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Tests/CompileFeatures/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/CompileFeatures/default_dialect.cpp | 6 | ||||
-rw-r--r-- | Tests/FindGTK2/gdk/main.c | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/compiler_introspection.cmake | 4 |
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}") |