diff --git a/ports/opencv4/0002-install-options.patch b/ports/opencv4/0002-install-options.patch index 7e6d585599805b..00f49d7050d9e6 100644 --- a/ports/opencv4/0002-install-options.patch +++ b/ports/opencv4/0002-install-options.patch @@ -1,3 +1,5 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 150a018..36d3019 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -638,7 +638,7 @@ set(OPENCV_EXTRA_MODULES_PATH "" CACHE PATH "Where to look for additional OpenCV @@ -9,7 +11,7 @@ include(cmake/OpenCVDetectPython.cmake) endif() -@@ -730,6 +730,7 @@ endif() +@@ -701,6 +701,7 @@ endif() # ---------------------------------------------------------------------------- # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC.. # ---------------------------------------------------------------------------- @@ -17,6 +19,8 @@ if(UNIX OR MINGW) if(NOT APPLE_FRAMEWORK OR OPENCV_ENABLE_PKG_CONFIG) if(CMAKE_CROSSCOMPILING AND NOT DEFINED ENV{PKG_CONFIG_LIBDIR} AND NOT DEFINED ENV{PKG_CONFIG_SYSROOT_DIR} +diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake +index 512e6d1..fd02b6b 100644 --- a/cmake/OpenCVCompilerOptions.cmake +++ b/cmake/OpenCVCompilerOptions.cmake @@ -306,7 +306,6 @@ if(MSVC) @@ -27,9 +31,11 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug") set(OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE} /debug") set(OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE} /debug") +diff --git a/cmake/OpenCVGenConfig.cmake b/cmake/OpenCVGenConfig.cmake +index c5b7ab1..399b47e 100644 --- a/cmake/OpenCVGenConfig.cmake +++ b/cmake/OpenCVGenConfig.cmake -@@ -118,18 +118,18 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME) +@@ -131,18 +131,18 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME) endif() endfunction() @@ -51,6 +57,8 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows AND NOT OPENCV_SKIP_CMAKE_ROOT_CONFIG) ocv_gen_config("${CMAKE_BINARY_DIR}/win-install" "${OPENCV_INSTALL_BINARIES_PREFIX}${OPENCV_INSTALL_BINARIES_SUFFIX}" +diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt +index 1f0d720..0bb1ff7 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,8 +1,6 @@ diff --git a/ports/opencv4/0003-force-package-requirements.patch b/ports/opencv4/0003-force-package-requirements.patch index 12c55a425254d7..cc546840c57567 100644 --- a/ports/opencv4/0003-force-package-requirements.patch +++ b/ports/opencv4/0003-force-package-requirements.patch @@ -1,3 +1,5 @@ +diff --git a/cmake/OpenCVFindLibsGrfmt.cmake b/cmake/OpenCVFindLibsGrfmt.cmake +index 8c7bc93..88a1db9 100644 --- a/cmake/OpenCVFindLibsGrfmt.cmake +++ b/cmake/OpenCVFindLibsGrfmt.cmake @@ -16,6 +16,7 @@ if(WITH_ZLIB_NG) @@ -92,7 +94,7 @@ set(SPNG_LIBRARIES ${SPNG_LIBRARY}) else() if(PkgConfig_FOUND) -@@ -331,7 +332,7 @@ if(NOT HAVE_SPNG AND WITH_PNG) +@@ -334,7 +335,7 @@ if(NOT HAVE_SPNG AND WITH_PNG) ocv_clear_vars(PNG_FOUND) else() ocv_clear_internal_cache_vars(PNG_LIBRARY PNG_INCLUDE_DIR) @@ -101,7 +103,7 @@ endif() if(NOT PNG_FOUND) -@@ -354,7 +355,8 @@ if(WITH_OPENEXR) +@@ -357,7 +358,8 @@ if(WITH_OPENEXR) ocv_clear_vars(HAVE_OPENEXR) if(NOT BUILD_OPENEXR) ocv_clear_internal_cache_vars(OPENEXR_INCLUDE_PATHS OPENEXR_LIBRARIES OPENEXR_ILMIMF_LIBRARY OPENEXR_VERSION) @@ -111,7 +113,7 @@ endif() if(OPENEXR_FOUND) -@@ -374,7 +376,7 @@ endif() +@@ -377,7 +379,7 @@ endif() # --- GDAL (optional) --- if(WITH_GDAL) @@ -120,7 +122,7 @@ if(NOT GDAL_FOUND) set(HAVE_GDAL NO) -@@ -386,7 +388,7 @@ if(WITH_GDAL) +@@ -389,7 +391,7 @@ if(WITH_GDAL) endif() if(WITH_GDCM) @@ -129,9 +131,11 @@ if(NOT GDCM_FOUND) set(HAVE_GDCM NO) ocv_clear_vars(GDCM_VERSION GDCM_LIBRARIES) +diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt +index c322645..1d5ea0d 100644 --- a/modules/imgcodecs/CMakeLists.txt +++ b/modules/imgcodecs/CMakeLists.txt -@@ -30,7 +30,7 @@ endif() +@@ -25,7 +25,7 @@ endif() if(HAVE_WEBP) add_definitions(-DHAVE_WEBP) diff --git a/ports/opencv4/0007-contrib-fix-hdf5.patch b/ports/opencv4/0007-contrib-fix-hdf5.patch index 6b4a033035dbc5..4ef5f669135645 100644 --- a/ports/opencv4/0007-contrib-fix-hdf5.patch +++ b/ports/opencv4/0007-contrib-fix-hdf5.patch @@ -1,3 +1,5 @@ +diff --git a/modules/hdf/CMakeLists.txt b/modules/hdf/CMakeLists.txt +index 2a1ae68..e302cf7 100644 --- a/modules/hdf/CMakeLists.txt +++ b/modules/hdf/CMakeLists.txt @@ -1,25 +1,7 @@ @@ -21,9 +23,9 @@ -else() - if(NOT CMAKE_CROSSCOMPILING) # iOS build should not reuse OSX package find_package(HDF5) -+ set(HDF5_INCLUDE_DIRS "${HDF5_INCLUDE_DIR}") - endif() -endif() ++ set(HDF5_INCLUDE_DIRS "${HDF5_INCLUDE_DIR}") if(NOT HDF5_FOUND) ocv_module_disable(hdf) # no return diff --git a/ports/opencv4/0022-android-use-vcpkg-cpu-features.patch b/ports/opencv4/0022-android-use-vcpkg-cpu-features.patch index 2b1faa299e6817..75949bcf24a6ac 100644 --- a/ports/opencv4/0022-android-use-vcpkg-cpu-features.patch +++ b/ports/opencv4/0022-android-use-vcpkg-cpu-features.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 79a0c96270..e6b1aefb9b 100644 +index 2dc1aaa..04332e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -789,7 +789,9 @@ endif() +@@ -805,7 +805,9 @@ endif() # ---------------------------------------------------------------------------- if(ANDROID AND WITH_CPUFEATURES) diff --git a/ports/opencv4/0026-cuda-msvc-preprocessor.patch b/ports/opencv4/0026-cuda-msvc-preprocessor.patch new file mode 100644 index 00000000000000..9834d2ae8e711c --- /dev/null +++ b/ports/opencv4/0026-cuda-msvc-preprocessor.patch @@ -0,0 +1,14 @@ +diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake +index 5886f4f..5f294b5 100644 +--- a/cmake/OpenCVUtils.cmake ++++ b/cmake/OpenCVUtils.cmake +@@ -1566,6 +1566,9 @@ macro(ocv_add_cuda_compile_flags) + target_compile_options(${target} PRIVATE $<$: ${CUDA_NVCC_FLAGS} + "-Xcompiler=${CMAKE_CXX_FLAGS_CUDA} $<$:${CMAKE_CXX_FLAGS_DEBUG_CUDA}> \ + $<$:${CMAKE_CXX_FLAGS_RELEASE_CUDA}>" >) ++ if(MSVC) ++ target_compile_options(${target} PRIVATE $<$:-Xcompiler=/Zc:preprocessor>) ++ endif() + endmacro() + + function(ocv_add_executable target) diff --git a/ports/opencv4/portfile.cmake b/ports/opencv4/portfile.cmake index 8d205a66fed44b..e4be1a89ba6b1f 100644 --- a/ports/opencv4/portfile.cmake +++ b/ports/opencv4/portfile.cmake @@ -3,9 +3,16 @@ set(USE_QT_VERSION "6") # fix to get version from eigen after v3.4.0 vcpkg_download_distfile( PATCH1_FILE - URLS https://github.com/opencv/opencv/commit/468de9b36740b3355f0d5cd8be2ce28b340df120.patch?full_index=1 + URLS "https://github.com/opencv/opencv/commit/468de9b36740b3355f0d5cd8be2ce28b340df120.patch?full_index=1" SHA512 09ee552fcd9a96359230104d7bf8610a63e05d743a3b51d58c6469331729a6440444e05c616464380dbebaefdd7ee6fb06cac5fc70694af85f9c8d40201aad10 - FILENAME 468de9b36740b3355f0d5cd8be2ce28b340df120.patch + FILENAME "468de9b36740b3355f0d5cd8be2ce28b340df120.patch" +) + +vcpkg_download_distfile( + CUDA_13_SUPPORT_PATCH + URLS "https://github.com/opencv/opencv/commit/f0888a10e8266b2202d930c6974433a421e6f9a7.diff?full_index=1" + SHA512 6efbc9f7e4ad158e648632060bac6ecb542239f1f656774378e6a2beaa42f094784c3b2755b44d599fe4eed69dd9f1f461e0be1ebcd57f9ebc261ead739ed7d5 + FILENAME "opencv4-support-cuda-13-f0888a10e8266b2202d930c6974433a421e6f9a7.diff" ) vcpkg_from_github( @@ -32,8 +39,11 @@ vcpkg_from_github( 0023-ffmpeg8-support.patch 0024-openvino-const-tensor-data.patch 0025-fix-cuda-host-std-flag-forwarding.patch + 0026-cuda-msvc-preprocessor.patch "${PATCH1_FILE}" + "${CUDA_13_SUPPORT_PATCH}" ) + # Disallow accidental build of vendored copies file(GLOB third_party "${SOURCE_PATH}/3rdparty/*") list(FILTER third_party EXCLUDE REGEX "/ippicv\$") @@ -198,6 +208,18 @@ if(VCPKG_TARGET_IS_ANDROID AND (VCPKG_TARGET_ARCHITECTURE MATCHES "^arm")) endif() if("contrib" IN_LIST FEATURES) + vcpkg_download_distfile(CONTRIB_CUDA_NAMESPACE_FIX + URLS "https://github.com/opencv/opencv_contrib/commit/f2854f4f5e7b67d4e073ea002ae0174d437e2962.diff?full_index=1" + FILENAME "opencv4-contrib-cuda13-namespace-fix-f2854f4f5e7b67d4e073ea002ae0174d437e2962.diff" + SHA512 1065406fef35ffdfa4d27e991cd96df915e61b1ff4d17df391658a5eb069755b437a6546aaf05eac7b04b616882eb52b121ebe36c7f0af63e3040bda574ca3ed + ) + + vcpkg_download_distfile(CONTRIB_CUDA_NOT1_FIX + URLS "https://github.com/opencv/opencv_contrib/commit/f49f0aef3c8d654c5dc2cf00884ca4f1baf43547.diff?full_index=1" + FILENAME "opencv4-contrib-cuda13-not1-fix-f49f0aef3c8d654c5dc2cf00884ca4f1baf43547.diff" + SHA512 b1e46be570417a26aec4b2a6e1824008f92c404fb67f307218fdf386074b51ca3ea063516517449631a8dd2ca487b0736c1978a3a5e38f88686c25802af4f300 + ) + vcpkg_from_github( OUT_SOURCE_PATH CONTRIB_SOURCE_PATH REPO opencv/opencv_contrib @@ -209,6 +231,8 @@ if("contrib" IN_LIST FEATURES) 0013-contrib-fix-ogre.patch 0016-contrib-fix-freetype.patch 0018-contrib-fix-tesseract.patch + "${CONTRIB_CUDA_NAMESPACE_FIX}" + "${CONTRIB_CUDA_NOT1_FIX}" ) set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules") diff --git a/ports/opencv4/vcpkg.json b/ports/opencv4/vcpkg.json index 5559fe7722fda3..002d966269dd5f 100644 --- a/ports/opencv4/vcpkg.json +++ b/ports/opencv4/vcpkg.json @@ -1,7 +1,7 @@ { "name": "opencv4", "version": "4.12.0", - "port-version": 2, + "port-version": 3, "description": "Open Source Computer Vision Library", "homepage": "https://opencv.org/", "documentation": "https://docs.opencv.org/4.12.0/", diff --git a/versions/baseline.json b/versions/baseline.json index 256afed97694d5..29ffbe16ff0199 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7310,7 +7310,7 @@ }, "opencv4": { "baseline": "4.12.0", - "port-version": 2 + "port-version": 3 }, "opendnp3": { "baseline": "3.1.2", diff --git a/versions/o-/opencv4.json b/versions/o-/opencv4.json index fcb761b7d59a85..a27dee086aa998 100644 --- a/versions/o-/opencv4.json +++ b/versions/o-/opencv4.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "0022247a58e672802c0a0beed9515b6a5288a244", + "version": "4.12.0", + "port-version": 3 + }, { "git-tree": "f0ebe6eda408a578b47229dc43c24c2bd0d3edc8", "version": "4.12.0",