diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 087e0a9088..b9c91a42c4 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -78,6 +78,7 @@ Variables that Provide Information /variable/CMAKE_LANG_COMPILER_LINKER_ID /variable/CMAKE_LANG_COMPILER_LINKER_VERSION /variable/CMAKE_LANG_COMPILER_RANLIB + /variable/CMAKE_LANG_DEVICE_LINK_MODE /variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX /variable/CMAKE_LANG_LINK_MODE /variable/CMAKE_LINK_LIBRARY_SUFFIX diff --git a/Help/release/dev/CMAKE_LANG_LINK_MODE.rst b/Help/release/dev/CMAKE_LANG_LINK_MODE.rst index 3a0e38c97c..859cd7cbf7 100644 --- a/Help/release/dev/CMAKE_LANG_LINK_MODE.rst +++ b/Help/release/dev/CMAKE_LANG_LINK_MODE.rst @@ -1,5 +1,6 @@ CMAKE_LANG_LINK_MODE -------------------- -* The :variable:`CMAKE__LINK_MODE` variable was added to provide +* The :variable:`CMAKE__LINK_MODE` and + :variable:`CMAKE__DEVICE_LINK_MODE` variables were added to provide information on how the link step is done. diff --git a/Help/variable/CMAKE_LANG_DEVICE_LINK_MODE.rst b/Help/variable/CMAKE_LANG_DEVICE_LINK_MODE.rst new file mode 100644 index 0000000000..442de8a2db --- /dev/null +++ b/Help/variable/CMAKE_LANG_DEVICE_LINK_MODE.rst @@ -0,0 +1,12 @@ +CMAKE__DEVICE_LINK_MODE +----------------------------- + +.. versionadded:: 4.0 + +Defines how the device link step is done. The possible values are: + +``DRIVER`` + The compiler is used as driver for the device link step. + +``LINKER`` + The linker is used directly for the device link step. diff --git a/Modules/Compiler/Clang-CUDA.cmake b/Modules/Compiler/Clang-CUDA.cmake index 3874921c90..c95615b2bd 100644 --- a/Modules/Compiler/Clang-CUDA.cmake +++ b/Modules/Compiler/Clang-CUDA.cmake @@ -26,6 +26,8 @@ set(_CMAKE_CUDA_PTX_FLAG "--cuda-device-only -S") set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG ${CMAKE_CUDA_LINKER_WRAPPER_FLAG}) set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG_SEP ${CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP}) +set(CMAKE_CUDA_DEVICE_LINK_MODE DRIVER) + # RulePlaceholderExpander expands crosscompile variables like sysroot and target only for CMAKE__COMPILER. Override the default. set(CMAKE_CUDA_LINK_EXECUTABLE " -o ${__IMPLICIT_LINKS}") set(CMAKE_CUDA_CREATE_SHARED_LIBRARY " -o ${__IMPLICIT_LINKS}") diff --git a/Modules/Compiler/NVIDIA-CUDA.cmake b/Modules/Compiler/NVIDIA-CUDA.cmake index 93ad1829a4..208daea98c 100644 --- a/Modules/Compiler/NVIDIA-CUDA.cmake +++ b/Modules/Compiler/NVIDIA-CUDA.cmake @@ -21,3 +21,5 @@ set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG "-Xcompiler=") set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG_SEP ",") set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG "-Xlinker=") set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG_SEP ",") + +set(CMAKE_CUDA_DEVICE_LINK_MODE DRIVER)