瀏覽代碼

Merge topic 'CMAKE_LANG_DEVICE_LINK_MODE'

53de9d0125 Introduce CMAKE_<LANG>_DEVICE_LINK_MODE variable.

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10209
Brad King 9 月之前
父節點
當前提交
cf6114886a

+ 1 - 0
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

+ 2 - 1
Help/release/dev/CMAKE_LANG_LINK_MODE.rst

@@ -1,5 +1,6 @@
 CMAKE_LANG_LINK_MODE
 --------------------
 
-* The :variable:`CMAKE_<LANG>_LINK_MODE` variable was added to provide
+* The :variable:`CMAKE_<LANG>_LINK_MODE` and
+  :variable:`CMAKE_<LANG>_DEVICE_LINK_MODE` variables were added to provide
   information on how the link step is done.

+ 12 - 0
Help/variable/CMAKE_LANG_DEVICE_LINK_MODE.rst

@@ -0,0 +1,12 @@
+CMAKE_<LANG>_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.

+ 2 - 0
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_<LANG>_COMPILER. Override the default.
 set(CMAKE_CUDA_LINK_EXECUTABLE "<CMAKE_CUDA_COMPILER> <FLAGS> <CMAKE_CUDA_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
 set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_COMPILER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")

+ 2 - 0
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)