From 847976de4e7d68dcc3f3d9da8a93d0c81c1f3c18 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Thu, 23 Apr 2015 14:29:37 +0300 Subject: [PATCH] fixed find cuda for aarch64 --- cmake/FindCUDA.cmake | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cmake/FindCUDA.cmake b/cmake/FindCUDA.cmake index ceaed5e..5efd36c 100644 --- a/cmake/FindCUDA.cmake +++ b/cmake/FindCUDA.cmake @@ -619,6 +619,8 @@ if(DEFINED CUDA_TARGET_CPU_ARCH) set(_cuda_target_cpu_arch_initial "${CUDA_TARGET_CPU_ARCH}") elseif(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM)") set(_cuda_target_cpu_arch_initial "ARM") +elseif(CUDA_VERSION VERSION_GREATER "6.5" AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|AARCH64)") + set(_cuda_target_cpu_arch_initial "AARCH64") else() set(_cuda_target_cpu_arch_initial "") endif() @@ -643,6 +645,12 @@ elseif(CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND "${CUDA_T elseif(EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf") set(_cuda_target_triplet_initial "armv7-linux-gnueabihf") endif() +elseif(CUDA_VERSION VERSION_GREATER "6.5" AND CMAKE_CROSSCOMPILING AND "${CUDA_TARGET_CPU_ARCH}" STREQUAL "AARCH64") + if("${CUDA_TARGET_OS_VARIANT}" STREQUAL "Android" AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/aarch64-linux-androideabi") + set(_cuda_target_triplet_initial "aarch64-linux-androideabi") + elseif(EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/aarch64-linux-gnueabihf") + set(_cuda_target_triplet_initial "aarch64-linux-gnueabihf") + endif() endif() set(CUDA_TARGET_TRIPLET "${_cuda_target_triplet_initial}" CACHE STRING "Specify the target triplet for which the input files must be compiled.") file(GLOB __cuda_available_target_tiplets RELATIVE "${CUDA_TOOLKIT_ROOT_DIR}/targets" "${CUDA_TOOLKIT_ROOT_DIR}/targets/*" ) @@ -1094,8 +1102,10 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files) set(nvcc_flags ${nvcc_flags} -m32) endif() - if(CUDA_TARGET_CPU_ARCH) - set(nvcc_flags ${nvcc_flags} "--target-cpu-architecture=${CUDA_TARGET_CPU_ARCH}") + if(CUDA_TARGET_CPU_ARCH AND CUDA_VERSION VERSION_LESS "7.0") + # CPU architecture is either ARM or X86. Patch AARCH64 to be ARM + string(REPLACE "AARCH64" "ARM" CUDA_TARGET_CPU_ARCH_patched ${CUDA_TARGET_CPU_ARCH}) + set(nvcc_flags ${nvcc_flags} "--target-cpu-architecture=${CUDA_TARGET_CPU_ARCH_patched}") endif() if(CUDA_TARGET_OS_VARIANT AND CUDA_VERSION VERSION_LESS "7.0") -- 2.7.4