Content-Length: 5725 | pFad | http://github.com/opencv/opencv/pull/26966.diff
thub.com
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1739e066bdea..7e0c14b40711 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -244,6 +244,8 @@ OCV_OPTION(WITH_VTK "Include VTK library support (and build opencv_viz module ei
OCV_OPTION(WITH_CUDA "Include NVidia Cuda Runtime support" OFF
VISIBLE_IF NOT IOS AND NOT XROS AND NOT WINRT
VERIFY HAVE_CUDA)
+OCV_OPTION(MATCH_CUDA_MINOR_VERSION "Require match the cuda minor version to link against produced libraries." ON
+ VISIBLE_IF WITH_CUDA)
OCV_OPTION(WITH_CUFFT "Include NVidia Cuda Fast Fourier Transform (FFT) library support" WITH_CUDA
VISIBLE_IF WITH_CUDA
VERIFY HAVE_CUFFT)
diff --git a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake
index c5fb628c4497..1d6817fdad95 100644
--- a/cmake/OpenCVFindLibsPerf.cmake
+++ b/cmake/OpenCVFindLibsPerf.cmake
@@ -39,6 +39,34 @@ if(WITH_IPP)
endif()
# --- CUDA ---
+# Function to calculate the version range based on match_minor flag
+function(get_version_range version match_minor lower_bound upper_bound)
+ # Split the version into components
+ string(REPLACE "." ";" version_list ${version})
+ list(LENGTH version_list version_length)
+
+ # Extract major and minor components
+ list(GET version_list 0 major)
+ if(version_length GREATER 1)
+ list(GET version_list 1 minor)
+ else()
+ set(minor 0) # Default minor to 0 if not provided
+ endif()
+
+ # Determine the range based on match_minor flag
+ if(match_minor)
+ # Match minor: range is [major.minor, major.)
+ math(EXPR new_minor "${minor} + 1")
+ set(${lower_bound} "${major}.${minor}" PARENT_SCOPE)
+ set(${upper_bound} "${major}.${new_minor}" PARENT_SCOPE)
+ else()
+ # Do not match minor: range is [major, )
+ math(EXPR new_major "${major} + 1")
+ set(${lower_bound} "${major}" PARENT_SCOPE)
+ set(${upper_bound} "${new_major}" PARENT_SCOPE)
+ endif()
+endfunction()
+
if(WITH_CUDA)
if(ENABLE_CUDA_FIRST_CLASS_LANGUAGE)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDALanguage.cmake")
@@ -51,6 +79,7 @@ CUDA support will be disabled in OpenCV build.
To eliminate this warning remove WITH_CUDA=ON CMake configuration option.
")
endif()
+ get_version_range(${CUDA_VERSION_STRING} ${MATCH_CUDA_MINOR_VERSION} CUDA_VERSION_MIN CUDA_VERSION_MAX)
endif(WITH_CUDA)
# --- Eigen ---
diff --git a/cmake/templates/OpenCVConfig-CUDA.cmake.in b/cmake/templates/OpenCVConfig-CUDA.cmake.in
index 25a20556ec4a..9d136b3e936b 100644
--- a/cmake/templates/OpenCVConfig-CUDA.cmake.in
+++ b/cmake/templates/OpenCVConfig-CUDA.cmake.in
@@ -2,6 +2,8 @@
set(OpenCV_COMPUTE_CAPABILITIES "@OpenCV_CUDA_CC@")
set(OpenCV_CUDA_VERSION "@CUDA_VERSION_STRING@")
+set(OpenCV_CUDA_VERSION_MIN "@CUDA_VERSION_MIN@")
+set(OpenCV_CUDA_VERSION_MAX "@CUDA_VERSION_MAX@")
set(OpenCV_USE_CUBLAS "@HAVE_CUBLAS@")
set(OpenCV_USE_CUFFT "@HAVE_CUFFT@")
set(OpenCV_USE_NVCUVID "@HAVE_NVCUVID@")
@@ -10,10 +12,10 @@ set(OpenCV_CUDNN_VERSION "@CUDNN_VERSION@")
set(OpenCV_USE_CUDNN "@HAVE_CUDNN@")
if(NOT CUDA_FOUND)
- find_host_package(CUDA ${OpenCV_CUDA_VERSION} EXACT REQUIRED)
+ find_host_package(CUDA ${OpenCV_CUDA_VERSION_MIN} EXACT REQUIRED)
else()
- if(NOT CUDA_VERSION_STRING VERSION_EQUAL OpenCV_CUDA_VERSION)
- message(FATAL_ERROR "OpenCV static library was compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the same version or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
+ if(CUDA_VERSION_STRING VERSION_GREATER_EQUAL OpenCV_CUDA_VERSION_MAX OR CUDA_VERSION_STRING VERSION_LESS OpenCV_CUDA_VERSION_MIN)
+ message(FATAL_ERROR "OpenCV static library was compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the version >=${OpenCV_CUDA_VERSION_MIN} <{OpenCV_CUDA_VERSION_MAX} or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
endif()
endif()
diff --git a/cmake/templates/OpenCVConfig-CUDALanguage.cmake.in b/cmake/templates/OpenCVConfig-CUDALanguage.cmake.in
index 259141006ae2..4294f8ccda86 100644
--- a/cmake/templates/OpenCVConfig-CUDALanguage.cmake.in
+++ b/cmake/templates/OpenCVConfig-CUDALanguage.cmake.in
@@ -2,6 +2,8 @@
set(OpenCV_COMPUTE_CAPABILITIES "@OpenCV_CUDA_CC@")
set(OpenCV_CUDA_VERSION "@CUDA_VERSION_STRING@")
+set(OpenCV_CUDA_VERSION_MIN "@CUDA_VERSION_MIN@")
+set(OpenCV_CUDA_VERSION_MAX "@CUDA_VERSION_MAX@")
set(OpenCV_USE_CUBLAS "@HAVE_CUBLAS@")
set(OpenCV_USE_CUFFT "@HAVE_CUFFT@")
set(OpenCV_USE_NVCUVID "@HAVE_NVCUVID@")
@@ -17,7 +19,7 @@ if(NOT CUDAToolkit_FOUND)
set(CUDA_PATH "/usr/local/cuda" CACHE INTERNAL "")
set(ENV{CUDA_PATH} ${CUDA_PATH})
endif()
- find_package(CUDAToolkit ${OpenCV_CUDA_VERSION} EXACT REQUIRED)
+ find_package(CUDAToolkit ${OpenCV_CUDA_VERSION_MIN} EXACT REQUIRED)
else()
message(FATAL_ERROR "Using OpenCV compiled with CUDA as first class language requires CMake \>= 3.18.")
endif()
@@ -25,7 +27,7 @@ else()
if(CUDAToolkit_FOUND)
set(CUDA_VERSION_STRING ${CUDAToolkit_VERSION})
endif()
- if(NOT CUDA_VERSION_STRING VERSION_EQUAL OpenCV_CUDA_VERSION)
- message(FATAL_ERROR "OpenCV library was compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the same version or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
+ if(CUDA_VERSION_STRING VERSION_GREATER_EQUAL OpenCV_CUDA_VERSION_MAX OR CUDA_VERSION_STRING VERSION_LESS OpenCV_CUDA_VERSION_MIN)
+ message(FATAL_ERROR "OpenCV library was compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the version >=${OpenCV_CUDA_VERSION_MIN} <{OpenCV_CUDA_VERSION_MAX} or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
endif()
endif()
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/opencv/opencv/pull/26966.diff
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy