CUDA: allow to use external FindCUDA from modern CMake
authorAlexander Alekhin <alexander.alekhin@intel.com>
Wed, 11 Jul 2018 10:47:56 +0000 (13:47 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Thu, 12 Jul 2018 11:33:14 +0000 (14:33 +0300)
CMake 3.9.0+ is required

cmake/OpenCVDetectCUDA.cmake

index 5b9c123..375757f 100644 (file)
@@ -8,14 +8,23 @@ if(NOT APPLE AND CV_CLANG)
   return()
 endif()
 
-set(CMAKE_MODULE_PATH "${OpenCV_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
-if(ANDROID)
-  set(CUDA_TARGET_OS_VARIANT "Android")
-endif()
-find_host_package(CUDA "${MIN_VER_CUDA}" QUIET)
+if(((NOT CMAKE_VERSION VERSION_LESS "3.9.0")  # requires https://gitlab.kitware.com/cmake/cmake/merge_requests/663
+      OR OPENCV_CUDA_FORCE_EXTERNAL_CMAKE_MODULE)
+    AND NOT OPENCV_CUDA_FORCE_BUILTIN_CMAKE_MODULE)
+  ocv_update(CUDA_LINK_LIBRARIES_KEYWORD "LINK_PRIVATE")
+  find_host_package(CUDA "${MIN_VER_CUDA}" QUIET)
+else()
+  # Use OpenCV's patched "FindCUDA" module
+  set(CMAKE_MODULE_PATH "${OpenCV_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
+
+  if(ANDROID)
+    set(CUDA_TARGET_OS_VARIANT "Android")
+  endif()
+  find_host_package(CUDA "${MIN_VER_CUDA}" QUIET)
 
-list(REMOVE_AT CMAKE_MODULE_PATH 0)
+  list(REMOVE_AT CMAKE_MODULE_PATH 0)
+endif()
 
 if(CUDA_FOUND)
   set(HAVE_CUDA 1)