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()








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- 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