[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