Преглед изворни кода

FindCUDAToolkit: Support scattered installations when crosscompiling

Previously when CMAKE_CROSSCOMPILING was ON we'd end up not setting the target
directory if the non-scattered one didn't exist.
Fix this by assuming a scattered installation if the target directory isn't set
after the crosscompiling logic.

This is the same fix as commit 2c0d5d01ee (CUDA: Support scattered
installations when crosscompiling with Clang, 2020-09-14).
Raul Tambre пре 5 година
родитељ
комит
9d3f7872e1

+ 0 - 5
Help/release/dev/cuda-clang-scattered-cross.rst

@@ -1,5 +0,0 @@
-cuda-clang-scattered-cross
---------------------------
-
-* Scattered toolkit installations are now recognized when crosscompiling
-  ``CUDA`` using Clang.

+ 7 - 0
Help/release/dev/cuda-scattered-cross.rst

@@ -0,0 +1,7 @@
+cuda-scattered-cross
+--------------------
+
+* Scattered toolkit installations are now recognized when crosscompiling
+  ``CUDA`` using Clang.
+* :module:`FindCUDAToolkit` now finds scattered toolkit installations when
+  crosscompiling.

+ 5 - 4
Modules/FindCUDAToolkit.cmake

@@ -668,16 +668,14 @@ else()
   unset(_CUDAToolkit_version_file)
 endif()
 
-# Handle cross compilation
+# Find target directory when crosscompiling.
 if(CMAKE_CROSSCOMPILING)
   if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
     # Support for NVPACK
     set(CUDAToolkit_TARGET_NAME "armv7-linux-androideabi")
   elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
-    # Support for arm cross compilation
     set(CUDAToolkit_TARGET_NAME "armv7-linux-gnueabihf")
   elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
-    # Support for aarch64 cross compilation
     if(ANDROID_ARCH_NAME STREQUAL "arm64")
       set(CUDAToolkit_TARGET_NAME "aarch64-linux-androideabi")
     else()
@@ -698,7 +696,10 @@ if(CMAKE_CROSSCOMPILING)
     # PATh
     set(_CUDAToolkit_Pop_ROOT_PATH True)
   endif()
-else()
+endif()
+
+# If not already set we can simply use the toolkit root or it's a scattered installation.
+if(NOT CUDAToolkit_TARGET_DIR)
   # Not cross compiling
   set(CUDAToolkit_TARGET_DIR "${CUDAToolkit_ROOT_DIR}")
   # Now that we have the real ROOT_DIR, find components inside it.