[libomptarget] Fix detection of CUDA stubs library
authorJonas Hahnfeld <hahnjo@hahnjo.de>
Mon, 12 Feb 2018 11:01:56 +0000 (11:01 +0000)
committerJonas Hahnfeld <hahnjo@hahnjo.de>
Mon, 12 Feb 2018 11:01:56 +0000 (11:01 +0000)
CUDA_LIBRARIES contains additional linker arguments since CMake 3.3
which breakes the current way of finding the stubs library.

llvm-svn: 324879

openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake

index acdaff2..71a6a5e 100644 (file)
@@ -134,7 +134,16 @@ find_library (
 
 # There is a libcuda.so in lib64/stubs that can be used for linking.
 if (NOT LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES AND CUDA_FOUND)
-  get_filename_component(CUDA_LIBDIR ${CUDA_LIBRARIES} DIRECTORY)
+  # Since CMake 3.3 FindCUDA.cmake defaults to using static libraries. In this
+  # case CUDA_LIBRARIES contains additional linker arguments which breaks
+  # get_filename_component below. Fortunately, since that change the module
+  # exports CUDA_cudart_static_LIBRARY which points to a single file in the
+  # right directory.
+  set(cuda_library ${CUDA_LIBRARIES})
+  if (DEFINED CUDA_cudart_static_LIBRARY)
+    set(cuda_library ${CUDA_cudart_static_LIBRARY})
+  endif()
+  get_filename_component(CUDA_LIBDIR ${cuda_library} DIRECTORY)
   find_library (
       LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES
     NAMES