summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-12-14 13:58:29 +0000
committerKitware Robot <kwrobot@kitware.com>2022-12-14 08:58:54 -0500
commit2d3ed58ceec216417d50d6cdf45120c218cdcf18 (patch)
tree9caf9d1cbd41783ecaece070cf924d69a60b0ef3
parent6db3519c41e8d58401607be1020a9d4aab645c39 (diff)
parent0aeeb8160c8ef68a07f84de908578167d46c0935 (diff)
downloadcmake-2d3ed58ceec216417d50d6cdf45120c218cdcf18.tar.gz
Merge topic 'cuda-nvcc-cuda20' into release-3.25
0aeeb8160c CUDA: Add support for cuda_std_20 for nvcc 12.0+ Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !8008
-rw-r--r--Help/release/3.25.rst6
-rw-r--r--Modules/Compiler/NVIDIA-CUDA.cmake12
2 files changed, 18 insertions, 0 deletions
diff --git a/Help/release/3.25.rst b/Help/release/3.25.rst
index fdf8a94651..e76a308e03 100644
--- a/Help/release/3.25.rst
+++ b/Help/release/3.25.rst
@@ -246,3 +246,9 @@ Changes made since CMake 3.25.0 include the following.
command no longer accepts ``.a`` file names. This behavior was added
in CMake 3.25.0, but has been reverted due finding GNU-ABI libraries
in cases we did not previously.
+
+3.25.2
+------
+
+* CUDA language level 20 (corresponding to C++20) is now supported with
+ NVCC 12.0 and above.
diff --git a/Modules/Compiler/NVIDIA-CUDA.cmake b/Modules/Compiler/NVIDIA-CUDA.cmake
index c8dcd2a193..670e0ca0ea 100644
--- a/Modules/Compiler/NVIDIA-CUDA.cmake
+++ b/Modules/Compiler/NVIDIA-CUDA.cmake
@@ -119,6 +119,13 @@ if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
endif()
endif()
+ if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0)
+ if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505)
+ set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20")
+ set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20")
+ endif()
+ endif()
+
else()
set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
@@ -138,6 +145,11 @@ else()
set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17")
endif()
+ if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0)
+ set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20")
+ set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20")
+ endif()
+
endif()
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "9.0")