diff options
author | James Bigler <jamesbigler@gmail.com> | 2010-06-21 23:11:57 (GMT) |
---|---|---|
committer | James Bigler <jamesbigler@gmail.com> | 2010-06-21 23:11:57 (GMT) |
commit | bb6acb8667c98bfa4210da84678fdcb2df42a433 (patch) | |
tree | eb6d6d81594a7c8fa55566a6fb08d2b4e32090e6 | |
parent | e45a600a0fae6d8fe0de6bba10e3a6fab5204bb4 (diff) | |
download | CMake-bb6acb8667c98bfa4210da84678fdcb2df42a433.zip CMake-bb6acb8667c98bfa4210da84678fdcb2df42a433.tar.gz CMake-bb6acb8667c98bfa4210da84678fdcb2df42a433.tar.bz2 |
Add support for the emulation version of the cudart library.
In version 3.0 of the CUDA toolkit when building code for emulation, you need to link
against a new version of the cuda run time library called cudartemu. This CL adds a check
for the new library and uses it when present and in emulation mode. Note that this
library is not present in previous or subsequent versions of the CUDA toolkit.
-rw-r--r-- | Modules/FindCUDA.cmake | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 6539057..fc6a42d 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -418,6 +418,10 @@ if(NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}") unset(CUDA_VERSION CACHE) unset(CUDA_TOOLKIT_INCLUDE CACHE) unset(CUDA_CUDART_LIBRARY CACHE) + if(CUDA_VERSION VERSION_EQUAL "3.0") + # This only existed in the 3.0 version of the CUDA toolkit + unset(CUDA_CUDARTEMU_LIBRARY CACHE) + endif() unset(CUDA_CUDA_LIBRARY CACHE) unset(CUDA_cublas_LIBRARY CACHE) unset(CUDA_cublasemu_LIBRARY CACHE) @@ -545,11 +549,28 @@ endmacro() # CUDA_LIBRARIES find_library_local_first(CUDA_CUDART_LIBRARY cudart "\"cudart\" library") -set(CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY}) +if(CUDA_VERSION VERSION_EQUAL "3.0") + # The cudartemu library only existed for the 3.0 version of CUDA. + find_library_local_first(CUDA_CUDARTEMU_LIBRARY cudartemu "\"cudartemu\" library") + mark_as_advanced( + CUDA_CUDARTEMU_LIBRARY + ) +endif() +# If we are using emulation mode and we found the cudartemu library then use +# that one instead of cudart. +if(CUDA_BUILD_EMULATION AND CUDA_CUDARTEMU_LIBRARY) + set(CUDA_LIBRARIES ${CUDA_CUDARTEMU_LIBRARY}) +else() + set(CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY}) +endif() if(APPLE) # We need to add the path to cudart to the linker using rpath, since the # library name for the cuda libraries is prepended with @rpath. - get_filename_component(_cuda_path_to_cudart "${CUDA_CUDART_LIBRARY}" PATH) + if(CUDA_BUILD_EMULATION AND CUDA_CUDARTEMU_LIBRARY) + get_filename_component(_cuda_path_to_cudart "${CUDA_CUDARTEMU_LIBRARY}" PATH) + else() + get_filename_component(_cuda_path_to_cudart "${CUDA_CUDART_LIBRARY}" PATH) + endif() if(_cuda_path_to_cudart) list(APPEND CUDA_LIBRARIES -Wl,-rpath "-Wl,${_cuda_path_to_cudart}") endif() |