[arrayfire] 47/79: Fix cuda linking.
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Mon Jun 15 13:38:06 UTC 2015
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to branch master
in repository arrayfire.
commit d3d5af231bb4e498beada1c2e7bb7ac4d58668cd
Author: Umar Arshad <umar at arrayfire.com>
Date: Tue Jun 9 20:39:30 2015 -0400
Fix cuda linking.
---
src/backend/cpu/CMakeLists.txt | 10 +++----
src/backend/cuda/CMakeLists.txt | 62 +++++++++++++++++++++++++++++++++------
src/backend/opencl/CMakeLists.txt | 16 +++++-----
3 files changed, 66 insertions(+), 22 deletions(-)
diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt
index 6abc0e0..7191576 100644
--- a/src/backend/cpu/CMakeLists.txt
+++ b/src/backend/cpu/CMakeLists.txt
@@ -114,16 +114,16 @@ ADD_LIBRARY(afcpu SHARED
${c_sources}
${cpp_sources})
-TARGET_LINK_LIBRARIES(afcpu LINK_PRIVATE ${FreeImage_LIBS}
- LINK_PRIVATE ${CBLAS_LIBRARIES}
- LINK_PRIVATE ${FFTW_LIBRARIES})
+TARGET_LINK_LIBRARIES(afcpu PRIVATE ${FreeImage_LIBS}
+ PRIVATE ${CBLAS_LIBRARIES}
+ PRIVATE ${FFTW_LIBRARIES})
IF(LAPACK_FOUND)
- TARGET_LINK_LIBRARIES(afcpu LINK_PRIVATE ${LAPACK_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afcpu PRIVATE ${LAPACK_LIBRARIES})
ENDIF()
IF(FORGE_FOUND)
- TARGET_LINK_LIBRARIES(afcpu LINK_PRIVATE ${FORGE_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afcpu PRIVATE ${FORGE_LIBRARIES})
ENDIF()
SET_TARGET_PROPERTIES(afcpu PROPERTIES
diff --git a/src/backend/cuda/CMakeLists.txt b/src/backend/cuda/CMakeLists.txt
index 373b1b1..912cc08 100644
--- a/src/backend/cuda/CMakeLists.txt
+++ b/src/backend/cuda/CMakeLists.txt
@@ -207,7 +207,51 @@ IF("${APPLE}")
ENDIF()
ENDIF()
-CUDA_ADD_LIBRARY(afcuda SHARED
+## Copied from FindCUDA.cmake
+## The target_link_library needs to link with the cuda libraries using
+## PRIVATE
+macro(MY_CUDA_ADD_LIBRARY cuda_target)
+
+ CUDA_ADD_CUDA_INCLUDE_ONCE()
+
+ # Separate the sources from the options
+ CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
+ CUDA_BUILD_SHARED_LIBRARY(_cuda_shared_flag ${ARGN})
+ # Create custom commands and targets for each file.
+ CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources}
+ ${_cmake_options} ${_cuda_shared_flag}
+ OPTIONS ${_options} )
+
+ # Compute the file name of the intermedate link file used for separable
+ # compilation.
+ CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME(link_file ${cuda_target} "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+ # Add the library.
+ add_library(${cuda_target} ${_cmake_options}
+ ${_generated_files}
+ ${_sources}
+ ${link_file}
+ )
+
+ # Add a link phase for the separable compilation if it has been enabled. If
+ # it has been enabled then the ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS
+ # variable will have been defined.
+ CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS("${link_file}" ${cuda_target} "${_options}" "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+ target_link_libraries(${cuda_target}
+ PRIVATE ${CUDA_LIBRARIES}
+ )
+
+ # We need to set the linker language based on what the expected generated file
+ # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP.
+ set_target_properties(${cuda_target}
+ PROPERTIES
+ LINKER_LANGUAGE ${CUDA_C_OR_CXX}
+ )
+
+endmacro()
+
+MY_CUDA_ADD_LIBRARY(afcuda SHARED
${cuda_headers}
${cuda_sources}
${jit_sources}
@@ -221,16 +265,16 @@ CUDA_ADD_LIBRARY(afcuda SHARED
ADD_DEPENDENCIES(afcuda ${ptx_targets})
-TARGET_LINK_LIBRARIES(afcuda LINK_PRIVATE ${CUDA_CUBLAS_LIBRARIES}
- LINK_PRIVATE ${CUDA_LIBRARIES}
- LINK_PRIVATE ${CUDA_cusolver_LIBRARY}
- LINK_PRIVATE ${FreeImage_LIBS}
- LINK_PRIVATE ${CUDA_CUFFT_LIBRARIES}
- LINK_PRIVATE ${CUDA_NVVM_LIBRARIES}
- LINK_PRIVATE ${CUDA_CUDA_LIBRARY})
+TARGET_LINK_LIBRARIES(afcuda PRIVATE ${CUDA_CUBLAS_LIBRARIES}
+ PRIVATE ${CUDA_LIBRARIES}
+ PRIVATE ${CUDA_cusolver_LIBRARY}
+ PRIVATE ${FreeImage_LIBS}
+ PRIVATE ${CUDA_CUFFT_LIBRARIES}
+ PRIVATE ${CUDA_NVVM_LIBRARIES}
+ PRIVATE ${CUDA_CUDA_LIBRARY})
IF(FORGE_FOUND)
- TARGET_LINK_LIBRARIES(afcuda LINK_PRIVATE ${FORGE_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afcuda PRIVATE ${FORGE_LIBRARIES})
ENDIF()
SET_TARGET_PROPERTIES(afcuda PROPERTIES
diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
index 14bb183..c832533 100644
--- a/src/backend/opencl/CMakeLists.txt
+++ b/src/backend/opencl/CMakeLists.txt
@@ -191,15 +191,15 @@ ADD_LIBRARY(afopencl SHARED
ADD_DEPENDENCIES(afopencl ${cl_kernel_targets})
-TARGET_LINK_LIBRARIES(afopencl LINK_PRIVATE ${OpenCL_LIBRARIES}
- LINK_PRIVATE ${FreeImage_LIBS}
- LINK_PRIVATE ${CLBLAS_LIBRARIES}
- LINK_PRIVATE ${CLFFT_LIBRARIES}
- LINK_PRIVATE ${CMAKE_DL_LIBS}
- LINK_PRIVATE ${Boost_LIBRARIES})
+TARGET_LINK_LIBRARIES(afopencl PRIVATE ${OpenCL_LIBRARIES}
+ PRIVATE ${FreeImage_LIBS}
+ PRIVATE ${CLBLAS_LIBRARIES}
+ PRIVATE ${CLFFT_LIBRARIES}
+ PRIVATE ${CMAKE_DL_LIBS}
+ PRIVATE ${Boost_LIBRARIES})
IF(LAPACK_FOUND)
- TARGET_LINK_LIBRARIES(afopencl LINK_PRIVATE ${LAPACK_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afopencl PRIVATE ${LAPACK_LIBRARIES})
ENDIF()
SET_TARGET_PROPERTIES(afopencl PROPERTIES
@@ -207,7 +207,7 @@ SET_TARGET_PROPERTIES(afopencl PROPERTIES
SOVERSION "${AF_VERSION_MAJOR}")
IF(FORGE_FOUND)
- TARGET_LINK_LIBRARIES(afopencl LINK_PRIVATE ${FORGE_LIBRARIES})
+ TARGET_LINK_LIBRARIES(afopencl PRIVATE ${FORGE_LIBRARIES})
ENDIF()
IF(INSTALLER_MODE)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git
More information about the debian-science-commits
mailing list