From 3016a6486243d90847aa84d87f330c68b4162c5e Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 9 Mar 2024 18:00:00 -0500 Subject: [PATCH] FindCUDA: Support cross-compilation to sbsa-linux Port commit 743d4181b4 (FindCUDAToolkit: Support cross-compilation to sbsa-linux, 2023-01-11, v3.26.0-rc1~118^2) to FindCUDA too. Issue: #24192 --- Modules/FindCUDA.cmake | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index d13c989441..130b239e7f 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -891,26 +891,29 @@ if(CMAKE_CROSSCOMPILING) SET (CUDA_TOOLKIT_ROOT $ENV{CUDA_TOOLKIT_ROOT}) if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a") # Support for NVPACK - set (CUDA_TOOLKIT_TARGET_NAME "armv7-linux-androideabi") + set (CUDA_TOOLKIT_TARGET_NAMES "armv7-linux-androideabi") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") # Support for arm cross compilation - set(CUDA_TOOLKIT_TARGET_NAME "armv7-linux-gnueabihf") + set(CUDA_TOOLKIT_TARGET_NAMES "armv7-linux-gnueabihf") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") # Support for aarch64 cross compilation if (ANDROID_ARCH_NAME STREQUAL "arm64") - set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux-androideabi") + set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-linux-androideabi") elseif (CMAKE_SYSTEM_NAME STREQUAL "QNX") - set(CUDA_TOOLKIT_TARGET_NAME "aarch64-qnx") + set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-qnx") else() - set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux") + set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-linux" "sbsa-linux") endif (ANDROID_ARCH_NAME STREQUAL "arm64") endif() - if (EXISTS "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}") - set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}" CACHE PATH "CUDA Toolkit target location.") - SET (CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT} CACHE PATH "Toolkit location." FORCE) - mark_as_advanced(CUDA_TOOLKIT_TARGET_DIR) - endif() + foreach(CUDA_TOOLKIT_TARGET_NAME IN LISTS CUDA_TOOLKIT_TARGET_NAMES) + if (EXISTS "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}") + set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}" CACHE PATH "CUDA Toolkit target location.") + SET (CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT} CACHE PATH "Toolkit location." FORCE) + mark_as_advanced(CUDA_TOOLKIT_TARGET_DIR) + break() + endif() + endforeach() # add known CUDA targetr root path to the set of directories we search for programs, libraries and headers set( CMAKE_FIND_ROOT_PATH "${CUDA_TOOLKIT_TARGET_DIR};${CMAKE_FIND_ROOT_PATH}")