Browse Source

CUDA/Clang: Sync target directory table with FindCUDAToolkit

Since commit 6636693134 (FindCUDAToolkit: Re-unify with
Internal/CUDAToolkit, 2020-06-11, v3.18.0-rc2~6^2~7) the table is
duplicated.

Update the CUDA target directory table for Clang to account for changes
to the equivalent table in FindCUDAToolkit:

* commit bcdd486bf7 (CUDA: Enable support on QNX, 2020-10-30,
                     v3.19.0-rc3~8^2~1)
* commit 743d4181b4 (FindCUDAToolkit: Support cross-compilation to
                     sbsa-linux, 2023-01-11, v3.26.0-rc1~118^2)
Brad King 9 months ago
parent
commit
40eeca77c3
2 changed files with 17 additions and 10 deletions
  1. 16 9
      Modules/CMakeDetermineCUDACompiler.cmake
  2. 1 1
      Modules/FindCUDAToolkit.cmake

+ 16 - 9
Modules/CMakeDetermineCUDACompiler.cmake

@@ -171,24 +171,32 @@ if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
 
   # Find target directory when crosscompiling.
   if(CMAKE_CROSSCOMPILING)
+    # Keep in sync with equivalent table in FindCUDAToolkit!
     if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
       # Support for NVPACK
-      set(_CUDA_TARGET_NAME "armv7-linux-androideabi")
+      set(_CUDA_TARGET_NAMES "armv7-linux-androideabi")
     elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
-      set(_CUDA_TARGET_NAME "armv7-linux-gnueabihf")
+      set(_CUDA_TARGET_NAMES "armv7-linux-gnueabihf")
     elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
       if(ANDROID_ARCH_NAME STREQUAL "arm64")
-        set(_CUDA_TARGET_NAME "aarch64-linux-androideabi")
+        set(_CUDA_TARGET_NAMES "aarch64-linux-androideabi")
+      elseif (CMAKE_SYSTEM_NAME STREQUAL "QNX")
+        set(_CUDA_TARGET_NAMES "aarch64-qnx")
       else()
-        set(_CUDA_TARGET_NAME "aarch64-linux")
+        set(_CUDA_TARGET_NAMES "aarch64-linux" "sbsa-linux")
       endif()
     elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-      set(_CUDA_TARGET_NAME "x86_64-linux")
+      set(_CUDA_TARGET_NAMES "x86_64-linux")
     endif()
 
-    if(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
-      set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
-    endif()
+    foreach(_CUDA_TARGET_NAME IN LISTS _CUDA_TARGET_NAMES)
+      if(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
+        set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
+        break()
+      endif()
+    endforeach()
+    unset(_CUDA_TARGET_NAME)
+    unset(_CUDA_TARGET_NAMES)
   endif()
 
   # If not already set we can simply use the toolkit root or it's a scattered installation.
@@ -227,7 +235,6 @@ if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
   unset(_CUDA_INCLUDE_DIR)
   unset(_CUDA_LIBRARY_DIR)
   unset(_CUDA_TARGET_DIR)
-  unset(_CUDA_TARGET_NAME)
 elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
   include(Internal/CMakeNVCCParseImplicitInfo)
   # Parse CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT to get:

+ 1 - 1
Modules/FindCUDAToolkit.cmake

@@ -939,7 +939,7 @@ endif()
 
 # Find target directory when crosscompiling.
 if(CMAKE_CROSSCOMPILING)
-  # Keep in sync with equivalent table in FindCUDA!
+  # Keep in sync with equivalent table in CMakeDetermineCUDACompiler and FindCUDA!
   if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
     # Support for NVPACK
     set(CUDAToolkit_TARGET_NAMES "armv7-linux-androideabi")