diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78aff7c1..e7127008 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,6 +63,7 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-enable-cxx11.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-newer-msvc.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/core/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch @@ -135,6 +136,8 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-zlib.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-emscripten-include.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-newer-msvc.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/imgproc/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch @@ -205,6 +208,7 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-rtti.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-zlib.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/imgproc/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5a3f76d5..a9aae1c3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,6 +59,7 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-enable-cxx11.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-newer-msvc.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/core/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch @@ -131,6 +132,8 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-zlib.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-emscripten-include.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-newer-msvc.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/imgproc/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch @@ -201,6 +204,7 @@ jobs: patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-rtti.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-no-zlib.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-link-openmp.patch + patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-fix-windows-arm-arch.patch patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-minimal-install.patch cp ../patches/draw_text.h ../patches/mono_font_data.h modules/imgproc/src/ patch -p1 -i ../patches/opencv-${{ env.opencv-version }}-drawing-mono-font.patch diff --git a/patches/opencv-2.4.13.7-fix-windows-arm-arch.patch b/patches/opencv-2.4.13.7-fix-windows-arm-arch.patch new file mode 100644 index 00000000..f10ce6f5 --- /dev/null +++ b/patches/opencv-2.4.13.7-fix-windows-arm-arch.patch @@ -0,0 +1,50 @@ +diff -Nuarp opencv-2.4.13.7.orig/cmake/OpenCVConfig.cmake opencv-2.4.13.7/cmake/OpenCVConfig.cmake +--- opencv-2.4.13.7.orig/cmake/OpenCVConfig.cmake 2018-07-02 20:41:56.000000000 +0800 ++++ opencv-2.4.13.7/cmake/OpenCVConfig.cmake 2024-06-10 15:05:13.943493559 +0800 +@@ -64,12 +64,17 @@ endif() + if(DEFINED OpenCV_ARCH AND DEFINED OpenCV_RUNTIME) + # custom overrided values + elseif(MSVC) +- if(CMAKE_CL_64) +- set(OpenCV_ARCH x64) +- set(OpenCV_TBB_ARCH intel64) ++ # see Modules/CMakeGenericSystem.cmake ++ if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") ++ set(OpenCV_ARCH "x64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") ++ set(OpenCV_ARCH "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") ++ set(OpenCV_ARCH "ARM") ++ elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") ++ set(OpenCV_ARCH "x64") + else() + set(OpenCV_ARCH x86) +- set(OpenCV_TBB_ARCH ia32) + endif() + if(MSVC_VERSION EQUAL 1400) + set(OpenCV_RUNTIME vc8) +diff -Nuarp opencv-2.4.13.7.orig/cmake/OpenCVDetectCXXCompiler.cmake opencv-2.4.13.7/cmake/OpenCVDetectCXXCompiler.cmake +--- opencv-2.4.13.7.orig/cmake/OpenCVDetectCXXCompiler.cmake 2018-07-02 20:41:56.000000000 +0800 ++++ opencv-2.4.13.7/cmake/OpenCVDetectCXXCompiler.cmake 2024-06-10 15:05:01.441716441 +0800 +@@ -85,11 +85,19 @@ endif() + if(DEFINED OpenCV_ARCH AND DEFINED OpenCV_RUNTIME) + # custom overrided values + elseif(MSVC) +- if(CMAKE_CL_64) +- set(OpenCV_ARCH x64) ++ # see Modules/CMakeGenericSystem.cmake ++ if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") ++ set(OpenCV_ARCH "x64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") ++ set(OpenCV_ARCH "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") ++ set(OpenCV_ARCH "ARM") ++ elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") ++ set(OpenCV_ARCH "x64") + else() + set(OpenCV_ARCH x86) + endif() ++ + if(MSVC_VERSION EQUAL 1400) + set(OpenCV_RUNTIME vc8) + elseif(MSVC_VERSION EQUAL 1500) diff --git a/patches/opencv-3.4.20-fix-windows-arm-arch.patch b/patches/opencv-3.4.20-fix-windows-arm-arch.patch new file mode 100644 index 00000000..52dfbad9 --- /dev/null +++ b/patches/opencv-3.4.20-fix-windows-arm-arch.patch @@ -0,0 +1,30 @@ +diff -Nuarp opencv-3.4.20.orig/cmake/OpenCVDetectCXXCompiler.cmake opencv-3.4.20/cmake/OpenCVDetectCXXCompiler.cmake +--- opencv-3.4.20.orig/cmake/OpenCVDetectCXXCompiler.cmake 2023-06-27 19:29:13.000000000 +0800 ++++ opencv-3.4.20/cmake/OpenCVDetectCXXCompiler.cmake 2024-06-10 14:54:29.392187073 +0800 +@@ -143,9 +143,9 @@ elseif(MSVC) + # see Modules/CMakeGenericSystem.cmake + if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") + set(OpenCV_ARCH "x64") +- elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") + set(OpenCV_ARCH "ARM64") +- elseif("${CMAKE_GENERATOR}" MATCHES "ARM") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") + set(OpenCV_ARCH "ARM") + elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(OpenCV_ARCH "x64") +diff -Nuarp opencv-3.4.20.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in opencv-3.4.20/cmake/templates/OpenCVConfig.root-WIN32.cmake.in +--- opencv-3.4.20.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2023-06-27 19:29:13.000000000 +0800 ++++ opencv-3.4.20/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2024-06-10 14:54:43.583157025 +0800 +@@ -99,9 +99,9 @@ elseif(MSVC) + # see Modules/CMakeGenericSystem.cmake + if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") + set(OpenCV_ARCH "x64") +- elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") + set(OpenCV_ARCH "ARM64") +- elseif("${CMAKE_GENERATOR}" MATCHES "ARM") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") + set(OpenCV_ARCH "ARM") + elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(OpenCV_ARCH "x64") diff --git a/patches/opencv-3.4.20-newer-msvc.patch b/patches/opencv-3.4.20-newer-msvc.patch new file mode 100644 index 00000000..53212e9e --- /dev/null +++ b/patches/opencv-3.4.20-newer-msvc.patch @@ -0,0 +1,24 @@ +diff -Nuarp opencv-3.4.20.orig/cmake/OpenCVDetectCXXCompiler.cmake opencv-3.4.20/cmake/OpenCVDetectCXXCompiler.cmake +--- opencv-3.4.20.orig/cmake/OpenCVDetectCXXCompiler.cmake 2023-06-27 19:29:13.000000000 +0800 ++++ opencv-3.4.20/cmake/OpenCVDetectCXXCompiler.cmake 2024-06-10 14:47:05.286016469 +0800 +@@ -169,7 +169,7 @@ elseif(MSVC) + set(OpenCV_RUNTIME vc15) + elseif(MSVC_VERSION MATCHES "^192[0-9]$") + set(OpenCV_RUNTIME vc16) +- elseif(MSVC_VERSION MATCHES "^193[0-9]$") ++ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$") + set(OpenCV_RUNTIME vc17) + else() + message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME") +diff -Nuarp opencv-3.4.20.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in opencv-3.4.20/cmake/templates/OpenCVConfig.root-WIN32.cmake.in +--- opencv-3.4.20.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2023-06-27 19:29:13.000000000 +0800 ++++ opencv-3.4.20/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2024-06-10 14:46:17.345712729 +0800 +@@ -137,7 +137,7 @@ elseif(MSVC) + set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version + endif() + endif() +- elseif(MSVC_VERSION MATCHES "^193[0-9]$") ++ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$") + set(OpenCV_RUNTIME vc17) + check_one_config(has_VS2022) + if(NOT has_VS2022) diff --git a/patches/opencv-4.10.0-fix-windows-arm-arch.patch b/patches/opencv-4.10.0-fix-windows-arm-arch.patch new file mode 100644 index 00000000..c3777611 --- /dev/null +++ b/patches/opencv-4.10.0-fix-windows-arm-arch.patch @@ -0,0 +1,30 @@ +diff -Nuarp opencv-4.10.0.orig/cmake/OpenCVDetectCXXCompiler.cmake opencv-4.10.0/cmake/OpenCVDetectCXXCompiler.cmake +--- opencv-4.10.0.orig/cmake/OpenCVDetectCXXCompiler.cmake 2024-06-02 19:41:07.000000000 +0800 ++++ opencv-4.10.0/cmake/OpenCVDetectCXXCompiler.cmake 2024-06-10 14:58:22.061466618 +0800 +@@ -150,9 +150,9 @@ elseif(MSVC) + # see Modules/CMakeGenericSystem.cmake + if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") + set(OpenCV_ARCH "x64") +- elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") + set(OpenCV_ARCH "ARM64") +- elseif("${CMAKE_GENERATOR}" MATCHES "ARM") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") + set(OpenCV_ARCH "ARM") + elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(OpenCV_ARCH "x64") +diff -Nuarp opencv-4.10.0.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in opencv-4.10.0/cmake/templates/OpenCVConfig.root-WIN32.cmake.in +--- opencv-4.10.0.orig/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2024-06-02 19:41:07.000000000 +0800 ++++ opencv-4.10.0/cmake/templates/OpenCVConfig.root-WIN32.cmake.in 2024-06-10 14:58:43.470327117 +0800 +@@ -99,9 +99,9 @@ elseif(MSVC) + # see Modules/CMakeGenericSystem.cmake + if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") + set(OpenCV_ARCH "x64") +- elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)") + set(OpenCV_ARCH "ARM64") +- elseif("${CMAKE_GENERATOR}" MATCHES "ARM") ++ elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM|arm)") + set(OpenCV_ARCH "ARM") + elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + set(OpenCV_ARCH "x64")