Skip to content

Commit

Permalink
fix windows arm arch detection
Browse files Browse the repository at this point in the history
  • Loading branch information
nihui committed Jun 10, 2024
1 parent cb096a1 commit aea4226
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
50 changes: 50 additions & 0 deletions patches/opencv-2.4.13.7-fix-windows-arm-arch.patch
Original file line number Diff line number Diff line change
@@ -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)
30 changes: 30 additions & 0 deletions patches/opencv-3.4.20-fix-windows-arm-arch.patch
Original file line number Diff line number Diff line change
@@ -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")
24 changes: 24 additions & 0 deletions patches/opencv-3.4.20-newer-msvc.patch
Original file line number Diff line number Diff line change
@@ -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)
30 changes: 30 additions & 0 deletions patches/opencv-4.10.0-fix-windows-arm-arch.patch
Original file line number Diff line number Diff line change
@@ -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")

0 comments on commit aea4226

Please sign in to comment.