mirror of
https://github.com/nihui/opencv-mobile.git
synced 2025-09-26 20:41:56 +08:00
build windows arm (#124)
* Update opencv-2.4.13.7-newer-msvc.patch * fix windows arm arch detection
This commit is contained in:
48
.github/workflows/release.yml
vendored
48
.github/workflows/release.yml
vendored
@@ -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
|
||||
@@ -1368,7 +1372,24 @@ jobs:
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A x64 $(type ../options.txt) -DBUILD_opencv_world=OFF ..
|
||||
cmake --build . --config Release -j 4
|
||||
cmake --build . --config Release --target install
|
||||
- name: build-arm
|
||||
if: matrix.os-compiler.msvc-version == 'vs2019' || matrix.os-compiler.msvc-version == 'vs2022'
|
||||
run: |
|
||||
cd ${{ env.SOURCE_DIR }}
|
||||
mkdir build-arm; cd build-arm
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A arm -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=ARM $(type ../options.txt) -DBUILD_opencv_world=OFF ..
|
||||
cmake --build . --config Release -j 4
|
||||
cmake --build . --config Release --target install
|
||||
- name: build-arm64
|
||||
if: matrix.os-compiler.msvc-version == 'vs2019' || matrix.os-compiler.msvc-version == 'vs2022'
|
||||
run: |
|
||||
cd ${{ env.SOURCE_DIR }}
|
||||
mkdir build-arm64; cd build-arm64
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A arm64 -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=ARM64 $(type ../options.txt) -DBUILD_opencv_world=OFF ..
|
||||
cmake --build . --config Release -j 4
|
||||
cmake --build . --config Release --target install
|
||||
- name: package
|
||||
if: matrix.os-compiler.msvc-version == 'vs2015' || matrix.os-compiler.msvc-version == 'vs2017'
|
||||
run: |
|
||||
mkdir ${{ env.PACKAGE_NAME }}
|
||||
mkdir ${{ env.PACKAGE_NAME }}/x86
|
||||
@@ -1376,6 +1397,19 @@ jobs:
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-x86\install\*" -Destination "${{ env.PACKAGE_NAME }}\x86"
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-x64\install\*" -Destination "${{ env.PACKAGE_NAME }}\x64"
|
||||
7z a -r ${{ env.PACKAGE_NAME }}.zip ${{ env.PACKAGE_NAME }}
|
||||
- name: package
|
||||
if: matrix.os-compiler.msvc-version == 'vs2019' || matrix.os-compiler.msvc-version == 'vs2022'
|
||||
run: |
|
||||
mkdir ${{ env.PACKAGE_NAME }}
|
||||
mkdir ${{ env.PACKAGE_NAME }}/x86
|
||||
mkdir ${{ env.PACKAGE_NAME }}/x64
|
||||
mkdir ${{ env.PACKAGE_NAME }}/arm
|
||||
mkdir ${{ env.PACKAGE_NAME }}/arm64
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-x86\install\*" -Destination "${{ env.PACKAGE_NAME }}\x86"
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-x64\install\*" -Destination "${{ env.PACKAGE_NAME }}\x64"
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-arm\install\*" -Destination "${{ env.PACKAGE_NAME }}\arm"
|
||||
Copy-Item -Verbose -Recurse -Path "${{ env.SOURCE_DIR }}\build-arm64\install\*" -Destination "${{ env.PACKAGE_NAME }}\arm64"
|
||||
7z a -r ${{ env.PACKAGE_NAME }}.zip ${{ env.PACKAGE_NAME }}
|
||||
- name: test-x86
|
||||
run: |
|
||||
cd test
|
||||
@@ -1388,6 +1422,20 @@ jobs:
|
||||
mkdir build-x64; cd build-x64
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A x64 -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGE_NAME }}\x64" -DOpenCV_STATIC=ON ..
|
||||
cmake --build . --config Release -j 4
|
||||
- name: test-arm
|
||||
if: matrix.os-compiler.msvc-version == 'vs2019' || matrix.os-compiler.msvc-version == 'vs2022'
|
||||
run: |
|
||||
cd test
|
||||
mkdir build-arm; cd build-arm
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A arm -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGE_NAME }}\arm" -DOpenCV_STATIC=ON ..
|
||||
cmake --build . --config Release -j 4
|
||||
- name: test-arm64
|
||||
if: matrix.os-compiler.msvc-version == 'vs2019' || matrix.os-compiler.msvc-version == 'vs2022'
|
||||
run: |
|
||||
cd test
|
||||
mkdir build-arm64; cd build-arm64
|
||||
cmake ${{ env.COMMON_CMAKE_OPTIONS }} -A arm64 -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGE_NAME }}\arm64" -DOpenCV_STATIC=ON ..
|
||||
cmake --build . --config Release -j 4
|
||||
- name: upload-zip
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
50
patches/opencv-2.4.13.7-fix-windows-arm-arch.patch
Normal file
50
patches/opencv-2.4.13.7-fix-windows-arm-arch.patch
Normal file
@@ -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)
|
@@ -7,7 +7,7 @@ diff -Nuarp opencv-2.4.13.7.orig/cmake/OpenCVConfig.cmake opencv-2.4.13.7/cmake/
|
||||
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)
|
||||
endif()
|
||||
elseif(MINGW)
|
||||
@@ -21,7 +21,7 @@ diff -Nuarp opencv-2.4.13.7.orig/cmake/OpenCVDetectCXXCompiler.cmake opencv-2.4.
|
||||
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)
|
||||
endif()
|
||||
elseif(MINGW)
|
||||
|
30
patches/opencv-3.4.20-fix-windows-arm-arch.patch
Normal file
30
patches/opencv-3.4.20-fix-windows-arm-arch.patch
Normal file
@@ -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
patches/opencv-3.4.20-newer-msvc.patch
Normal file
24
patches/opencv-3.4.20-newer-msvc.patch
Normal file
@@ -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
patches/opencv-4.10.0-fix-windows-arm-arch.patch
Normal file
30
patches/opencv-4.10.0-fix-windows-arm-arch.patch
Normal file
@@ -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")
|
Reference in New Issue
Block a user