Merge topic 'cuda-cross-targets'
781a67bf5e
CUDA/Clang: Determine cross-compiling target from CMAKE_CUDA_COMPILER_TARGET40eeca77c3
CUDA/Clang: Sync target directory table with FindCUDAToolkit05efcdd464
FindCUDA: Sync target directory table with FindCUDAToolkit Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !10421
This commit is contained in:
commit
8295a4ad32
@ -171,24 +171,40 @@ if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
|
||||
|
||||
# Find target directory when crosscompiling.
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
|
||||
if(CMAKE_CUDA_COMPILER_TARGET MATCHES "^([^-]+)(-|$)")
|
||||
set(_CUDA_TARGET_PROCESSOR "${CMAKE_MATCH_1}")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR)
|
||||
set(_CUDA_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
else()
|
||||
message(FATAL_ERROR "Cross-compiling CUDA with Clang requires CMAKE_CUDA_COMPILER_TARGET and/or CMAKE_SYSTEM_PROCESSOR to be set.")
|
||||
endif()
|
||||
# Keep in sync with equivalent table in FindCUDAToolkit!
|
||||
if(_CUDA_TARGET_PROCESSOR STREQUAL "armv7-a")
|
||||
# Support for NVPACK
|
||||
set(_CUDA_TARGET_NAME "armv7-linux-androideabi")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
|
||||
set(_CUDA_TARGET_NAME "armv7-linux-gnueabihf")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
|
||||
set(_CUDA_TARGET_NAMES "armv7-linux-androideabi")
|
||||
elseif(_CUDA_TARGET_PROCESSOR MATCHES "arm")
|
||||
set(_CUDA_TARGET_NAMES "armv7-linux-gnueabihf")
|
||||
elseif(_CUDA_TARGET_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")
|
||||
elseif(_CUDA_TARGET_PROCESSOR STREQUAL "x86_64")
|
||||
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)
|
||||
unset(_CUDA_TARGET_PROCESSOR)
|
||||
endif()
|
||||
|
||||
# If not already set we can simply use the toolkit root or it's a scattered installation.
|
||||
@ -227,7 +243,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:
|
||||
|
@ -891,21 +891,22 @@ endif ()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(CUDA_TOOLKIT_ROOT $ENV{CUDA_TOOLKIT_ROOT})
|
||||
# Keep in sync with equivalent table in FindCUDAToolkit!
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
|
||||
# Support for NVPACK
|
||||
set (CUDA_TOOLKIT_TARGET_NAMES "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_NAMES "armv7-linux-gnueabihf")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
|
||||
# Support for aarch64 cross compilation
|
||||
if (ANDROID_ARCH_NAME STREQUAL "arm64")
|
||||
if(ANDROID_ARCH_NAME STREQUAL "arm64")
|
||||
set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-linux-androideabi")
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "QNX")
|
||||
set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-qnx")
|
||||
else()
|
||||
set(CUDA_TOOLKIT_TARGET_NAMES "aarch64-linux" "sbsa-linux")
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(CUDA_TOOLKIT_TARGET_NAMES "x86_64-linux")
|
||||
endif()
|
||||
|
||||
foreach(CUDA_TOOLKIT_TARGET_NAME IN LISTS CUDA_TOOLKIT_TARGET_NAMES)
|
||||
|
@ -939,6 +939,7 @@ endif()
|
||||
|
||||
# Find target directory when crosscompiling.
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
# 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")
|
||||
|
Loading…
Reference in New Issue
Block a user