@ -530,13 +530,15 @@ endmacro()
# C h e c k t o s e e i f t h e C U D A _ T O O L K I T _ R O O T _ D I R a n d C U D A _ S D K _ R O O T _ D I R h a v e c h a n g e d ,
# i f t h e y h a v e t h e n c l e a r t h e c a c h e v a r i a b l e s , s o t h a t w i l l b e d e t e c t e d a g a i n .
if ( NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}" )
unset ( CUDA_TARGET_TRIPLET CACHE )
unset ( CUDA_TOOLKIT_TARGET_DIR CACHE )
unset ( CUDA_NVCC_EXECUTABLE CACHE )
unset ( CUDA_VERSION CACHE )
cuda_unset_include_and_libraries ( )
endif ( )
if ( NOT "${CUDA_TOOLKIT_TARGET_DIR}" STREQUAL "${CUDA_TOOLKIT_TARGET_DIR_INTERNAL}" )
if ( NOT "${CUDA_TARGET_TRIPLET}" STREQUAL "${CUDA_TARGET_TRIPLET_INTERNAL}" OR
N O T " $ { C U D A _ T O O L K I T _ T A R G E T _ D I R } " S T R E Q U A L " $ { C U D A _ T O O L K I T _ T A R G E T _ D I R _ I N T E R N A L } " )
cuda_unset_include_and_libraries ( )
endif ( )
@ -612,23 +614,46 @@ endif()
# A l w a y s s e t t h i s c o n v e n i e n c e v a r i a b l e
set ( CUDA_VERSION_STRING "${CUDA_VERSION}" )
# S u p p o r t f o r a r m c r o s s c o m p i l a t i o n w i t h C U D A 5 . 5
if ( CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND ${ CMAKE_SYSTEM_PROCESSOR } MATCHES "arm" AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf" )
set ( CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf" CACHE PATH "Toolkit target location." )
else ( )
set ( CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}" CACHE PATH "Toolkit target location." )
endif ( )
mark_as_advanced ( CUDA_TOOLKIT_TARGET_DIR )
# T a r g e t C P U a r c h i t e c t u r e
if ( CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND ${ CMAKE_SYSTEM_PROCESSOR } MATCHES "arm" )
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" )
else ( )
set ( _cuda_target_cpu_arch_initial "" )
endif ( )
set ( CUDA_TARGET_CPU_ARCH ${ _cuda_target_cpu_arch_initial } CACHE STRING "Specify the name of the class of CPU architecture for which the input files must be compiled." )
set ( CUDA_TARGET_CPU_ARCH "${_cuda_target_cpu_arch_initial}" CACHE STRING "Specify the name of the class of CPU architecture for which the input files must be compiled." )
mark_as_advanced ( CUDA_TARGET_CPU_ARCH )
# T a r g e t O S v a r i a n t
if ( DEFINED CUDA_TARGET_OS_VARIANT )
set ( _cuda_target_os_variant_initial "${CUDA_TARGET_OS_VARIANT}" )
else ( )
set ( _cuda_target_os_variant_initial "" )
endif ( )
set ( CUDA_TARGET_OS_VARIANT "${_cuda_target_os_variant_initial}" CACHE STRING "Specify the name of the class of OS for which the input files must be compiled." )
mark_as_advanced ( CUDA_TARGET_OS_VARIANT )
# T a r g e t t r i p l e t
if ( DEFINED CUDA_TARGET_TRIPLET )
set ( _cuda_target_triplet_initial "${CUDA_TARGET_TRIPLET}" )
elseif ( CUDA_VERSION VERSION_GREATER "5.0" AND CMAKE_CROSSCOMPILING AND "${CUDA_TARGET_CPU_ARCH}" STREQUAL "ARM" )
if ( "${CUDA_TARGET_OS_VARIANT}" STREQUAL "Android" AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-androideabi" )
set ( _cuda_target_triplet_initial "armv7-linux-androideabi" )
elseif ( EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf" )
set ( _cuda_target_triplet_initial "armv7-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/*" )
set_property ( CACHE CUDA_TARGET_TRIPLET PROPERTY STRINGS ${ __cuda_available_target_tiplets } )
mark_as_advanced ( CUDA_TARGET_TRIPLET )
# T a r g e t d i r e c t o r y
if ( NOT DEFINED CUDA_TOOLKIT_TARGET_DIR AND CUDA_TARGET_TRIPLET AND EXISTS "${CUDA_TOOLKIT_ROOT_DIR}/targets/${CUDA_TARGET_TRIPLET}" )
set ( CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}/targets/${CUDA_TARGET_TRIPLET}" )
endif ( )
# C U D A _ T O O L K I T _ I N C L U D E
find_path ( CUDA_TOOLKIT_INCLUDE
d e v i c e _ f u n c t i o n s . h # H e a d e r i n c l u d e d i n t o o l k i t
@ -652,10 +677,16 @@ macro(cuda_find_library_local_first_with_path_ext _var _names _doc _path_ext )
# a n d o l d p a t h s .
set ( _cuda_64bit_lib_dir "${_path_ext}lib/x64" "${_path_ext}lib64" "${_path_ext}libx64" )
endif ( )
if ( CUDA_VERSION VERSION_GREATER "6.0" )
set ( _cuda_static_lib_names "" )
foreach ( name ${ _names } )
list ( APPEND _cuda_static_lib_names "${name}_static" )
endforeach ( )
endif ( )
# C U D A 3 . 2 + o n W i n d o w s m o v e d t h e l i b r a r y d i r e c t o r i e s , s o w e n e e d t o n e w
# ( l i b / W i n 3 2 ) a n d t h e o l d path ( lib ) .
find_library ( ${ _var }
N A M E S $ { _ n a m e s }
N A M E S $ { _ n a m e s } $ { _ c u d a _ s t a t i c _ l i b _ n a m e s }
P A T H S " $ { C U D A _ T O O L K I T _ T A R G E T _ D I R } " " $ { C U D A _ T O O L K I T _ R O O T _ D I R } "
E N V C U D A _ P A T H
E N V C U D A _ L I B _ P A T H
@ -665,7 +696,7 @@ macro(cuda_find_library_local_first_with_path_ext _var _names _doc _path_ext )
)
# S e a r c h d e f a u l t s e a r c h p a t h s , a f t e r w e s e a r c h o u r o w n s e t o f p a t h s .
find_library ( ${ _var }
N A M E S $ { _ n a m e s }
N A M E S $ { _ n a m e s } $ { _ c u d a _ s t a t i c _ l i b _ n a m e s }
P A T H S " / u s r / l i b / n v i d i a - c u r r e n t "
D O C $ { _ d o c }
)
@ -835,6 +866,8 @@ set(CUDA_FOUND TRUE)
set ( CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE INTERNAL
" T h i s i s t h e v a l u e o f t h e l a s t t i m e C U D A _ T O O L K I T _ R O O T _ D I R w a s s e t s u c c e s s f u l l y . " F O R C E )
set ( CUDA_TARGET_TRIPLET_INTERNAL "${CUDA_TARGET_TRIPLET}" CACHE INTERNAL
" T h i s i s t h e v a l u e o f t h e l a s t t i m e C U D A _ T A R G E T _ T R I P L E T w a s s e t s u c c e s s f u l l y . " F O R C E )
set ( CUDA_TOOLKIT_TARGET_DIR_INTERNAL "${CUDA_TOOLKIT_TARGET_DIR}" CACHE INTERNAL
" T h i s i s t h e v a l u e o f t h e l a s t t i m e C U D A _ T O O L K I T _ T A R G E T _ D I R w a s s e t s u c c e s s f u l l y . " F O R C E )
set ( CUDA_SDK_ROOT_DIR_INTERNAL "${CUDA_SDK_ROOT_DIR}" CACHE INTERNAL
@ -1065,6 +1098,10 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
set ( nvcc_flags ${ nvcc_flags } "--target-cpu-architecture=${CUDA_TARGET_CPU_ARCH}" )
endif ( )
if ( CUDA_TARGET_OS_VARIANT )
set ( nvcc_flags ${ nvcc_flags } "-target-os-variant=${CUDA_TARGET_OS_VARIANT}" )
endif ( )
# T h i s n e e d s t o b e p a s s e d i n a t t h i s s t a g e , b e c a u s e V S n e e d s t o f i l l o u t t h e
# v a l u e o f V C I n s t a l l D i r f r o m w i t h i n V S . N o t e t h a t C C B I N i s o n l y u s e d i f
# - c c b i n o r - - c o m p i l e r - b i n d i r i s n ' t u s e d a n d C U D A _ H O S T _ C O M P I L E R m a t c h e s