diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 4cfd2e2..aa27ca3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,16 +1,28 @@
name: release
-#on: [push, pull_request]
+# on: [push, pull_request]
on:
push:
tags:
- '*'
env:
- DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
- EMSCRIPTEN_VERSION: 2.0.8
+ DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
+ IOS_DEPLOYMENT_TARGET: '9.0'
+ MAC_DEPLOYMENT_TARGET: '10.9'
+ MAC_ARM64_DEPLOYMENT_TARGET: '11.0'
+ MAC_CATALYST_DEPLOYMENT_TARGET: '13.1'
+ ENABLE_BITCODE: OFF
+ ENABLE_ARC: OFF
+ ENABLE_VISIBILITY: OFF
+ EMSCRIPTEN_VERSION: 3.1.28
+
+permissions:
+ contents: read
jobs:
setup:
+ permissions:
+ contents: none
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.get_version.outputs.VERSION }}
@@ -22,8 +34,8 @@ jobs:
android-opencv4:
runs-on: ubuntu-latest
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-android
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-android
steps:
- uses: actions/checkout@v3
- name: ndk-fix-debug
@@ -35,8 +47,8 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-rtti.patch
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-armeabi-v7a
@@ -86,6 +98,38 @@ jobs:
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/*.mk
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/android.toolchain.cmake
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-armeabi-v7a
+ run: |
+ cd test
+ mkdir build-armeabi-v7a && cd build-armeabi-v7a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-arm64-v8a
+ run: |
+ cd test
+ mkdir build-arm64-v8a && cd build-arm64-v8a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86 && cd build-x86
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -95,8 +139,8 @@ jobs:
android-opencv3:
runs-on: ubuntu-latest
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-android
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-android
steps:
- uses: actions/checkout@v3
- name: ndk-fix-debug
@@ -107,8 +151,9 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-rtti.patch
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-armeabi-v7a
@@ -159,6 +204,38 @@ jobs:
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/*.mk
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/android.toolchain.cmake
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-armeabi-v7a
+ run: |
+ cd test
+ mkdir build-armeabi-v7a && cd build-armeabi-v7a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-arm64-v8a
+ run: |
+ cd test
+ mkdir build-arm64-v8a && cd build-arm64-v8a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86 && cd build-x86
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -184,6 +261,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-armeabi-v7a
@@ -237,6 +317,38 @@ jobs:
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/*.mk
rm -f ${{ env.PACKAGENAME }}/sdk/native/jni/android.toolchain.cmake
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-armeabi-v7a
+ run: |
+ cd test
+ mkdir build-armeabi-v7a && cd build-armeabi-v7a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-arm64-v8a
+ run: |
+ cd test
+ mkdir build-arm64-v8a && cd build-arm64-v8a
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86 && cd build-x86
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
+ -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-24 -DANDROID_CPP_FEATURES="no-rtti no-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/sdk/native/jni ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -244,10 +356,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv4:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-ios
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ios
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -257,27 +369,37 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-rtti.patch
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
- - name: build-simulator
+ - name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -290,11 +412,24 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -302,10 +437,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv3:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-ios
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ios
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -314,27 +449,38 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-rtti.patch
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
- - name: build-simulator
+ - name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -347,11 +493,24 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -359,7 +518,7 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv2:
- runs-on: macos-11
+ runs-on: macos-12
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-ios
@@ -375,27 +534,62 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
- cmake --build . -j 3
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
cmake --build . --target install
- - name: build-simulator
+ - name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
- cmake --build . -j 3
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
cmake --build . --target install
- name: package
run: |
@@ -406,11 +600,24 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -418,10 +625,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv4-bitcode:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-ios-bitcode
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ios-bitcode
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -431,27 +638,37 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-rtti.patch
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
- - name: build-simulator
+ - name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -464,11 +681,24 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -476,10 +706,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv3-bitcode:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-ios-bitcode
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ios-bitcode
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -488,27 +718,38 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-rtti.patch
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
- - name: build-simulator
+ - name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -521,11 +762,24 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -533,7 +787,7 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
ios-opencv2-bitcode:
- runs-on: macos-11
+ runs-on: macos-12
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-ios-bitcode
@@ -549,26 +803,142 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- - name: build-ios
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-armv7
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-ios && cd build-ios
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-armv7 && cd build-armv7
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=OS -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="armv7;arm64;arm64e" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64e
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64e && cd build-arm64e
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-armv7/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64e/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7;arm64;arm64e" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv4:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ios-simulator
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ rm -rf modules/gapi
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
- - name: build-simulator
+ - name: build-x86_64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build-simulator && cd build-simulator
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
- -DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="i386;x86_64" \
- -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
cmake --build . -j 3
cmake --build . --target install
- name: package
@@ -580,11 +950,481 @@ jobs:
ln -s Versions/Current/Headers opencv2.framework/Headers
ln -s Versions/Current/Resources opencv2.framework/Resources
ln -s Versions/Current/opencv2 opencv2.framework/opencv2
- lipo -create opencv-${{ env.OPENCV_VERSION }}/build-ios/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-simulator/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
- cp -r opencv-${{ env.OPENCV_VERSION }}/build-ios/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv3:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ios-simulator
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv2:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-ios-simulator
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-2.4.13.7-no-rtti.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
+ patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv4-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ios-simulator-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ rm -rf modules/gapi
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv3-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ios-simulator-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ ios-simulator-opencv2-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-ios-simulator-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-2.4.13.7-no-rtti.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
+ patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-i386
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-i386 && cd build-i386
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create \
+ opencv-${{ env.OPENCV_VERSION }}/build-i386/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a \
+ opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a \
+ -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386;x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -594,8 +1434,8 @@ jobs:
armlinux-opencv4:
runs-on: ubuntu-latest
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-armlinux
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-armlinux
steps:
- name: arm-gnu-toolchain
run: |
@@ -610,8 +1450,8 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-rtti.patch
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-arm-linux-gnueabi
@@ -654,6 +1494,30 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/arm-linux-gnueabihf/share/opencv4
rm -rf ${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/opencv4
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-arm-linux-gnueabi
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabi && cd build-arm-linux-gnueabi
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabi.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabi/lib/cmake/opencv4 ..
+ cmake --build . -j 2
+ - name: test-arm-linux-gnueabihf
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabihf && cd build-arm-linux-gnueabihf
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabihf.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabihf/lib/cmake/opencv4 ..
+ cmake --build . -j 2
+ - name: test-aarch64-linux-gnu
+ run: |
+ cd test
+ mkdir build-aarch64-linux-gnu && cd build-aarch64-linux-gnu
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/aarch64-linux-gnu.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/aarch64-linux-gnu/lib/cmake/opencv4 ..
+ cmake --build . -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -663,8 +1527,8 @@ jobs:
armlinux-opencv3:
runs-on: ubuntu-latest
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-armlinux
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-armlinux
steps:
- name: arm-gnu-toolchain
run: |
@@ -678,8 +1542,9 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-rtti.patch
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-arm-linux-gnueabi
@@ -731,6 +1596,30 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV/valgrind.supp
rm -rf ${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV/valgrind_3rdparty.supp
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-arm-linux-gnueabi
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabi && cd build-arm-linux-gnueabi
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabi.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabi/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-arm-linux-gnueabihf
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabihf && cd build-arm-linux-gnueabihf
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabihf.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabihf/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-aarch64-linux-gnu
+ run: |
+ cd test
+ mkdir build-aarch64-linux-gnu && cd build-aarch64-linux-gnu
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/aarch64-linux-gnu.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV ..
+ cmake --build . -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -759,6 +1648,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-arm-linux-gnueabi
@@ -804,6 +1696,30 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV/haarcascades
rm -rf ${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV/lbpcascades
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-arm-linux-gnueabi
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabi && cd build-arm-linux-gnueabi
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabi.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabi/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-arm-linux-gnueabihf
+ run: |
+ cd test
+ mkdir build-arm-linux-gnueabihf && cd build-arm-linux-gnueabihf
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabihf.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/arm-linux-gnueabihf/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-aarch64-linux-gnu
+ run: |
+ cd test
+ mkdir build-aarch64-linux-gnu && cd build-aarch64-linux-gnu
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/aarch64-linux-gnu.toolchain.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/aarch64-linux-gnu/share/OpenCV ..
+ cmake --build . -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -811,10 +1727,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
macos-opencv4:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-macos
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-macos
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -824,14 +1740,15 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-x86_64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-x86_64 && cd build-x86_64
- cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -839,7 +1756,8 @@ jobs:
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-arm64 && cd build-arm64
- cmake -DCMAKE_CROSSCOMPILING=ON -DCMAKE_SYSTEM_PROCESSOR="arm64" -DCMAKE_OSX_ARCHITECTURES="arm64" -DOPENCV_WORKAROUND_CMAKE_20989=ON \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -857,6 +1775,22 @@ jobs:
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: test-arm64
+ run: |
+ cd test
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -864,10 +1798,10 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
macos-opencv3:
- runs-on: macos-11
+ runs-on: macos-12
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-macos
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-macos
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -876,14 +1810,16 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
echo -n > cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build-x86_64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-x86_64 && cd build-x86_64
- cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -891,7 +1827,8 @@ jobs:
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-arm64 && cd build-arm64
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/macos-arm64.toolchain.cmake \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3
cmake --build . --target install
@@ -909,6 +1846,22 @@ jobs:
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: test-arm64
+ run: |
+ cd test
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -916,7 +1869,7 @@ jobs:
path: ${{ env.PACKAGENAME }}.zip
macos-opencv2:
- runs-on: macos-11
+ runs-on: macos-12
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-macos
@@ -931,6 +1884,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
@@ -941,28 +1897,29 @@ jobs:
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-x86_64 && cd build-x86_64
- cmake -DCMAKE_OSX_ARCHITECTURES="x86_64" \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3 || echo "qaq"
# workaround ar @list issue on macos
cd modules/world
- /Applications/Xcode_12.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
cd ../..
cmake --build . --target install
-
- name: build-arm64
run: |
cd opencv-${{ env.OPENCV_VERSION }}
mkdir build-arm64 && cd build-arm64
- cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/macos-arm64.toolchain.cmake \
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 3 || echo "qaq"
# workaround ar @list issue on macos
cd modules/world
- /Applications/Xcode_12.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
cd ../..
cmake --build . --target install
@@ -980,6 +1937,440 @@ jobs:
sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test-x86_64
+ run: |
+ cd test
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: test-arm64
+ run: |
+ cd test
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv4:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-mac-catalyst
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ rm -rf modules/gapi
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv3:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-mac-catalyst
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv2:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-mac-catalyst
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
+ patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv4-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-mac-catalyst-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ rm -rf modules/gapi
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv4/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv3-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-mac-catalyst-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ mac-catalyst-opencv2-bitcode:
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-mac-catalyst-bitcode
+ steps:
+ - uses: actions/checkout@v3
+ - name: opencv-source
+ run: |
+ wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
+ unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
+ cd opencv-${{ env.OPENCV_VERSION }}
+ echo -n > cmake/OpenCVFindLibsGrfmt.cmake
+ patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
+ patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
+ patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
+ rm -rf modules/highgui
+ cp -r ../highgui modules/
+
+ # workaround ar @list issue on macos
+ sed -i -e 's!\\"${objpath4}\\"!${objpath4}!g' modules/world/CMakeLists.txt
+
+ - name: build-x86_64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-x86_64 && cd build-x86_64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: build-arm64
+ run: |
+ cd opencv-${{ env.OPENCV_VERSION }}
+ mkdir build-arm64 && cd build-arm64
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
+ cmake --build . -j 3 || echo "qaq"
+
+ # workaround ar @list issue on macos
+ cd modules/world
+ /Applications/Xcode_13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar qc ../../lib/libopencv_world.a `cat world_objects.rsp` CMakeFiles/opencv_world.dir/src/world_init.cpp.o
+ cd ../..
+
+ cmake --build . --target install
+ - name: package
+ run: |
+ rm -rf opencv2.framework
+ mkdir -p opencv2.framework/Versions/A/Headers
+ mkdir -p opencv2.framework/Versions/A/Resources
+ ln -s A opencv2.framework/Versions/Current
+ ln -s Versions/Current/Headers opencv2.framework/Headers
+ ln -s Versions/Current/Resources opencv2.framework/Resources
+ ln -s Versions/Current/opencv2 opencv2.framework/opencv2
+ lipo -create opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/lib/libopencv_world.a opencv-${{ env.OPENCV_VERSION }}/build-arm64/install/lib/libopencv_world.a -o opencv2.framework/Versions/A/opencv2
+ cp -r opencv-${{ env.OPENCV_VERSION }}/build-x86_64/install/include/opencv2/* opencv2.framework/Versions/A/Headers/
+ sed -e 's/__NAME__/OpenCV/g' -e 's/__IDENTIFIER__/org.opencv/g' -e 's/__VERSION__/${{ env.OPENCV_VERSION }}/g' Info.plist > opencv2.framework/Versions/A/Resources/Info.plist
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.framework
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64;arm64" \
+ -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE ..
+ cmake --build . -j 3
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -989,8 +2380,9 @@ jobs:
windows-vs2015-opencv4:
runs-on: windows-2019
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2015
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-windows-vs2015
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1000,7 +2392,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
Remove-Item "modules\gapi" -Recurse
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.6.0-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.8.0-no-zlib.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1027,6 +2419,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v140,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v140,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1036,8 +2440,9 @@ jobs:
windows-vs2015-opencv3:
runs-on: windows-2019
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2015
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-windows-vs2015
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1046,7 +2451,8 @@ jobs:
7z x ./opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.18-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-link-openmp.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1073,6 +2479,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v140,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v140,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1084,6 +2502,7 @@ jobs:
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2015
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1094,6 +2513,9 @@ jobs:
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-no-zlib.patch
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-fix-highgui-include.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-enable-cxx11.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-link-openmp.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-newer-msvc.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1120,6 +2542,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\share" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\share" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v140,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v140,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1129,8 +2563,9 @@ jobs:
windows-vs2017-opencv4:
runs-on: windows-2019
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2017
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-windows-vs2017
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1140,7 +2575,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
Remove-Item "modules\gapi" -Recurse
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.6.0-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.8.0-no-zlib.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1167,6 +2602,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v141,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v141,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1176,8 +2623,9 @@ jobs:
windows-vs2017-opencv3:
runs-on: windows-2019
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2017
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-windows-vs2017
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1186,7 +2634,8 @@ jobs:
7z x ./opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.18-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-link-openmp.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1213,6 +2662,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v141,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v141,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1224,6 +2685,7 @@ jobs:
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2017
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1234,6 +2696,9 @@ jobs:
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-no-zlib.patch
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-fix-highgui-include.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-enable-cxx11.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-link-openmp.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-newer-msvc.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1260,6 +2725,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\share" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\share" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v141,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v141,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1269,8 +2746,9 @@ jobs:
windows-vs2019-opencv4:
runs-on: windows-2019
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2019
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-windows-vs2019
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1280,7 +2758,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
Remove-Item "modules\gapi" -Recurse
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.6.0-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.8.0-no-zlib.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1307,6 +2785,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v142,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v142,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1316,8 +2806,9 @@ jobs:
windows-vs2019-opencv3:
runs-on: windows-2019
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2019
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-windows-vs2019
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1326,7 +2817,8 @@ jobs:
7z x ./opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.18-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-link-openmp.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1353,6 +2845,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v142,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v142,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1364,6 +2868,7 @@ jobs:
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2019
+ UseMultiToolTask: true
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1374,6 +2879,9 @@ jobs:
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-no-zlib.patch
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-fix-highgui-include.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-enable-cxx11.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-link-openmp.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-newer-msvc.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1400,6 +2908,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\share" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\share" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v142,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v142,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1409,8 +2929,9 @@ jobs:
windows-vs2022-opencv4:
runs-on: windows-2022
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2022
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-windows-vs2022
+ UseMultiToolTask: true
steps:
- uses: msys2/setup-msys2@v2
with:
@@ -1425,7 +2946,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
Remove-Item "modules\gapi" -Recurse
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.6.0-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-4.8.0-no-zlib.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1452,6 +2973,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v143,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v143,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1461,8 +2994,9 @@ jobs:
windows-vs2022-opencv3:
runs-on: windows-2022
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2022
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-windows-vs2022
+ UseMultiToolTask: true
steps:
- uses: msys2/setup-msys2@v2
with:
@@ -1476,7 +3010,8 @@ jobs:
7z x ./opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
- C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.18-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-no-zlib.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-3.4.20-link-openmp.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1503,6 +3038,18 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\etc" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\etc" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v143,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v143,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
@@ -1514,6 +3061,7 @@ jobs:
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2022
+ UseMultiToolTask: true
steps:
- uses: msys2/setup-msys2@v2
with:
@@ -1529,6 +3077,9 @@ jobs:
Clear-Content "cmake\OpenCVFindLibsGrfmt.cmake"
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-no-zlib.patch
C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-fix-highgui-include.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-enable-cxx11.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-link-openmp.patch
+ C:\msys64\usr\bin\patch.exe -p1 -i ..\opencv-2.4.13.7-newer-msvc.patch
Remove-Item "modules\highgui" -Recurse
Copy-Item -Recurse -Path "..\highgui" -Destination "modules\"
- name: build-x86
@@ -1555,135 +3106,29 @@ jobs:
Remove-Item "${{ env.PACKAGENAME }}\x86\share" -Recurse
Remove-Item "${{ env.PACKAGENAME }}\x64\share" -Recurse
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test-x86
+ run: |
+ cd test
+ mkdir build-x86; cd build-x86
+ cmake -T v143,host=x64 -A Win32 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x86" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
+ - name: test-x64
+ run: |
+ cd test
+ mkdir build-x64; cd build-x64
+ cmake -T v143,host=x64 -A x64 -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="$env:GITHUB_WORKSPACE\${{ env.PACKAGENAME }}\x64" -DOpenCV_STATIC=ON ..
+ cmake --build . --config Release -j 2
- name: upload-zip
uses: actions/upload-artifact@v3
with:
name: ${{ env.PACKAGENAME }}
path: ${{ env.PACKAGENAME }}.zip
- ubuntu-1804-opencv4:
- runs-on: ubuntu-18.04
- env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-1804
- steps:
- - uses: actions/checkout@v3
- - name: opencv-source
- run: |
- wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
- unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
- cd opencv-${{ env.OPENCV_VERSION }}
- truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
- rm -rf modules/highgui
- cp -r ../highgui modules/
- - name: build
- run: |
- cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build && cd build
- cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=OFF ..
- cmake --build . -j 2
- cmake --build . --target install
- - name: package
- run: |
- rm -rf ${{ env.PACKAGENAME }}
- mkdir -p ${{ env.PACKAGENAME }}
- cp -rf opencv-${{ env.OPENCV_VERSION }}/build/install/* ${{ env.PACKAGENAME }}/
- rm -rf ${{ env.PACKAGENAME }}/share/opencv4
- rm -f ${{ env.PACKAGENAME }}.zip
- zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
- - name: upload
- uses: actions/upload-artifact@v3
- with:
- name: ${{ env.PACKAGENAME }}
- path: ${{ env.PACKAGENAME }}.zip
-
- ubuntu-1804-opencv3:
- runs-on: ubuntu-18.04
- env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-1804
- steps:
- - uses: actions/checkout@v3
- - name: opencv-source
- run: |
- wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
- unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
- cd opencv-${{ env.OPENCV_VERSION }}
- truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
- rm -rf modules/highgui
- cp -r ../highgui modules/
- - name: build
- run: |
- cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build && cd build
- cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=OFF ..
- cmake --build . -j 2
- cmake --build . --target install
- - name: package
- run: |
- rm -rf ${{ env.PACKAGENAME }}
- mkdir -p ${{ env.PACKAGENAME }}
- cp -rf opencv-${{ env.OPENCV_VERSION }}/build/install/* ${{ env.PACKAGENAME }}/
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/haarcascades
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/lbpcascades
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/valgrind.supp
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/valgrind_3rdparty.supp
- rm -f ${{ env.PACKAGENAME }}.zip
- zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
- - name: upload
- uses: actions/upload-artifact@v3
- with:
- name: ${{ env.PACKAGENAME }}
- path: ${{ env.PACKAGENAME }}.zip
-
- ubuntu-1804-opencv2:
- runs-on: ubuntu-18.04
- env:
- OPENCV_VERSION: 2.4.13.7
- PACKAGENAME: opencv-mobile-2.4.13.7-ubuntu-1804
- steps:
- - uses: actions/checkout@v3
- - name: opencv-source
- run: |
- wget -q https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip -O opencv-${{ env.OPENCV_VERSION }}.zip
- unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
- cd opencv-${{ env.OPENCV_VERSION }}
- truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
- patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
- patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
- rm -rf modules/highgui
- cp -r ../highgui modules/
- - name: build
- run: |
- cd opencv-${{ env.OPENCV_VERSION }}
- mkdir build && cd build
- cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=OFF ..
- cmake --build . -j 2
- cmake --build . --target install
- - name: package
- run: |
- rm -rf ${{ env.PACKAGENAME }}
- mkdir -p ${{ env.PACKAGENAME }}
- cp -rf opencv-${{ env.OPENCV_VERSION }}/build/install/* ${{ env.PACKAGENAME }}/
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/haarcascades
- rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/lbpcascades
- rm -f ${{ env.PACKAGENAME }}.zip
- zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
- - name: upload
- uses: actions/upload-artifact@v3
- with:
- name: ${{ env.PACKAGENAME }}
- path: ${{ env.PACKAGENAME }}.zip
-
ubuntu-2004-opencv4:
runs-on: ubuntu-20.04
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-2004
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ubuntu-2004
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1693,7 +3138,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1711,6 +3156,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/opencv4
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/lib/cmake/opencv4 ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1720,8 +3171,8 @@ jobs:
ubuntu-2004-opencv3:
runs-on: ubuntu-20.04
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-2004
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ubuntu-2004
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1730,7 +3181,8 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1751,6 +3203,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/valgrind_3rdparty.supp
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1773,6 +3231,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1791,6 +3252,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/lbpcascades
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1800,8 +3267,8 @@ jobs:
ubuntu-2204-opencv4:
runs-on: ubuntu-22.04
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-2204
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-ubuntu-2204
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1811,7 +3278,7 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1829,6 +3296,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/opencv4
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/lib/cmake/opencv4 ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1838,8 +3311,8 @@ jobs:
ubuntu-2204-opencv3:
runs-on: ubuntu-22.04
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-2204
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-ubuntu-2204
steps:
- uses: actions/checkout@v3
- name: opencv-source
@@ -1848,7 +3321,8 @@ jobs:
unzip -q opencv-${{ env.OPENCV_VERSION }}.zip
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1869,6 +3343,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/valgrind_3rdparty.supp
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1891,6 +3371,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -1909,6 +3392,12 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/share/OpenCV/lbpcascades
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -1918,8 +3407,8 @@ jobs:
webassembly-opencv4:
runs-on: ubuntu-20.04
env:
- OPENCV_VERSION: 4.6.0
- PACKAGENAME: opencv-mobile-4.6.0-webassembly
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-webassembly
steps:
- uses: actions/checkout@v3
- name: emsdk
@@ -1935,15 +3424,16 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-4.6.0-no-rtti.patch
- patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-no-rtti.patch
+ patch -p1 -i ../opencv-4.8.0-no-zlib.patch
+ patch -p1 -i ../opencv-4.8.0-fix-emscripten-include.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
run: |
source emsdk/emsdk_env.sh
cd opencv-${{ env.OPENCV_VERSION }}
- patch -p1 -i ../opencv-4.6.0-unsafe-xadd.patch
+ patch -p1 -i ../opencv-4.8.0-unsafe-xadd.patch
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCPU_BASELINE="" -DCPU_DISPATCH="" -DWITH_PTHREADS_PF=OFF -DCV_ENABLE_INTRINSICS=OFF -DBUILD_WASM_INTRIN_TESTS=OFF \
@@ -1966,7 +3456,7 @@ jobs:
run: |
source emsdk/emsdk_env.sh
cd opencv-${{ env.OPENCV_VERSION }}
- patch -p1 -R -i ../opencv-4.6.0-unsafe-xadd.patch
+ patch -p1 -R -i ../opencv-4.8.0-unsafe-xadd.patch
mkdir build-threads && cd build-threads
cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCPU_BASELINE="" -DCPU_DISPATCH="" -DWITH_PTHREADS_PF=ON -DCV_ENABLE_INTRINSICS=OFF -DBUILD_WASM_INTRIN_TESTS=OFF \
@@ -1999,6 +3489,38 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/simd-threads/share/opencv4
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/basic/lib/cmake/opencv4 ..
+ cmake --build . -j 2
+ - name: test-simd
+ run: |
+ cd test
+ mkdir build-simd && cd build-simd
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd/lib/cmake/opencv4 ..
+ cmake --build . -j 2
+ - name: test-threads
+ run: |
+ cd test
+ mkdir build-threads && cd build-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/threads/lib/cmake/opencv4 ..
+ cmake --build . -j 2
+ - name: test-simd-threads
+ run: |
+ cd test
+ mkdir build-simd-threads && cd build-simd-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd-threads/lib/cmake/opencv4 ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -2008,8 +3530,8 @@ jobs:
webassembly-opencv3:
runs-on: ubuntu-20.04
env:
- OPENCV_VERSION: 3.4.18
- PACKAGENAME: opencv-mobile-3.4.18-webassembly
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-webassembly
steps:
- uses: actions/checkout@v3
- name: emsdk
@@ -2025,15 +3547,17 @@ jobs:
cd opencv-${{ env.OPENCV_VERSION }}
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
- patch -p1 -i ../opencv-3.4.18-no-rtti.patch
- patch -p1 -i ../opencv-3.4.18-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-no-rtti.patch
+ patch -p1 -i ../opencv-3.4.20-no-zlib.patch
+ patch -p1 -i ../opencv-3.4.20-link-openmp.patch
+ patch -p1 -i ../opencv-3.4.20-fix-emscripten-include.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
run: |
source emsdk/emsdk_env.sh
cd opencv-${{ env.OPENCV_VERSION }}
- patch -p1 -i ../opencv-3.4.18-unsafe-xadd.patch
+ patch -p1 -i ../opencv-3.4.20-unsafe-xadd.patch
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCPU_BASELINE="" -DCPU_DISPATCH="" -DWITH_PTHREADS_PF=OFF -DCV_ENABLE_INTRINSICS=OFF -DBUILD_WASM_INTRIN_TESTS=OFF \
@@ -2056,7 +3580,7 @@ jobs:
run: |
source emsdk/emsdk_env.sh
cd opencv-${{ env.OPENCV_VERSION }}
- patch -p1 -R -i ../opencv-3.4.18-unsafe-xadd.patch
+ patch -p1 -R -i ../opencv-3.4.20-unsafe-xadd.patch
mkdir build-threads && cd build-threads
cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCPU_BASELINE="" -DCPU_DISPATCH="" -DWITH_PTHREADS_PF=ON -DCV_ENABLE_INTRINSICS=OFF -DBUILD_WASM_INTRIN_TESTS=OFF \
@@ -2101,6 +3625,38 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/simd-threads/share/OpenCV/valgrind_3rdparty.supp
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/basic/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-simd
+ run: |
+ cd test
+ mkdir build-simd && cd build-simd
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-threads
+ run: |
+ cd test
+ mkdir build-threads && cd build-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/threads/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-simd-threads
+ run: |
+ cd test
+ mkdir build-simd-threads && cd build-simd-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd-threads/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
@@ -2131,6 +3687,9 @@ jobs:
patch -p1 -i ../opencv-2.4.13.7-no-zlib.patch
patch -p1 -i ../opencv-2.4.13.7-fix-highgui-include.patch
patch -p1 -i ../opencv-2.4.13.7-no-link-stdc++.patch
+ patch -p1 -i ../opencv-2.4.13.7-enable-cxx11.patch
+ patch -p1 -i ../opencv-2.4.13.7-link-openmp.patch
+ patch -p1 -i ../opencv-2.4.13.7-newer-msvc.patch
rm -rf modules/highgui
cp -r ../highgui modules/
- name: build
@@ -2199,457 +3758,299 @@ jobs:
rm -rf ${{ env.PACKAGENAME }}/simd-threads/share/OpenCV/lbpcascades
rm -f ${{ env.PACKAGENAME }}.zip
zip -9 -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
+ - name: test
+ run: |
+ cd test
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/basic/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-simd
+ run: |
+ cd test
+ mkdir build-simd && cd build-simd
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=0 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-threads
+ run: |
+ cd test
+ mkdir build-threads && cd build-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/threads/share/OpenCV ..
+ cmake --build . -j 2
+ - name: test-simd-threads
+ run: |
+ cd test
+ mkdir build-simd-threads && cd build-simd-threads
+ cmake -DCMAKE_TOOLCHAIN_FILE=../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
+ -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions -s WASM=1 -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4 -msimd128" \
+ -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGENAME }}/simd-threads/share/OpenCV ..
+ cmake --build . -j 2
- name: upload
uses: actions/upload-artifact@v3
with:
name: ${{ env.PACKAGENAME }}
path: ${{ env.PACKAGENAME }}.zip
+ apple-opencv4:
+ needs: [macos-opencv4, ios-opencv4, ios-simulator-opencv4, mac-catalyst-opencv4]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-apple
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios
+ mkdir -p opencv-mobile-ios-simulator
+ mkdir -p opencv-mobile-mac-catalyst
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios/opencv-mobile-${{ env.OPENCV_VERSION }}-ios.zip -d opencv-mobile-ios
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator.zip -d opencv-mobile-ios-simulator
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst.zip -d opencv-mobile-mac-catalyst
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios/opencv2.framework \
+ -framework opencv-mobile-ios-simulator/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ apple-opencv3:
+ needs: [macos-opencv3, ios-opencv3, ios-simulator-opencv3, mac-catalyst-opencv3]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-apple
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios
+ mkdir -p opencv-mobile-ios-simulator
+ mkdir -p opencv-mobile-mac-catalyst
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios/opencv-mobile-${{ env.OPENCV_VERSION }}-ios.zip -d opencv-mobile-ios
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator.zip -d opencv-mobile-ios-simulator
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst.zip -d opencv-mobile-mac-catalyst
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios/opencv2.framework \
+ -framework opencv-mobile-ios-simulator/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ apple-opencv2:
+ needs: [macos-opencv2, ios-opencv2, ios-simulator-opencv2, mac-catalyst-opencv2]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-apple
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios
+ mkdir -p opencv-mobile-ios-simulator
+ mkdir -p opencv-mobile-mac-catalyst
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios/opencv-mobile-${{ env.OPENCV_VERSION }}-ios.zip -d opencv-mobile-ios
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator.zip -d opencv-mobile-ios-simulator
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst.zip -d opencv-mobile-mac-catalyst
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios/opencv2.framework \
+ -framework opencv-mobile-ios-simulator/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ apple-opencv4-bitcode:
+ needs: [macos-opencv4, ios-opencv4-bitcode, ios-simulator-opencv4-bitcode, mac-catalyst-opencv4-bitcode]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 4.8.0
+ PACKAGENAME: opencv-mobile-4.8.0-apple-bitcode
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios-bitcode
+ mkdir -p opencv-mobile-ios-simulator-bitcode
+ mkdir -p opencv-mobile-mac-catalyst-bitcode
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode.zip -d opencv-mobile-ios-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode.zip -d opencv-mobile-ios-simulator-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode.zip -d opencv-mobile-mac-catalyst-bitcode
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios-bitcode/opencv2.framework \
+ -framework opencv-mobile-ios-simulator-bitcode/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst-bitcode/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ apple-opencv3-bitcode:
+ needs: [macos-opencv3, ios-opencv3-bitcode, ios-simulator-opencv3-bitcode, mac-catalyst-opencv3-bitcode]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 3.4.20
+ PACKAGENAME: opencv-mobile-3.4.20-apple-bitcode
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios-bitcode
+ mkdir -p opencv-mobile-ios-simulator-bitcode
+ mkdir -p opencv-mobile-mac-catalyst-bitcode
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode.zip -d opencv-mobile-ios-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode.zip -d opencv-mobile-ios-simulator-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode.zip -d opencv-mobile-mac-catalyst-bitcode
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios-bitcode/opencv2.framework \
+ -framework opencv-mobile-ios-simulator-bitcode/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst-bitcode/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
+ apple-opencv2-bitcode:
+ needs: [macos-opencv2, ios-opencv2-bitcode, ios-simulator-opencv2-bitcode, mac-catalyst-opencv2-bitcode]
+ runs-on: macos-12
+ env:
+ OPENCV_VERSION: 2.4.13.7
+ PACKAGENAME: opencv-mobile-2.4.13.7-apple-bitcode
+ steps:
+ - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app
+ - name: download
+ uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: create-xcframwork
+ run: |
+ mkdir -p opencv-mobile-macos
+ mkdir -p opencv-mobile-ios-bitcode
+ mkdir -p opencv-mobile-ios-simulator-bitcode
+ mkdir -p opencv-mobile-mac-catalyst-bitcode
+
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-macos/opencv-mobile-${{ env.OPENCV_VERSION }}-macos.zip -d opencv-mobile-macos
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-bitcode.zip -d opencv-mobile-ios-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-ios-simulator-bitcode.zip -d opencv-mobile-ios-simulator-bitcode
+ unzip -q artifacts/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode/opencv-mobile-${{ env.OPENCV_VERSION }}-mac-catalyst-bitcode.zip -d opencv-mobile-mac-catalyst-bitcode
+
+ xcodebuild -create-xcframework \
+ -framework opencv-mobile-macos/opencv2.framework \
+ -framework opencv-mobile-ios-bitcode/opencv2.framework \
+ -framework opencv-mobile-ios-simulator-bitcode/opencv2.framework \
+ -framework opencv-mobile-mac-catalyst-bitcode/opencv2.framework \
+ -output opencv2.xcframework
+
+ rm -f ${{ env.PACKAGENAME }}.zip
+ zip -9 -y -r ${{ env.PACKAGENAME }}.zip opencv2.xcframework
+ - name: upload-zip
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ env.PACKAGENAME }}
+ path: ${{ env.PACKAGENAME }}.zip
+
release:
- needs: [setup, android-opencv4, android-opencv3, android-opencv2, ios-opencv4, ios-opencv3, ios-opencv2, ios-opencv4-bitcode, ios-opencv3-bitcode, ios-opencv2-bitcode, armlinux-opencv4, armlinux-opencv3, armlinux-opencv2, macos-opencv4, macos-opencv3, macos-opencv2, windows-vs2015-opencv4, windows-vs2015-opencv3, windows-vs2015-opencv2, windows-vs2017-opencv4, windows-vs2017-opencv3, windows-vs2017-opencv2, windows-vs2019-opencv4, windows-vs2019-opencv3, windows-vs2019-opencv2, windows-vs2022-opencv4, windows-vs2022-opencv3, windows-vs2022-opencv2, ubuntu-1804-opencv4, ubuntu-1804-opencv3, ubuntu-1804-opencv2, ubuntu-2004-opencv4, ubuntu-2004-opencv3, ubuntu-2004-opencv2, ubuntu-2204-opencv4, ubuntu-2204-opencv3, ubuntu-2204-opencv2, webassembly-opencv4, webassembly-opencv3, webassembly-opencv2]
+ permissions:
+ contents: write # for softprops/action-gh-release to create a release
+ needs: [setup, android-opencv4, android-opencv3, android-opencv2, ios-opencv4, ios-opencv3, ios-opencv2, ios-opencv4-bitcode, ios-opencv3-bitcode, ios-opencv2-bitcode, ios-simulator-opencv4, ios-simulator-opencv3, ios-simulator-opencv2, ios-simulator-opencv4-bitcode, ios-simulator-opencv3-bitcode, ios-simulator-opencv2-bitcode, armlinux-opencv4, armlinux-opencv3, armlinux-opencv2, macos-opencv4, macos-opencv3, macos-opencv2, mac-catalyst-opencv4, mac-catalyst-opencv3, mac-catalyst-opencv2, mac-catalyst-opencv4-bitcode, mac-catalyst-opencv3-bitcode, mac-catalyst-opencv2-bitcode, windows-vs2015-opencv4, windows-vs2015-opencv3, windows-vs2015-opencv2, windows-vs2017-opencv4, windows-vs2017-opencv3, windows-vs2017-opencv2, windows-vs2019-opencv4, windows-vs2019-opencv3, windows-vs2019-opencv2, windows-vs2022-opencv4, windows-vs2022-opencv3, windows-vs2022-opencv2, ubuntu-2004-opencv4, ubuntu-2004-opencv3, ubuntu-2004-opencv2, ubuntu-2204-opencv4, ubuntu-2204-opencv3, ubuntu-2204-opencv2, webassembly-opencv4, webassembly-opencv3, webassembly-opencv2, apple-opencv4, apple-opencv3, apple-opencv2, apple-opencv4-bitcode, apple-opencv3-bitcode, apple-opencv2-bitcode]
runs-on: ubuntu-latest
steps:
- name: download
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
path: artifacts
- name: create-release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ uses: softprops/action-gh-release@v1
with:
+ token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ needs.setup.outputs.VERSION }}
- release_name: Release ${{ needs.setup.outputs.VERSION }}
- draft: false
- prerelease: false
-
- - name: upload-android-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-android
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-android-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-android
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-android-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-android
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-ios
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-ios
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-ios
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv4-bitcode
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-ios-bitcode
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv3-bitcode
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-ios-bitcode
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ios-opencv2-bitcode
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-ios-bitcode
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-armlinux-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-armlinux
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-armlinux-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-armlinux
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-armlinux-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-armlinux
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-macos-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-macos
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-macos-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-macos
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-macos-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-macos
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2015-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2015
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2015-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2015
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2015-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2015
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2017-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2017
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2017-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2017
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2017-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2017
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2019-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2019
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2019-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2019
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2019-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2019
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2022-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-windows-vs2022
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2022-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-windows-vs2022
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-windows-vs2022-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-windows-vs2022
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-1804-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-1804
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-1804-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-1804
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-1804-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-ubuntu-1804
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2004-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-2004
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2004-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-2004
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2004-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-ubuntu-2004
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2204-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-ubuntu-2204
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2204-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-ubuntu-2204
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-ubuntu-2204-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-ubuntu-2204
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-webassembly-opencv4
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-4.6.0-webassembly
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-webassembly-opencv3
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-3.4.18-webassembly
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
-
- - name: upload-webassembly-opencv2
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PACKAGENAME: opencv-mobile-2.4.13.7-webassembly
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: artifacts/${{ env.PACKAGENAME }}/${{ env.PACKAGENAME }}.zip
- asset_name: ${{ env.PACKAGENAME }}.zip
- asset_content_type: application/zip
+ name: Release ${{ needs.setup.outputs.VERSION }}
+ files: artifacts/*/*.zip
diff --git a/README.md b/README.md
index d62a3f9..2b87c1c 100644
--- a/README.md
+++ b/README.md
@@ -13,111 +13,128 @@


-✔️ This project provides the minimal build of opencv library for the **Android**, **iOS** and **ARM Linux** platforms.
+:heavy_check_mark: This project provides the minimal build of opencv library for the **Android**, **iOS** and **ARM Linux** platforms.
-✔️ Packages for **Windows**, **Linux**, **MacOS** and **WebAssembly** are available now.
+:heavy_check_mark: Packages for **Windows**, **Linux**, **MacOS** and **WebAssembly** are available now.
-✔️ We provide prebuild binary packages for opencv **2.4.13.7**, **3.4.18** and **4.6.0**.
+:heavy_check_mark: We provide prebuild binary packages for opencv **2.4.13.7**, **3.4.20** and **4.8.0**.
-✔️ We also provide prebuild binary package for **iOS with bitcode enabled**, that the official package lacks.
+:heavy_check_mark: We also provide prebuild binary package for **iOS/iOS-Simulator with bitcode enabled**, that the official package lacks.
-✔️ All the binaries are compiled from source on github action, **no virus**, **no backdoor**, **no secret code**.
+:heavy_check_mark: We also provide prebuild binary package for **Mac-Catalyst** and **Apple xcframework**, that the official package lacks.
-|opencv 4.6.0 android|package size|
-|---|---|
-|The official opencv|225MB|
-|opencv-mobile|17.1MB|
+:heavy_check_mark: All the binaries are compiled from source on github action, **no virus**, **no backdoor**, **no secret code**.
-|opencv 4.6.0 ios|package size|
-|---|---|
-|The official opencv|182MB|
-|opencv-mobile|15.6MB|
+|opencv 4.8.0 android|package size|
+|:-:|:-:|
+|The official opencv|189 MB|
+|opencv-mobile|17.7 MB|
-|opencv 4.6.0 ios with bitcode|package size|
-|---|---|
-|The official opencv|missing :(|
-|opencv-mobile|54.6MB|
+|opencv 4.8.0 ios|package size|package size with bitcode|
+|:-:|:-:|:-:|
+|The official opencv|197 MB|missing :(|
+|opencv-mobile|9.88 MB|34 MB|
# Download
-## Android
+https://github.com/nihui/opencv-mobile/releases/latest
-(armeabi-v7a, arm64-v8a, x86, x86_64) build with ndk r25b and android api 24.
+|Platform|Arch|opencv-2.4.13.7|opencv-3.4.20|opencv-4.8.0|
+|:-:|:-:|:-:|:-:|:-:|
+|Android|armeabi-v7a
arm64-v8a
x86
x86_64|[![download-icon]][opencv2-android-url]|[![download-icon]][opencv3-android-url]|[![download-icon]][opencv4-android-url]|
+|iOS|armv7
arm64
arm64e|[![download-icon]][opencv2-ios-url]
[![bitcode-icon]][opencv2-ios-bitcode-url]|[![download-icon]][opencv3-ios-url]
[![bitcode-icon]][opencv3-ios-bitcode-url]|[![download-icon]][opencv4-ios-url]
[![bitcode-icon]][opencv4-ios-bitcode-url]|
+|iOS-Simulator|i386
x86_64
arm64|[![download-icon]][opencv2-ios-simulator-url]
[![bitcode-icon]][opencv2-ios-simulator-bitcode-url]|[![download-icon]][opencv3-ios-simulator-url]
[![bitcode-icon]][opencv3-ios-simulator-bitcode-url]|[![download-icon]][opencv4-ios-simulator-url]
[![bitcode-icon]][opencv4-ios-simulator-bitcode-url]|
+|MacOS|x86_64
arm64|[![download-icon]][opencv2-macos-url]|[![download-icon]][opencv3-macos-url]|[![download-icon]][opencv4-macos-url]|
+|Mac-Catalyst|x86_64
arm64|[![download-icon]][opencv2-mac-catalyst-url]
[![bitcode-icon]][opencv2-mac-catalyst-bitcode-url]|[![download-icon]][opencv3-mac-catalyst-url]
[![bitcode-icon]][opencv3-mac-catalyst-bitcode-url]|[![download-icon]][opencv4-mac-catalyst-url]
[![bitcode-icon]][opencv4-mac-catalyst-bitcode-url]|
+|Apple
xcframework|ios
(armv7,arm64,arm64e)
ios-simulator
(i386,x86_64,arm64)
ios-maccatalyst
(x86_64,arm64)
macos
(x86_64,arm64)|[![download-icon]][opencv2-apple-url]
[![bitcode-icon]][opencv2-apple-bitcode-url]|[![download-icon]][opencv3-apple-url]
[![bitcode-icon]][opencv3-apple-bitcode-url]|[![download-icon]][opencv4-apple-url]
[![bitcode-icon]][opencv4-apple-bitcode-url]|
+|ARM-Linux|arm-linux-gnueabi
arm-linux-gnueabihf
aarch64-linux-gnu|[![download-icon]][opencv2-armlinux-url]|[![download-icon]][opencv3-armlinux-url]|[![download-icon]][opencv4-armlinux-url]|
+|Windows-VS2015|x86
x64|[![download-icon]][opencv2-windows-vs2015-url]|[![download-icon]][opencv3-windows-vs2015-url]|[![download-icon]][opencv4-windows-vs2015-url]|
+|Windows-VS2017|x86
x64|[![download-icon]][opencv2-windows-vs2017-url]|[![download-icon]][opencv3-windows-vs2017-url]|[![download-icon]][opencv4-windows-vs2017-url]|
+|Windows-VS2019|x86
x64|[![download-icon]][opencv2-windows-vs2019-url]|[![download-icon]][opencv3-windows-vs2019-url]|[![download-icon]][opencv4-windows-vs2019-url]|
+|Windows-VS2022|x86
x64|[![download-icon]][opencv2-windows-vs2022-url]|[![download-icon]][opencv3-windows-vs2022-url]|[![download-icon]][opencv4-windows-vs2022-url]|
+|Ubuntu-20.04|x86_64|[![download-icon]][opencv2-ubuntu-2004-url]|[![download-icon]][opencv3-ubuntu-2004-url]|[![download-icon]][opencv4-ubuntu-2004-url]|
+|Ubuntu-22.04|x86_64|[![download-icon]][opencv2-ubuntu-2204-url]|[![download-icon]][opencv3-ubuntu-2204-url]|[![download-icon]][opencv4-ubuntu-2204-url]|
+|WebAssembly|basic
simd
threads
simd+threads|[![download-icon]][opencv2-webassembly-url]|[![download-icon]][opencv3-webassembly-url]|[![download-icon]][opencv4-webassembly-url]|
-* [opencv-mobile-2.4.13.7-android.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-android.zip)
-* [opencv-mobile-3.4.18-android.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-android.zip)
-* [opencv-mobile-4.6.0-android.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-android.zip)
+[download-icon]: https://img.shields.io/badge/download-blue?style=for-the-badge
+[bitcode-icon]: https://img.shields.io/badge/+bitcode-blue?style=for-the-badge
-## iOS
+[opencv2-android-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-android.zip
+[opencv3-android-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-android.zip
+[opencv4-android-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-android.zip
-(armv7, arm64, arm64e, i386, x86_64) build with Xcode 12.4.
+[opencv2-ios-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ios.zip
+[opencv3-ios-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ios.zip
+[opencv4-ios-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ios.zip
-* [opencv-mobile-2.4.13.7-ios.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-ios.zip)
-* [opencv-mobile-3.4.18-ios.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-ios.zip)
-* [opencv-mobile-4.6.0-ios.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-ios.zip)
+[opencv2-ios-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ios-bitcode.zip
+[opencv3-ios-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ios-bitcode.zip
+[opencv4-ios-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ios-bitcode.zip
-## iOS with bitcode
+[opencv2-ios-simulator-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ios-simulator.zip
+[opencv3-ios-simulator-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ios-simulator.zip
+[opencv4-ios-simulator-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ios-simulator.zip
-(armv7, arm64, arm64e, i386, x86_64) build with Xcode 12.4.
+[opencv2-ios-simulator-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ios-simulator-bitcode.zip
+[opencv3-ios-simulator-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ios-simulator-bitcode.zip
+[opencv4-ios-simulator-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ios-simulator-bitcode.zip
-* [opencv-mobile-2.4.13.7-ios-bitcode.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-ios-bitcode.zip)
-* [opencv-mobile-3.4.18-ios-bitcode.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-ios-bitcode.zip)
-* [opencv-mobile-4.6.0-ios-bitcode.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-ios-bitcode.zip)
+[opencv2-macos-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-macos.zip
+[opencv3-macos-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-macos.zip
+[opencv4-macos-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-macos.zip
-## ARM Linux
+[opencv2-mac-catalyst-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-mac-catalyst.zip
+[opencv3-mac-catalyst-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-mac-catalyst.zip
+[opencv4-mac-catalyst-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-mac-catalyst.zip
-(arm-linux-gnueabi, arm-linux-gnueabihf, aarch64-linux-gnu) build with ubuntu cross compiler.
+[opencv2-mac-catalyst-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-mac-catalyst-bitcode.zip
+[opencv3-mac-catalyst-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-mac-catalyst-bitcode.zip
+[opencv4-mac-catalyst-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-mac-catalyst-bitcode.zip
-* [opencv-mobile-2.4.13.7-armlinux.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-armlinux.zip)
-* [opencv-mobile-3.4.18-armlinux.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-armlinux.zip)
-* [opencv-mobile-4.6.0-armlinux.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-armlinux.zip)
+[opencv2-apple-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-apple.zip
+[opencv3-apple-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-apple.zip
+[opencv4-apple-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-apple.zip
-## Windows
+[opencv2-apple-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-apple-bitcode.zip
+[opencv3-apple-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-apple-bitcode.zip
+[opencv4-apple-bitcode-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-apple-bitcode.zip
-(x86, x64) build with VS2015, VS2017, VS2019 and VS2022.
+[opencv2-armlinux-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-armlinux.zip
+[opencv3-armlinux-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-armlinux.zip
+[opencv4-armlinux-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-armlinux.zip
-* [opencv-mobile-2.4.13.7-windows-vs2015.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-windows-vs2015.zip)
-* [opencv-mobile-2.4.13.7-windows-vs2017.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-windows-vs2017.zip)
-* [opencv-mobile-2.4.13.7-windows-vs2019.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-windows-vs2019.zip)
-* [opencv-mobile-2.4.13.7-windows-vs2022.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-windows-vs2022.zip)
-* [opencv-mobile-3.4.18-windows-vs2015.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-windows-vs2015.zip)
-* [opencv-mobile-3.4.18-windows-vs2017.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-windows-vs2017.zip)
-* [opencv-mobile-3.4.18-windows-vs2019.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-windows-vs2019.zip)
-* [opencv-mobile-3.4.18-windows-vs2022.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-windows-vs2022.zip)
-* [opencv-mobile-4.6.0-windows-vs2015.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-windows-vs2015.zip)
-* [opencv-mobile-4.6.0-windows-vs2017.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-windows-vs2017.zip)
-* [opencv-mobile-4.6.0-windows-vs2019.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-windows-vs2019.zip)
-* [opencv-mobile-4.6.0-windows-vs2022.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-windows-vs2022.zip)
+[opencv2-windows-vs2015-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-windows-vs2015.zip
+[opencv3-windows-vs2015-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-windows-vs2015.zip
+[opencv4-windows-vs2015-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-windows-vs2015.zip
-## Linux
+[opencv2-windows-vs2017-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-windows-vs2017.zip
+[opencv3-windows-vs2017-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-windows-vs2017.zip
+[opencv4-windows-vs2017-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-windows-vs2017.zip
-(x86_64) build on Ubuntu-18.04, 20.04 and 22.04.
+[opencv2-windows-vs2019-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-windows-vs2019.zip
+[opencv3-windows-vs2019-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-windows-vs2019.zip
+[opencv4-windows-vs2019-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-windows-vs2019.zip
-* [opencv-mobile-2.4.13.7-ubuntu-1804.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-ubuntu-1804.zip)
-* [opencv-mobile-2.4.13.7-ubuntu-2004.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-ubuntu-2004.zip)
-* [opencv-mobile-2.4.13.7-ubuntu-2204.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-ubuntu-2204.zip)
-* [opencv-mobile-3.4.18-ubuntu-1804.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-ubuntu-1804.zip)
-* [opencv-mobile-3.4.18-ubuntu-2004.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-ubuntu-2004.zip)
-* [opencv-mobile-3.4.18-ubuntu-2204.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-ubuntu-2204.zip)
-* [opencv-mobile-4.6.0-ubuntu-1804.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-ubuntu-1804.zip)
-* [opencv-mobile-4.6.0-ubuntu-2004.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-ubuntu-2004.zip)
-* [opencv-mobile-4.6.0-ubuntu-2204.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-ubuntu-2204.zip)
+[opencv2-windows-vs2022-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-windows-vs2022.zip
+[opencv3-windows-vs2022-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-windows-vs2022.zip
+[opencv4-windows-vs2022-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-windows-vs2022.zip
-## MacOS
+[opencv2-ubuntu-2004-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ubuntu-2004.zip
+[opencv3-ubuntu-2004-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ubuntu-2004.zip
+[opencv4-ubuntu-2004-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ubuntu-2004.zip
-(x86_64, arm64) build with Xcode 12.4.
+[opencv2-ubuntu-2204-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-ubuntu-2204.zip
+[opencv3-ubuntu-2204-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-ubuntu-2204.zip
+[opencv4-ubuntu-2204-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-ubuntu-2204.zip
-* [opencv-mobile-2.4.13.7-macos.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-macos.zip)
-* [opencv-mobile-3.4.18-macos.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-macos.zip)
-* [opencv-mobile-4.6.0-macos.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-macos.zip)
+[opencv2-webassembly-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-2.4.13.7-webassembly.zip
+[opencv3-webassembly-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-3.4.20-webassembly.zip
+[opencv4-webassembly-url]: https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.0-webassembly.zip
-## WebAssembly
-
-(basic, simd, threads, simd+threads) build with Emscripten 2.0.8.
-
-* [opencv-mobile-2.4.13.7-webassembly.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-2.4.13.7-webassembly.zip)
-* [opencv-mobile-3.4.18-webassembly.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-3.4.18-webassembly.zip)
-* [opencv-mobile-4.6.0-webassembly.zip](https://github.com/nihui/opencv-mobile/releases/download/v16/opencv-mobile-4.6.0-webassembly.zip)
+* Android package build with ndk r25c and android api 24
+* iOS / iOS-Simulator / MacOS / Mac-Catalyst package build with Xcode 13.4.1
+* ARM Linux package build with cross compiler on Ubuntu-22.04
+* WebAssembly package build with Emscripten 3.1.28
# Usage Android
@@ -125,7 +142,7 @@
2. Modify ```/app/src/main/jni/CMakeListst.txt``` to find and link opencv
```cmake
-set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.6.0-android/sdk/native/jni)
+set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.8.0-android/sdk/native/jni)
find_package(OpenCV REQUIRED)
target_link_libraries(your_jni_target ${OpenCV_LIBS})
@@ -133,15 +150,16 @@ target_link_libraries(your_jni_target ${OpenCV_LIBS})
# Usage iOS and MacOS
-1. Extract archive, and drag ```opencv2.framework``` into your project
+1. Extract archive, and drag ```opencv2.framework``` or ```opencv2.xcframework``` into your project
# Usage ARM Linux, Windows, Linux, WebAssembly
1. Extract archive to ```/```
2. Modify ```/CMakeListst.txt``` to find and link opencv
+3. Pass ```-DOpenCV_STATIC=ON``` to cmake option for windows build
```cmake
-set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.6.0-armlinux/arm-linux-gnueabihf/lib/cmake/opencv4)
+set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.8.0-armlinux/arm-linux-gnueabihf/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
target_link_libraries(your_target ${OpenCV_LIBS})
@@ -151,14 +169,14 @@ target_link_libraries(your_target ${OpenCV_LIBS})
**step 1. download opencv source**
```shell
-wget -q https://github.com/opencv/opencv/archive/4.6.0.zip -O opencv-4.6.0.zip
-unzip -q opencv-4.6.0.zip
-cd opencv-4.6.0
+wget -q https://github.com/opencv/opencv/archive/4.8.0.zip -O opencv-4.8.0.zip
+unzip -q opencv-4.8.0.zip
+cd opencv-4.8.0
```
**step 2. strip zlib dependency and use stb-based highgui implementation (optional)**
```shell
-patch -p1 -i ../opencv-4.6.0-no-zlib.patch
+patch -p1 -i ../opencv-4.8.0-no-zlib.patch
truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
rm -rf modules/highgui
@@ -167,7 +185,7 @@ cp -r ../highgui modules/
**step 3. patch opencv source for no-rtti build (optional)**
```shell
-patch -p1 -i ../opencv-4.6.0-no-rtti.patch
+patch -p1 -i ../opencv-4.8.0-no-rtti.patch
```
**step 4. apply your opencv options to opencv4_cmake_options.txt**
@@ -184,7 +202,7 @@ cmake -DCMAKE_INSTALL_PREFIX=install \
**step 6. make a package**
```shell
-zip -r -9 opencv-mobile-4.6.0.zip install
+zip -r -9 opencv-mobile-4.8.0.zip install
```
# Some notes
@@ -238,5 +256,3 @@ zip -r -9 opencv-mobile-4.6.0.zip install
|opencv_videoio|use android MediaCodec or ios AVFoundation api instead|
|opencv_videostab|do video stablization on powerful pc or server|
|opencv_viz|vtk is not available on mobile, write your own data visualization routines|
-
-
diff --git a/highgui/src/highgui.cpp b/highgui/src/highgui.cpp
index 6237543..e72741a 100644
--- a/highgui/src/highgui.cpp
+++ b/highgui/src/highgui.cpp
@@ -23,6 +23,9 @@
#include "exif.hpp"
#define STB_IMAGE_IMPLEMENTATION
+#if __ARM_NEON
+#define STBI_NEON
+#endif
#define STBI_NO_THREAD_LOCALS
#define STBI_ONLY_JPEG
#define STBI_ONLY_PNG
@@ -201,12 +204,16 @@ bool imwrite(const String& filename, InputArray _img, const std::vector& pa
else if (img.type() == CV_8UC3)
{
c = 3;
- cvtColor(img, img, COLOR_BGR2RGB);
+ Mat img2;
+ cvtColor(img, img2, COLOR_BGR2RGB);
+ img = img2;
}
else if (img.type() == CV_8UC4)
{
c = 4;
- cvtColor(img, img, COLOR_BGRA2RGBA);
+ Mat img2;
+ cvtColor(img, img2, COLOR_BGRA2RGBA);
+ img = img2;
}
else
{
@@ -368,12 +375,16 @@ bool imencode(const String& ext, InputArray _img, std::vector& buf, const
else if (img.type() == CV_8UC3)
{
c = 3;
- cvtColor(img, img, COLOR_BGR2RGB);
+ Mat img2;
+ cvtColor(img, img2, COLOR_BGR2RGB);
+ img = img2;
}
else if (img.type() == CV_8UC4)
{
c = 4;
- cvtColor(img, img, COLOR_BGRA2RGBA);
+ Mat img2;
+ cvtColor(img, img2, COLOR_BGRA2RGBA);
+ img = img2;
}
else
{
diff --git a/highgui/src/stb_image.h b/highgui/src/stb_image.h
index d60371b..5e807a0 100644
--- a/highgui/src/stb_image.h
+++ b/highgui/src/stb_image.h
@@ -1,4 +1,4 @@
-/* stb_image - v2.27 - public domain image loader - http://nothings.org/stb
+/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb
no warranty implied; use at your own risk
Do this:
@@ -48,6 +48,7 @@ LICENSE
RECENT REVISION HISTORY:
+ 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff
2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes
2.26 (2020-07-13) many minor fixes
2.25 (2020-02-02) fix warnings
@@ -108,7 +109,7 @@ RECENT REVISION HISTORY:
Cass Everitt Ryamond Barbiero github:grim210
Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw
Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus
- Josh Tobin Matthew Gregan github:poppolopoppo
+ Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo
Julian Raschke Gregory Mullen Christian Floisand github:darealshinji
Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007
Brad Weinberger Matvey Cherevko github:mosra
@@ -140,7 +141,7 @@ RECENT REVISION HISTORY:
// // ... x = width, y = height, n = # 8-bit components per pixel ...
// // ... replace '0' with '1'..'4' to force that many components per pixel
// // ... but 'n' will always be the number that it would have been if you said 0
-// stbi_image_free(data)
+// stbi_image_free(data);
//
// Standard parameters:
// int *x -- outputs image width in pixels
@@ -635,7 +636,7 @@ STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const ch
#endif
#endif
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__SYMBIAN32__)
typedef unsigned short stbi__uint16;
typedef signed short stbi__int16;
typedef unsigned int stbi__uint32;
@@ -1063,6 +1064,23 @@ static void *stbi__malloc_mad4(int a, int b, int c, int d, int add)
}
#endif
+// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow.
+static int stbi__addints_valid(int a, int b)
+{
+ if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow
+ if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0.
+ return a <= INT_MAX - b;
+}
+
+// returns 1 if the product of two signed shorts is valid, 0 on overflow.
+static int stbi__mul2shorts_valid(short a, short b)
+{
+ if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow
+ if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX/b; // product is positive, so similar to mul2sizes_valid
+ if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN
+ return a >= SHRT_MIN / b;
+}
+
// stbi__err - error
// stbi__errpf - error returning pointer to float
// stbi__errpuc - error returning pointer to unsigned char
@@ -1985,9 +2003,12 @@ static int stbi__build_huffman(stbi__huffman *h, int *count)
int i,j,k=0;
unsigned int code;
// build size list for each symbol (from JPEG spec)
- for (i=0; i < 16; ++i)
- for (j=0; j < count[i]; ++j)
+ for (i=0; i < 16; ++i) {
+ for (j=0; j < count[i]; ++j) {
h->size[k++] = (stbi_uc) (i+1);
+ if(k >= 257) return stbi__err("bad size list","Corrupt JPEG");
+ }
+ }
h->size[k] = 0;
// compute actual symbols (from jpeg spec)
@@ -2112,6 +2133,8 @@ stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h)
// convert the huffman code to the symbol id
c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];
+ if(c < 0 || c >= 256) // symbol id out of bounds!
+ return -1;
STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]);
// convert the id to a symbol
@@ -2130,6 +2153,7 @@ stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)
unsigned int k;
int sgn;
if (j->code_bits < n) stbi__grow_buffer_unsafe(j);
+ if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing
sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative)
k = stbi_lrot(j->code_buffer, n);
@@ -2144,6 +2168,7 @@ stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)
{
unsigned int k;
if (j->code_bits < n) stbi__grow_buffer_unsafe(j);
+ if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing
k = stbi_lrot(j->code_buffer, n);
j->code_buffer = k & ~stbi__bmask[n];
k &= stbi__bmask[n];
@@ -2155,6 +2180,7 @@ stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)
{
unsigned int k;
if (j->code_bits < 1) stbi__grow_buffer_unsafe(j);
+ if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing
k = j->code_buffer;
j->code_buffer <<= 1;
--j->code_bits;
@@ -2192,8 +2218,10 @@ static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman
memset(data,0,64*sizeof(data[0]));
diff = t ? stbi__extend_receive(j, t) : 0;
+ if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta","Corrupt JPEG");
dc = j->img_comp[b].dc_pred + diff;
j->img_comp[b].dc_pred = dc;
+ if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG");
data[0] = (short) (dc * dequant[0]);
// decode AC components, see JPEG spec
@@ -2207,6 +2235,7 @@ static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman
if (r) { // fast-AC path
k += (r >> 4) & 15; // run
s = r & 15; // combined length
+ if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available");
j->code_buffer <<= s;
j->code_bits -= s;
// decode into unzigzag'd location
@@ -2246,8 +2275,10 @@ static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__
if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG");
diff = t ? stbi__extend_receive(j, t) : 0;
+ if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG");
dc = j->img_comp[b].dc_pred + diff;
j->img_comp[b].dc_pred = dc;
+ if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG");
data[0] = (short) (dc * (1 << j->succ_low));
} else {
// refinement scan for DC coefficient
@@ -2282,6 +2313,7 @@ static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__
if (r) { // fast-AC path
k += (r >> 4) & 15; // run
s = r & 15; // combined length
+ if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available");
j->code_buffer <<= s;
j->code_bits -= s;
zig = stbi__jpeg_dezigzag[k++];
@@ -3102,6 +3134,7 @@ static int stbi__process_marker(stbi__jpeg *z, int m)
sizes[i] = stbi__get8(z->s);
n += sizes[i];
}
+ if(n > 256) return stbi__err("bad DHT header","Corrupt JPEG"); // Loop over i < n would write past end of values!
L -= 17;
if (tc == 0) {
if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0;
@@ -3351,6 +3384,28 @@ static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)
return 1;
}
+static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j)
+{
+ // some JPEGs have junk at end, skip over it but if we find what looks
+ // like a valid marker, resume there
+ while (!stbi__at_eof(j->s)) {
+ int x = stbi__get8(j->s);
+ while (x == 255) { // might be a marker
+ if (stbi__at_eof(j->s)) return STBI__MARKER_none;
+ x = stbi__get8(j->s);
+ if (x != 0x00 && x != 0xff) {
+ // not a stuffed zero or lead-in to another marker, looks
+ // like an actual marker, return it
+ return x;
+ }
+ // stuffed zero has x=0 now which ends the loop, meaning we go
+ // back to regular scan loop.
+ // repeated 0xff keeps trying to read the next byte of the marker.
+ }
+ }
+ return STBI__MARKER_none;
+}
+
// decode image to YCbCr format
static int stbi__decode_jpeg_image(stbi__jpeg *j)
{
@@ -3367,25 +3422,22 @@ static int stbi__decode_jpeg_image(stbi__jpeg *j)
if (!stbi__process_scan_header(j)) return 0;
if (!stbi__parse_entropy_coded_data(j)) return 0;
if (j->marker == STBI__MARKER_none ) {
- // handle 0s at the end of image data from IP Kamera 9060
- while (!stbi__at_eof(j->s)) {
- int x = stbi__get8(j->s);
- if (x == 255) {
- j->marker = stbi__get8(j->s);
- break;
- }
- }
+ j->marker = stbi__skip_jpeg_junk_at_end(j);
// if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0
}
+ m = stbi__get_marker(j);
+ if (STBI__RESTART(m))
+ m = stbi__get_marker(j);
} else if (stbi__DNL(m)) {
int Ld = stbi__get16be(j->s);
stbi__uint32 NL = stbi__get16be(j->s);
if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG");
if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG");
+ m = stbi__get_marker(j);
} else {
- if (!stbi__process_marker(j, m)) return 0;
+ if (!stbi__process_marker(j, m)) return 1;
+ m = stbi__get_marker(j);
}
- m = stbi__get_marker(j);
}
if (j->progressive)
stbi__jpeg_finish(j);
@@ -3976,6 +4028,7 @@ static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int re
unsigned char* result;
stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg));
if (!j) return stbi__errpuc("outofmem", "Out of memory");
+ memset(j, 0, sizeof(stbi__jpeg));
STBI_NOTUSED(ri);
j->s = s;
stbi__setup_jpeg(j);
@@ -3989,6 +4042,7 @@ static int stbi__jpeg_test(stbi__context *s)
int r;
stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg));
if (!j) return stbi__err("outofmem", "Out of memory");
+ memset(j, 0, sizeof(stbi__jpeg));
j->s = s;
stbi__setup_jpeg(j);
r = stbi__decode_jpeg_header(j, STBI__SCAN_type);
@@ -4014,6 +4068,7 @@ static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)
int result;
stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg)));
if (!j) return stbi__err("outofmem", "Out of memory");
+ memset(j, 0, sizeof(stbi__jpeg));
j->s = s;
result = stbi__jpeg_info_raw(j, x, y, comp);
STBI_FREE(j);
@@ -4256,11 +4311,12 @@ static int stbi__parse_huffman_block(stbi__zbuf *a)
a->zout = zout;
return 1;
}
+ if (z >= 286) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data
z -= 257;
len = stbi__zlength_base[z];
if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]);
z = stbi__zhuffman_decode(a, &a->z_distance);
- if (z < 0) return stbi__err("bad huffman code","Corrupt PNG");
+ if (z < 0 || z >= 30) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data
dist = stbi__zdist_base[z];
if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]);
if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG");
@@ -4955,7 +5011,7 @@ STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)
static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set;
static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set;
-STBIDEF void stbi__unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply)
+STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply)
{
stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply;
stbi__unpremultiply_on_load_set = 1;
@@ -5064,14 +5120,13 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
if (!pal_img_n) {
s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);
if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode");
- if (scan == STBI__SCAN_header) return 1;
} else {
// if paletted, then pal_n is our final components, and
// img_n is # components to decompress/filter.
s->img_n = 1;
if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG");
- // if SCAN_header, have to scan to see if we have a tRNS
}
+ // even with SCAN_header, have to scan to see if we have a tRNS
break;
}
@@ -5103,6 +5158,8 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG");
if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG");
has_trans = 1;
+ // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now.
+ if (scan == STBI__SCAN_header) { ++s->img_n; return 1; }
if (z->depth == 16) {
for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is
} else {
@@ -5115,7 +5172,13 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
case STBI__PNG_TYPE('I','D','A','T'): {
if (first) return stbi__err("first not IHDR", "Corrupt PNG");
if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG");
- if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; }
+ if (scan == STBI__SCAN_header) {
+ // header scan definitely stops at first IDAT
+ if (pal_img_n)
+ s->img_n = pal_img_n;
+ return 1;
+ }
+ if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes");
if ((int)(ioff + c.length) < (int)ioff) return 0;
if (ioff + c.length > idata_limit) {
stbi__uint32 idata_limit_old = idata_limit;
@@ -5498,8 +5561,22 @@ static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req
psize = (info.offset - info.extra_read - info.hsz) >> 2;
}
if (psize == 0) {
- if (info.offset != s->callback_already_read + (s->img_buffer - s->img_buffer_original)) {
- return stbi__errpuc("bad offset", "Corrupt BMP");
+ // accept some number of extra bytes after the header, but if the offset points either to before
+ // the header ends or implies a large amount of extra data, reject the file as malformed
+ int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original);
+ int header_limit = 1024; // max we actually read is below 256 bytes currently.
+ int extra_data_limit = 256*4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size.
+ if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) {
+ return stbi__errpuc("bad header", "Corrupt BMP");
+ }
+ // we established that bytes_read_so_far is positive and sensible.
+ // the first half of this test rejects offsets that are either too small positives, or
+ // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn
+ // ensures the number computed in the second half of the test can't overflow.
+ if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) {
+ return stbi__errpuc("bad offset", "Corrupt BMP");
+ } else {
+ stbi__skip(s, info.offset - bytes_read_so_far);
}
}
@@ -7187,12 +7264,12 @@ static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int re
// Run
value = stbi__get8(s);
count -= 128;
- if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); }
+ if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); }
for (z = 0; z < count; ++z)
scanline[i++ * 4 + k] = value;
} else {
// Dump
- if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); }
+ if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); }
for (z = 0; z < count; ++z)
scanline[i++ * 4 + k] = stbi__get8(s);
}
@@ -7446,10 +7523,17 @@ static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req
out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0);
if (!out) return stbi__errpuc("outofmem", "Out of memory");
- stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8));
+ if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) {
+ STBI_FREE(out);
+ return stbi__errpuc("bad PNM", "PNM file truncated");
+ }
if (req_comp && req_comp != s->img_n) {
- out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);
+ if (ri->bits_per_channel == 16) {
+ out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y);
+ } else {
+ out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);
+ }
if (out == NULL) return out; // stbi__convert_format frees input on failure
}
return out;
@@ -7486,6 +7570,8 @@ static int stbi__pnm_getinteger(stbi__context *s, char *c)
while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {
value = value*10 + (*c - '0');
*c = (char) stbi__get8(s);
+ if((value > 214748364) || (value == 214748364 && *c > '7'))
+ return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int");
}
return value;
@@ -7516,9 +7602,13 @@ static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)
stbi__pnm_skip_whitespace(s, &c);
*x = stbi__pnm_getinteger(s, &c); // read width
+ if(*x == 0)
+ return stbi__err("invalid width", "PPM image header had zero or overflowing width");
stbi__pnm_skip_whitespace(s, &c);
*y = stbi__pnm_getinteger(s, &c); // read height
+ if (*y == 0)
+ return stbi__err("invalid width", "PPM image header had zero or overflowing width");
stbi__pnm_skip_whitespace(s, &c);
maxv = stbi__pnm_getinteger(s, &c); // read max value
diff --git a/opencv-2.4.13.7-enable-cxx11.patch b/opencv-2.4.13.7-enable-cxx11.patch
new file mode 100644
index 0000000..9e03ddd
--- /dev/null
+++ b/opencv-2.4.13.7-enable-cxx11.patch
@@ -0,0 +1,11 @@
+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 2023-08-06 19:27:16.226755305 +0800
+@@ -114,3 +114,7 @@ elseif(MINGW)
+ set(OpenCV_ARCH x86)
+ endif()
+ endif()
++
++set(CMAKE_CXX_STANDARD 11)
++set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
++set(CMAKE_CXX_EXTENSIONS OFF)
diff --git a/opencv-2.4.13.7-link-openmp.patch b/opencv-2.4.13.7-link-openmp.patch
new file mode 100644
index 0000000..b6c1ae0
--- /dev/null
+++ b/opencv-2.4.13.7-link-openmp.patch
@@ -0,0 +1,16 @@
+diff -Nuarp opencv-2.4.13.7.orig/modules/core/CMakeLists.txt opencv-2.4.13.7/modules/core/CMakeLists.txt
+--- opencv-2.4.13.7.orig/modules/core/CMakeLists.txt 2018-07-02 20:41:56.000000000 +0800
++++ opencv-2.4.13.7/modules/core/CMakeLists.txt 2023-08-13 19:26:51.073833956 +0800
+@@ -52,7 +52,11 @@ else()
+ HEADERS ${lib_cuda_hdrs} ${lib_cuda_hdrs_detail})
+ endif()
+
+-ocv_create_module()
++if(HAVE_OPENMP AND DEFINED OpenMP_CXX_LIBRARIES AND OpenMP_CXX_LIBRARIES)
++ ocv_create_module(${OpenMP_CXX_LIBRARIES})
++else()
++ ocv_create_module()
++endif()
+ ocv_add_precompiled_headers(${the_module})
+
+ ocv_add_accuracy_tests()
diff --git a/opencv-2.4.13.7-newer-msvc.patch b/opencv-2.4.13.7-newer-msvc.patch
new file mode 100644
index 0000000..4eb90ae
--- /dev/null
+++ b/opencv-2.4.13.7-newer-msvc.patch
@@ -0,0 +1,28 @@
+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 2023-08-13 22:11:10.193931771 +0800
+@@ -85,6 +85,10 @@ elseif(MSVC)
+ set(OpenCV_RUNTIME vc14)
+ elseif(MSVC_VERSION MATCHES "^191[0-9]$")
+ set(OpenCV_RUNTIME vc15)
++ elseif(MSVC_VERSION MATCHES "^192[0-9]$")
++ set(OpenCV_RUNTIME vc16)
++ elseif(MSVC_VERSION MATCHES "^193[0-9]$")
++ set(OpenCV_RUNTIME vc17)
+ endif()
+ elseif(MINGW)
+ set(OpenCV_RUNTIME mingw)
+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 2023-08-13 22:11:03.358965110 +0800
+@@ -104,6 +104,10 @@ elseif(MSVC)
+ set(OpenCV_RUNTIME vc14)
+ elseif(MSVC_VERSION MATCHES "^191[0-9]$")
+ set(OpenCV_RUNTIME vc15)
++ elseif(MSVC_VERSION MATCHES "^192[0-9]$")
++ set(OpenCV_RUNTIME vc16)
++ elseif(MSVC_VERSION MATCHES "^193[0-9]$")
++ set(OpenCV_RUNTIME vc17)
+ endif()
+ elseif(MINGW)
+ set(OpenCV_RUNTIME mingw)
diff --git a/opencv-3.4.18-no-zlib.patch b/opencv-3.4.18-no-zlib.patch
deleted file mode 100644
index f272a34..0000000
--- a/opencv-3.4.18-no-zlib.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/persistence.hpp opencv-3.4.18/modules/core/src/persistence.hpp
---- opencv-3.4.18.orig/modules/core/src/persistence.hpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/persistence.hpp 2022-11-16 17:35:02.415050987 +0800
-@@ -12,7 +12,7 @@
- #include
- #include
-
--#define USE_ZLIB 1
-+#define USE_ZLIB 0
- #if USE_ZLIB
- # ifndef _LFS64_LARGEFILE
- # define _LFS64_LARGEFILE 0
diff --git a/opencv-3.4.20-fix-emscripten-include.patch b/opencv-3.4.20-fix-emscripten-include.patch
new file mode 100644
index 0000000..387633d
--- /dev/null
+++ b/opencv-3.4.20-fix-emscripten-include.patch
@@ -0,0 +1,11 @@
+diff -Nuarp opencv-3.4.20.orig/modules/core/include/opencv2/core/hal/intrin_wasm.hpp opencv-3.4.20/modules/core/include/opencv2/core/hal/intrin_wasm.hpp
+--- opencv-3.4.20.orig/modules/core/include/opencv2/core/hal/intrin_wasm.hpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/include/opencv2/core/hal/intrin_wasm.hpp 2023-08-06 19:09:44.971191540 +0800
+@@ -8,6 +8,7 @@
+ #include
+ #include
+ #include
++#include
+ #include "opencv2/core/saturate.hpp"
+
+ #define CV_SIMD128 1
diff --git a/opencv-3.4.20-link-openmp.patch b/opencv-3.4.20-link-openmp.patch
new file mode 100644
index 0000000..6768161
--- /dev/null
+++ b/opencv-3.4.20-link-openmp.patch
@@ -0,0 +1,14 @@
+diff -Nuarp opencv-3.4.20.orig/modules/core/CMakeLists.txt opencv-3.4.20/modules/core/CMakeLists.txt
+--- opencv-3.4.20.orig/modules/core/CMakeLists.txt 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/CMakeLists.txt 2023-08-13 19:39:56.659037366 +0800
+@@ -31,6 +31,10 @@ if(HAVE_TBB)
+ list(APPEND extra_libs tbb)
+ endif()
+
++if(HAVE_OPENMP AND DEFINED OpenMP_CXX_LIBRARIES AND OpenMP_CXX_LIBRARIES)
++ list(APPEND extra_libs ${OpenMP_CXX_LIBRARIES})
++endif()
++
+ if(DEFINED WINRT AND NOT DEFINED ENABLE_WINRT_MODE_NATIVE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
+ endif()
diff --git a/opencv-3.4.18-no-rtti.patch b/opencv-3.4.20-no-rtti.patch
similarity index 77%
rename from opencv-3.4.18-no-rtti.patch
rename to opencv-3.4.20-no-rtti.patch
index 59eb719..812f7a6 100644
--- a/opencv-3.4.18-no-rtti.patch
+++ b/opencv-3.4.20-no-rtti.patch
@@ -1,6 +1,6 @@
-diff -Nuarp opencv-3.4.18.orig/modules/core/include/opencv2/core/bindings_utils.hpp opencv-3.4.18/modules/core/include/opencv2/core/bindings_utils.hpp
---- opencv-3.4.18.orig/modules/core/include/opencv2/core/bindings_utils.hpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/include/opencv2/core/bindings_utils.hpp 2022-11-16 17:32:38.096053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/include/opencv2/core/bindings_utils.hpp opencv-3.4.20/modules/core/include/opencv2/core/bindings_utils.hpp
+--- opencv-3.4.20.orig/modules/core/include/opencv2/core/bindings_utils.hpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/include/opencv2/core/bindings_utils.hpp 2023-08-06 11:05:19.958163689 +0800
@@ -185,12 +185,6 @@ void generateVectorOfMat(size_t len, int
}
@@ -29,9 +29,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/include/opencv2/core/bindings_utils.
return p.getArrayResult();
}
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/async.cpp opencv-3.4.18/modules/core/src/async.cpp
---- opencv-3.4.18.orig/modules/core/src/async.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/async.cpp 2022-11-16 17:32:38.097053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/async.cpp opencv-3.4.20/modules/core/src/async.cpp
+--- opencv-3.4.20.orig/modules/core/src/async.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/async.cpp 2023-08-06 11:05:19.958163689 +0800
@@ -118,7 +118,6 @@ struct AsyncArray::Impl
if (has_exception)
{
@@ -40,9 +40,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/async.cpp opencv-3.4.18/modules/
}
CV_Error(Error::StsInternal, "AsyncArray: invalid state of 'has_result = true'");
}
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/bindings_utils.cpp opencv-3.4.18/modules/core/src/bindings_utils.cpp
---- opencv-3.4.18.orig/modules/core/src/bindings_utils.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/bindings_utils.cpp 2022-11-16 17:32:38.098053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/bindings_utils.cpp opencv-3.4.20/modules/core/src/bindings_utils.cpp
+--- opencv-3.4.20.orig/modules/core/src/bindings_utils.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/bindings_utils.cpp 2023-08-06 11:05:19.958163689 +0800
@@ -15,7 +15,7 @@ String dumpInputArray(InputArray argumen
return "InputArray: noArray()";
std::ostringstream ss;
@@ -123,9 +123,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/bindings_utils.cpp opencv-3.4.18
return ss.str();
}
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/command_line_parser.cpp opencv-3.4.18/modules/core/src/command_line_parser.cpp
---- opencv-3.4.18.orig/modules/core/src/command_line_parser.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/command_line_parser.cpp 2022-11-16 17:32:38.099053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/command_line_parser.cpp opencv-3.4.20/modules/core/src/command_line_parser.cpp
+--- opencv-3.4.20.orig/modules/core/src/command_line_parser.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/command_line_parser.cpp 2023-08-06 11:05:19.958163689 +0800
@@ -124,7 +124,6 @@ static void from_str(const String& str,
void CommandLineParser::getByName(const String& name, bool space_delete, int type, void* dst) const
@@ -222,9 +222,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/command_line_parser.cpp opencv-3
}
return vec;
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/glob.cpp opencv-3.4.18/modules/core/src/glob.cpp
---- opencv-3.4.18.orig/modules/core/src/glob.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/glob.cpp 2022-11-16 17:32:38.099053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/glob.cpp opencv-3.4.20/modules/core/src/glob.cpp
+--- opencv-3.4.20.orig/modules/core/src/glob.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/glob.cpp 2023-08-06 11:05:19.958163689 +0800
@@ -231,7 +231,6 @@ static void glob_rec(const cv::String& d
if ((dir = opendir (directory.c_str())) != 0)
{
@@ -245,9 +245,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/glob.cpp opencv-3.4.18/modules/c
closedir(dir);
}
else
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/matrix.cpp opencv-3.4.18/modules/core/src/matrix.cpp
---- opencv-3.4.18.orig/modules/core/src/matrix.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/matrix.cpp 2022-11-16 17:32:38.100053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/matrix.cpp opencv-3.4.20/modules/core/src/matrix.cpp
+--- opencv-3.4.20.orig/modules/core/src/matrix.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/matrix.cpp 2023-08-06 11:05:19.958163689 +0800
@@ -640,18 +640,10 @@ void Mat::create(int d, const int* _size
#endif
if(!a)
@@ -287,10 +287,10 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/matrix.cpp opencv-3.4.18/modules
updateContinuityFlag();
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/parallel.cpp opencv-3.4.18/modules/core/src/parallel.cpp
---- opencv-3.4.18.orig/modules/core/src/parallel.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/parallel.cpp 2022-11-16 17:32:38.101053227 +0800
-@@ -335,29 +335,9 @@ namespace {
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/parallel.cpp opencv-3.4.20/modules/core/src/parallel.cpp
+--- opencv-3.4.20.orig/modules/core/src/parallel.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/parallel.cpp 2023-08-06 11:05:19.959163685 +0800
+@@ -338,29 +338,9 @@ namespace {
CV_TRACE_ARG_VALUE(range_end, "range.end", (int64)r.end);
#endif
@@ -320,7 +320,7 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/parallel.cpp opencv-3.4.18/modul
if (!ctx.is_rng_used && !(cv::theRNG() == ctx.rng))
ctx.is_rng_used = true;
-@@ -490,16 +470,10 @@ void parallel_for_(const cv::Range& rang
+@@ -493,16 +473,10 @@ void parallel_for_(const cv::Range& rang
isNotNestedRegion = CV_XADD(&flagNestedParallelFor, 1) == 0;
if (isNotNestedRegion)
{
@@ -337,9 +337,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/parallel.cpp opencv-3.4.18/modul
}
else // nested parallel_for_() calls are not parallelized
#endif // CV_PARALLEL_FRAMEWORK
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/persistence_c.cpp opencv-3.4.18/modules/core/src/persistence_c.cpp
---- opencv-3.4.18.orig/modules/core/src/persistence_c.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/persistence_c.cpp 2022-11-16 17:32:38.102053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/persistence_c.cpp opencv-3.4.20/modules/core/src/persistence_c.cpp
+--- opencv-3.4.20.orig/modules/core/src/persistence_c.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/persistence_c.cpp 2023-08-06 11:05:19.959163685 +0800
@@ -456,17 +456,10 @@ cvOpenFileStorage(const char* query, CvM
CV_Assert(fs);
memset( fs, 0, sizeof(*fs));
@@ -358,9 +358,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/persistence_c.cpp opencv-3.4.18/
}
/* closes file storage and deallocates buffers */
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/persistence_types.cpp opencv-3.4.18/modules/core/src/persistence_types.cpp
---- opencv-3.4.18.orig/modules/core/src/persistence_types.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/persistence_types.cpp 2022-11-16 17:32:38.102053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/persistence_types.cpp opencv-3.4.20/modules/core/src/persistence_types.cpp
+--- opencv-3.4.20.orig/modules/core/src/persistence_types.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/persistence_types.cpp 2023-08-06 11:05:19.959163685 +0800
@@ -756,13 +756,9 @@ static void* icvReadSeq( CvFileStorage*
flags |= CV_SEQ_FLAG_HOLE;
if( !strstr(flags_str, "untyped") )
@@ -375,10 +375,10 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/persistence_types.cpp opencv-3.4
}
}
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/system.cpp opencv-3.4.18/modules/core/src/system.cpp
---- opencv-3.4.18.orig/modules/core/src/system.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/system.cpp 2022-11-16 17:32:38.103053227 +0800
-@@ -1214,8 +1214,6 @@ void error( const Exception& exc )
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/system.cpp opencv-3.4.20/modules/core/src/system.cpp
+--- opencv-3.4.20.orig/modules/core/src/system.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/system.cpp 2023-08-06 11:05:19.959163685 +0800
+@@ -1259,8 +1259,6 @@ void error( const Exception& exc )
static volatile int* p = 0;
*p = 0;
}
@@ -387,7 +387,7 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/system.cpp opencv-3.4.18/modules
}
void error(int _code, const String& _err, const char* _func, const char* _file, int _line)
-@@ -2094,7 +2092,7 @@ inline bool parseOption(const std::strin
+@@ -2139,7 +2137,7 @@ inline bool parseOption(const std::strin
{
return false;
}
@@ -396,7 +396,7 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/system.cpp opencv-3.4.18/modules
}
template<>
-@@ -2119,7 +2117,7 @@ inline size_t parseOption(const std::str
+@@ -2164,7 +2162,7 @@ inline size_t parseOption(const std::str
return v * 1024 * 1024;
else if (suffixStr == "KB" || suffixStr == "Kb" || suffixStr == "kb")
return v * 1024;
@@ -405,7 +405,7 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/system.cpp opencv-3.4.18/modules
}
template<>
-@@ -2162,16 +2160,11 @@ static inline const char * envRead(const
+@@ -2207,16 +2205,11 @@ static inline const char * envRead(const
template
inline T read(const std::string & k, const T & defaultValue)
{
@@ -422,9 +422,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/system.cpp opencv-3.4.18/modules
return defaultValue;
}
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/umatrix.cpp opencv-3.4.18/modules/core/src/umatrix.cpp
---- opencv-3.4.18.orig/modules/core/src/umatrix.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/umatrix.cpp 2022-11-16 17:32:38.103053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/umatrix.cpp opencv-3.4.20/modules/core/src/umatrix.cpp
+--- opencv-3.4.20.orig/modules/core/src/umatrix.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/umatrix.cpp 2023-08-06 11:05:19.959163685 +0800
@@ -516,14 +516,9 @@ UMat Mat::getUMat(int accessFlags, UMatU
new_u->originalUMatData = u;
}
@@ -503,9 +503,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/umatrix.cpp opencv-3.4.18/module
CV_XADD(&u->refcount, -1);
CV_Assert(u->data != 0 && "Error mapping of UMat to host memory.");
return Mat();
-diff -Nuarp opencv-3.4.18.orig/modules/core/src/utils/filesystem.cpp opencv-3.4.18/modules/core/src/utils/filesystem.cpp
---- opencv-3.4.18.orig/modules/core/src/utils/filesystem.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/src/utils/filesystem.cpp 2022-11-16 17:32:38.103053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/utils/filesystem.cpp opencv-3.4.20/modules/core/src/utils/filesystem.cpp
+--- opencv-3.4.20.orig/modules/core/src/utils/filesystem.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/utils/filesystem.cpp 2023-08-06 11:05:19.960163681 +0800
@@ -492,14 +492,9 @@ cv::String getCacheDirectory(const char*
&& !utils::fs::isDirectory(default_cache_path))
{
@@ -521,9 +521,9 @@ diff -Nuarp opencv-3.4.18.orig/modules/core/src/utils/filesystem.cpp opencv-3.4.
if (!existedCacheDirs.empty())
{
CV_LOG_WARNING(NULL, "Creating new OpenCV cache directory: " << default_cache_path);
-diff -Nuarp opencv-3.4.18.orig/modules/imgproc/src/contours.cpp opencv-3.4.18/modules/imgproc/src/contours.cpp
---- opencv-3.4.18.orig/modules/imgproc/src/contours.cpp 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/imgproc/src/contours.cpp 2022-11-16 17:32:38.103053227 +0800
+diff -Nuarp opencv-3.4.20.orig/modules/imgproc/src/contours.cpp opencv-3.4.20/modules/imgproc/src/contours.cpp
+--- opencv-3.4.20.orig/modules/imgproc/src/contours.cpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/imgproc/src/contours.cpp 2023-08-06 11:05:19.960163681 +0800
@@ -1761,7 +1761,6 @@ cvFindContours_Impl( void* img, CvMemS
}
else
diff --git a/opencv-3.4.20-no-zlib.patch b/opencv-3.4.20-no-zlib.patch
new file mode 100644
index 0000000..531ebd5
--- /dev/null
+++ b/opencv-3.4.20-no-zlib.patch
@@ -0,0 +1,12 @@
+diff -Nuarp opencv-3.4.20.orig/modules/core/src/persistence.hpp opencv-3.4.20/modules/core/src/persistence.hpp
+--- opencv-3.4.20.orig/modules/core/src/persistence.hpp 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/src/persistence.hpp 2023-08-06 11:09:02.718289684 +0800
+@@ -12,7 +12,7 @@
+ #include
+ #include
+
+-#define USE_ZLIB 1
++#define USE_ZLIB 0
+ #if USE_ZLIB
+ # ifndef _LFS64_LARGEFILE
+ # define _LFS64_LARGEFILE 0
diff --git a/opencv-3.4.18-unsafe-xadd.patch b/opencv-3.4.20-unsafe-xadd.patch
similarity index 83%
rename from opencv-3.4.18-unsafe-xadd.patch
rename to opencv-3.4.20-unsafe-xadd.patch
index 83ee96f..f10c542 100644
--- a/opencv-3.4.18-unsafe-xadd.patch
+++ b/opencv-3.4.20-unsafe-xadd.patch
@@ -1,7 +1,7 @@
-diff -Nuarp opencv-3.4.18.orig/modules/core/include/opencv2/core/cvdef.h opencv-3.4.18/modules/core/include/opencv2/core/cvdef.h
---- opencv-3.4.18.orig/modules/core/include/opencv2/core/cvdef.h 2022-06-05 00:52:44.000000000 +0800
-+++ opencv-3.4.18/modules/core/include/opencv2/core/cvdef.h 2022-11-16 17:36:04.411050025 +0800
-@@ -532,33 +532,7 @@ Cv64suf;
+diff -Nuarp opencv-3.4.20.orig/modules/core/include/opencv2/core/cvdef.h opencv-3.4.20/modules/core/include/opencv2/core/cvdef.h
+--- opencv-3.4.20.orig/modules/core/include/opencv2/core/cvdef.h 2023-06-27 19:29:13.000000000 +0800
++++ opencv-3.4.20/modules/core/include/opencv2/core/cvdef.h 2023-08-06 11:12:38.619404492 +0800
+@@ -534,33 +534,7 @@ Cv64suf;
* exchange-add operation for atomic operations on reference counters *
\****************************************************************************************/
diff --git a/opencv-4.6.0-no-zlib.patch b/opencv-4.6.0-no-zlib.patch
deleted file mode 100644
index c340ddd..0000000
--- a/opencv-4.6.0-no-zlib.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/persistence.hpp opencv-4.6.0/modules/core/src/persistence.hpp
---- opencv-4.6.0.orig/modules/core/src/persistence.hpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/persistence.hpp 2022-11-16 17:40:26.104045965 +0800
-@@ -12,7 +12,7 @@
- #include
- #include
-
--#define USE_ZLIB 1
-+#define USE_ZLIB 0
- #if USE_ZLIB
- # ifndef _LFS64_LARGEFILE
- # define _LFS64_LARGEFILE 0
diff --git a/opencv-4.8.0-fix-emscripten-include.patch b/opencv-4.8.0-fix-emscripten-include.patch
new file mode 100644
index 0000000..02b0a03
--- /dev/null
+++ b/opencv-4.8.0-fix-emscripten-include.patch
@@ -0,0 +1,11 @@
+diff -Nuarp opencv-4.8.0.orig/modules/core/include/opencv2/core/hal/intrin_wasm.hpp opencv-4.8.0/modules/core/include/opencv2/core/hal/intrin_wasm.hpp
+--- opencv-4.8.0.orig/modules/core/include/opencv2/core/hal/intrin_wasm.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/include/opencv2/core/hal/intrin_wasm.hpp 2023-08-06 19:11:33.503734508 +0800
+@@ -8,6 +8,7 @@
+ #include
+ #include
+ #include
++#include
+ #include "opencv2/core/saturate.hpp"
+
+ #define CV_SIMD128 1
diff --git a/opencv-4.6.0-no-rtti.patch b/opencv-4.8.0-no-rtti.patch
similarity index 76%
rename from opencv-4.6.0-no-rtti.patch
rename to opencv-4.8.0-no-rtti.patch
index 7aaeda4..258fc16 100644
--- a/opencv-4.6.0-no-rtti.patch
+++ b/opencv-4.8.0-no-rtti.patch
@@ -1,7 +1,7 @@
-diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp opencv-4.6.0/modules/core/include/opencv2/core/bindings_utils.hpp
---- opencv-4.6.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/include/opencv2/core/bindings_utils.hpp 2022-11-16 17:37:13.970048946 +0800
-@@ -191,12 +191,6 @@ void generateVectorOfMat(size_t len, int
+diff -Nuarp opencv-4.8.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp opencv-4.8.0/modules/core/include/opencv2/core/bindings_utils.hpp
+--- opencv-4.8.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/include/opencv2/core/bindings_utils.hpp 2023-08-06 11:18:38.666914922 +0800
+@@ -199,12 +199,6 @@ void generateVectorOfMat(size_t len, int
}
CV_WRAP static inline
@@ -14,7 +14,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/bindings_utils.h
AsyncArray testAsyncArray(InputArray argument)
{
AsyncPromise p;
-@@ -208,14 +202,6 @@ CV_WRAP static inline
+@@ -216,14 +210,6 @@ CV_WRAP static inline
AsyncArray testAsyncException()
{
AsyncPromise p;
@@ -29,9 +29,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/bindings_utils.h
return p.getArrayResult();
}
-diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/ocl.hpp opencv-4.6.0/modules/core/include/opencv2/core/ocl.hpp
---- opencv-4.6.0.orig/modules/core/include/opencv2/core/ocl.hpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/include/opencv2/core/ocl.hpp 2022-11-16 17:37:13.971048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/include/opencv2/core/ocl.hpp opencv-4.8.0/modules/core/include/opencv2/core/ocl.hpp
+--- opencv-4.8.0.orig/modules/core/include/opencv2/core/ocl.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/include/opencv2/core/ocl.hpp 2023-08-06 11:18:38.666914922 +0800
@@ -302,21 +302,6 @@ public:
void release();
@@ -54,9 +54,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/ocl.hpp opencv-4
struct Impl;
inline Impl* getImpl() const { return (Impl*)p; }
inline bool empty() const { return !p; }
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/async.cpp opencv-4.6.0/modules/core/src/async.cpp
---- opencv-4.6.0.orig/modules/core/src/async.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/async.cpp 2022-11-16 17:37:13.972048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/async.cpp opencv-4.8.0/modules/core/src/async.cpp
+--- opencv-4.8.0.orig/modules/core/src/async.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/async.cpp 2023-08-06 11:18:38.666914922 +0800
@@ -119,7 +119,6 @@ struct AsyncArray::Impl
if (has_exception)
{
@@ -65,9 +65,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/async.cpp opencv-4.6.0/modules/co
}
CV_Error(Error::StsInternal, "AsyncArray: invalid state of 'has_result = true'");
}
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/bindings_utils.cpp opencv-4.6.0/modules/core/src/bindings_utils.cpp
---- opencv-4.6.0.orig/modules/core/src/bindings_utils.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/bindings_utils.cpp 2022-11-16 17:37:13.973048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/bindings_utils.cpp opencv-4.8.0/modules/core/src/bindings_utils.cpp
+--- opencv-4.8.0.orig/modules/core/src/bindings_utils.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/bindings_utils.cpp 2023-08-06 11:18:38.666914922 +0800
@@ -17,7 +17,7 @@ String dumpInputArray(InputArray argumen
return "InputArray: noArray()";
std::ostringstream ss;
@@ -148,9 +148,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/bindings_utils.cpp opencv-4.6.0/m
return ss.str();
}
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/command_line_parser.cpp opencv-4.6.0/modules/core/src/command_line_parser.cpp
---- opencv-4.6.0.orig/modules/core/src/command_line_parser.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/command_line_parser.cpp 2022-11-16 17:37:13.973048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/command_line_parser.cpp opencv-4.8.0/modules/core/src/command_line_parser.cpp
+--- opencv-4.8.0.orig/modules/core/src/command_line_parser.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/command_line_parser.cpp 2023-08-06 11:18:38.667914918 +0800
@@ -119,7 +119,6 @@ static void from_str(const String& str,
void CommandLineParser::getByName(const String& name, bool space_delete, Param type, void* dst) const
@@ -247,9 +247,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/command_line_parser.cpp opencv-4.
}
return vec;
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/glob.cpp opencv-4.6.0/modules/core/src/glob.cpp
---- opencv-4.6.0.orig/modules/core/src/glob.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/glob.cpp 2022-11-16 17:37:13.974048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/glob.cpp opencv-4.8.0/modules/core/src/glob.cpp
+--- opencv-4.8.0.orig/modules/core/src/glob.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/glob.cpp 2023-08-06 11:18:38.667914918 +0800
@@ -243,7 +243,6 @@ static void glob_rec(const cv::String& d
if ((dir = opendir (directory.c_str())) != 0)
{
@@ -270,9 +270,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/glob.cpp opencv-4.6.0/modules/cor
closedir(dir);
}
else
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/matrix.cpp opencv-4.6.0/modules/core/src/matrix.cpp
---- opencv-4.6.0.orig/modules/core/src/matrix.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/matrix.cpp 2022-11-16 17:37:13.974048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/matrix.cpp opencv-4.8.0/modules/core/src/matrix.cpp
+--- opencv-4.8.0.orig/modules/core/src/matrix.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/matrix.cpp 2023-08-06 11:18:38.667914918 +0800
@@ -698,18 +698,10 @@ void Mat::create(int d, const int* _size
#endif
if(!a)
@@ -312,9 +312,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/matrix.cpp opencv-4.6.0/modules/c
updateContinuityFlag();
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/ocl_disabled.impl.hpp opencv-4.6.0/modules/core/src/ocl_disabled.impl.hpp
---- opencv-4.6.0.orig/modules/core/src/ocl_disabled.impl.hpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/ocl_disabled.impl.hpp 2022-11-16 17:37:13.974048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/ocl_disabled.impl.hpp opencv-4.8.0/modules/core/src/ocl_disabled.impl.hpp
+--- opencv-4.8.0.orig/modules/core/src/ocl_disabled.impl.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/ocl_disabled.impl.hpp 2023-08-06 11:18:38.667914918 +0800
@@ -177,11 +177,6 @@ void* Context::getOpenCLContextProperty(
bool Context::useSVM() const { return false; }
void Context::setUseSVM(bool enabled) { }
@@ -327,9 +327,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/ocl_disabled.impl.hpp opencv-4.6.
/* static */ Context Context::fromHandle(void* context) { OCL_NOT_AVAILABLE(); }
/* static */ Context Context::fromDevice(const ocl::Device& device) { OCL_NOT_AVAILABLE(); }
/* static */ Context Context::create(const std::string& configuration) { OCL_NOT_AVAILABLE(); }
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel/parallel.cpp opencv-4.6.0/modules/core/src/parallel/parallel.cpp
---- opencv-4.6.0.orig/modules/core/src/parallel/parallel.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/parallel/parallel.cpp 2022-11-16 17:37:13.975048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/parallel/parallel.cpp opencv-4.8.0/modules/core/src/parallel/parallel.cpp
+--- opencv-4.8.0.orig/modules/core/src/parallel/parallel.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/parallel/parallel.cpp 2023-08-06 11:18:38.667914918 +0800
@@ -60,7 +60,6 @@ std::shared_ptr createPa
}
isKnown = true;
@@ -353,9 +353,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel/parallel.cpp opencv-4.6.
}
if (name.empty())
{
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp opencv-4.6.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp
---- opencv-4.6.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2022-11-16 17:37:13.975048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp opencv-4.8.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp
+--- opencv-4.8.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2023-08-06 11:18:38.667914918 +0800
@@ -155,15 +155,10 @@ protected:
void initBackend()
{
@@ -391,10 +391,10 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.
}
}
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel.cpp opencv-4.6.0/modules/core/src/parallel.cpp
---- opencv-4.6.0.orig/modules/core/src/parallel.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/parallel.cpp 2022-11-16 17:37:13.975048946 +0800
-@@ -347,29 +347,9 @@ namespace {
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/parallel.cpp opencv-4.8.0/modules/core/src/parallel.cpp
+--- opencv-4.8.0.orig/modules/core/src/parallel.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/parallel.cpp 2023-08-06 11:18:38.667914918 +0800
+@@ -351,29 +351,9 @@ namespace {
CV_TRACE_ARG_VALUE(range_end, "range.end", (int64)r.end);
#endif
@@ -424,7 +424,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel.cpp opencv-4.6.0/modules
if (!ctx.is_rng_used && !(cv::theRNG() == ctx.rng))
ctx.is_rng_used = true;
-@@ -515,16 +495,10 @@ void parallel_for_(const cv::Range& rang
+@@ -519,16 +499,10 @@ void parallel_for_(const cv::Range& rang
isNotNestedRegion = !flagNestedParallelFor.exchange(true);
if (isNotNestedRegion)
{
@@ -441,10 +441,10 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/parallel.cpp opencv-4.6.0/modules
}
else // nested parallel_for_() calls are not parallelized
{
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/persistence.cpp opencv-4.6.0/modules/core/src/persistence.cpp
---- opencv-4.6.0.orig/modules/core/src/persistence.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/persistence.cpp 2022-11-16 17:39:49.543046532 +0800
-@@ -697,7 +697,7 @@ bool FileStorage::Impl::open(const char
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/persistence.cpp opencv-4.8.0/modules/core/src/persistence.cpp
+--- opencv-4.8.0.orig/modules/core/src/persistence.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/persistence.cpp 2023-08-06 11:18:38.668914913 +0800
+@@ -704,7 +704,7 @@ bool FileStorage::Impl::open(const char
strbufpos = bufOffset;
bufofs = 0;
@@ -453,7 +453,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/persistence.cpp opencv-4.6.0/modu
char *ptr = bufferStart();
ptr[0] = ptr[1] = ptr[2] = '\0';
FileNode root_nodes(fs_ext, 0, 0);
-@@ -738,13 +738,6 @@ bool FileStorage::Impl::open(const char
+@@ -745,13 +745,6 @@ bool FileStorage::Impl::open(const char
}
}
}
@@ -467,7 +467,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/persistence.cpp opencv-4.6.0/modu
// release resources that we do not need anymore
closeFile();
-@@ -1877,18 +1870,12 @@ FileStorage::~FileStorage()
+@@ -1884,18 +1877,12 @@ FileStorage::~FileStorage()
bool FileStorage::open(const String& filename, int flags, const String& encoding)
{
@@ -486,10 +486,10 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/persistence.cpp opencv-4.6.0/modu
}
bool FileStorage::isOpened() const { return p->is_opened; }
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/core/src/system.cpp
---- opencv-4.6.0.orig/modules/core/src/system.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/system.cpp 2022-11-16 17:37:13.976048946 +0800
-@@ -1240,7 +1240,6 @@ void error( const Exception& exc )
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/system.cpp opencv-4.8.0/modules/core/src/system.cpp
+--- opencv-4.8.0.orig/modules/core/src/system.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/system.cpp 2023-08-06 11:18:38.668914913 +0800
+@@ -1280,7 +1280,6 @@ void error( const Exception& exc )
*p = 0;
}
@@ -497,7 +497,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/c
#ifdef __GNUC__
# if !defined __clang__ && !defined __APPLE__
// this suppresses this warning: "noreturn" function does return [enabled by default]
-@@ -2046,15 +2045,9 @@ void* TLSDataContainer::getData() const
+@@ -2082,15 +2081,9 @@ void* TLSDataContainer::getData() const
{
// Create new data instance and save it to TLS storage
pData = createDataInstance();
@@ -513,7 +513,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/c
}
return pData;
}
-@@ -2158,7 +2151,7 @@ inline bool parseOption(const std::strin
+@@ -2194,7 +2187,7 @@ inline bool parseOption(const std::strin
{
return false;
}
@@ -522,7 +522,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/c
}
template<>
-@@ -2179,7 +2172,7 @@ inline size_t parseOption(const std::str
+@@ -2215,7 +2208,7 @@ inline size_t parseOption(const std::str
return v * 1024 * 1024;
else if (suffixStr == "KB" || suffixStr == "Kb" || suffixStr == "kb")
return v * 1024;
@@ -531,7 +531,7 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/c
}
template<>
-@@ -2222,16 +2215,11 @@ static inline const char * envRead(const
+@@ -2258,16 +2251,11 @@ static inline const char * envRead(const
template
inline T read(const std::string & k, const T & defaultValue)
{
@@ -548,9 +548,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/system.cpp opencv-4.6.0/modules/c
return defaultValue;
}
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/umatrix.cpp opencv-4.6.0/modules/core/src/umatrix.cpp
---- opencv-4.6.0.orig/modules/core/src/umatrix.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/umatrix.cpp 2022-11-16 17:37:13.976048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/umatrix.cpp opencv-4.8.0/modules/core/src/umatrix.cpp
+--- opencv-4.8.0.orig/modules/core/src/umatrix.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/umatrix.cpp 2023-08-06 11:18:38.668914913 +0800
@@ -602,14 +602,9 @@ UMat Mat::getUMat(AccessFlag accessFlags
new_u->originalUMatData = u;
}
@@ -629,9 +629,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/umatrix.cpp opencv-4.6.0/modules/
CV_XADD(&u->refcount, -1);
CV_Assert(u->data != 0 && "Error mapping of UMat to host memory.");
return Mat();
-diff -Nuarp opencv-4.6.0.orig/modules/core/src/utils/filesystem.cpp opencv-4.6.0/modules/core/src/utils/filesystem.cpp
---- opencv-4.6.0.orig/modules/core/src/utils/filesystem.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/src/utils/filesystem.cpp 2022-11-16 17:37:13.976048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/utils/filesystem.cpp opencv-4.8.0/modules/core/src/utils/filesystem.cpp
+--- opencv-4.8.0.orig/modules/core/src/utils/filesystem.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/utils/filesystem.cpp 2023-08-06 11:18:38.668914913 +0800
@@ -508,14 +508,9 @@ cv::String getCacheDirectory(const char*
&& !utils::fs::isDirectory(default_cache_path))
{
@@ -647,9 +647,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/core/src/utils/filesystem.cpp opencv-4.6.0
if (!existedCacheDirs.empty())
{
CV_LOG_WARNING(NULL, "Creating new OpenCV cache directory: " << default_cache_path);
-diff -Nuarp opencv-4.6.0.orig/modules/imgproc/src/contours.cpp opencv-4.6.0/modules/imgproc/src/contours.cpp
---- opencv-4.6.0.orig/modules/imgproc/src/contours.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/imgproc/src/contours.cpp 2022-11-16 17:37:13.976048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/imgproc/src/contours.cpp opencv-4.8.0/modules/imgproc/src/contours.cpp
+--- opencv-4.8.0.orig/modules/imgproc/src/contours.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/imgproc/src/contours.cpp 2023-08-06 11:18:38.668914913 +0800
@@ -1762,7 +1762,6 @@ cvFindContours_Impl( void* img, CvMemS
}
else
@@ -671,9 +671,9 @@ diff -Nuarp opencv-4.6.0.orig/modules/imgproc/src/contours.cpp opencv-4.6.0/modu
*firstContour = cvEndFindContours( &scanner );
}
-diff -Nuarp opencv-4.6.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp opencv-4.6.0/modules/video/src/tracking/detail/tracking_feature.cpp
---- opencv-4.6.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/video/src/tracking/detail/tracking_feature.cpp 2022-11-16 17:37:13.977048946 +0800
+diff -Nuarp opencv-4.8.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp opencv-4.8.0/modules/video/src/tracking/detail/tracking_feature.cpp
+--- opencv-4.8.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/video/src/tracking/detail/tracking_feature.cpp 2023-08-06 11:18:38.668914913 +0800
@@ -107,15 +107,9 @@ void CvHaarEvaluator::generateFeatures(i
CvHaarEvaluator::FeatureHaar::FeatureHaar(Size patchSize)
diff --git a/opencv-4.8.0-no-zlib.patch b/opencv-4.8.0-no-zlib.patch
new file mode 100644
index 0000000..6a8765e
--- /dev/null
+++ b/opencv-4.8.0-no-zlib.patch
@@ -0,0 +1,12 @@
+diff -Nuarp opencv-4.8.0.orig/modules/core/src/persistence.hpp opencv-4.8.0/modules/core/src/persistence.hpp
+--- opencv-4.8.0.orig/modules/core/src/persistence.hpp 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/src/persistence.hpp 2023-08-06 11:17:31.634207928 +0800
+@@ -12,7 +12,7 @@
+ #include
+ #include
+
+-#define USE_ZLIB 1
++#define USE_ZLIB 0
+ #if USE_ZLIB
+ # ifndef _LFS64_LARGEFILE
+ # define _LFS64_LARGEFILE 0
diff --git a/opencv-4.6.0-unsafe-xadd.patch b/opencv-4.8.0-unsafe-xadd.patch
similarity index 81%
rename from opencv-4.6.0-unsafe-xadd.patch
rename to opencv-4.8.0-unsafe-xadd.patch
index 905092a..03241f4 100644
--- a/opencv-4.6.0-unsafe-xadd.patch
+++ b/opencv-4.8.0-unsafe-xadd.patch
@@ -1,7 +1,7 @@
-diff -Nuarp opencv-4.6.0.orig/modules/core/include/opencv2/core/cvdef.h opencv-4.6.0/modules/core/include/opencv2/core/cvdef.h
---- opencv-4.6.0.orig/modules/core/include/opencv2/core/cvdef.h 2022-06-05 08:32:44.000000000 +0800
-+++ opencv-4.6.0/modules/core/include/opencv2/core/cvdef.h 2022-11-16 17:40:47.232045637 +0800
-@@ -662,33 +662,7 @@ __CV_ENUM_FLAGS_BITWISE_XOR_EQ (EnumTy
+diff -Nuarp opencv-4.8.0.orig/modules/core/include/opencv2/core/cvdef.h opencv-4.8.0/modules/core/include/opencv2/core/cvdef.h
+--- opencv-4.8.0.orig/modules/core/include/opencv2/core/cvdef.h 2023-06-28 19:53:33.000000000 +0800
++++ opencv-4.8.0/modules/core/include/opencv2/core/cvdef.h 2023-08-06 11:22:45.396836446 +0800
+@@ -669,33 +669,7 @@ __CV_ENUM_FLAGS_BITWISE_XOR_EQ (EnumTy
* exchange-add operation for atomic operations on reference counters *
\****************************************************************************************/
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..06d8cb3
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,17 @@
+project(opencv-mobile-test)
+cmake_minimum_required(VERSION 3.5)
+
+# opencv4 requires c++11
+set(CMAKE_CXX_STANDARD 11)
+
+if(APPLE OR IOS)
+ # set OpenCV_DIR to where opencv2.framework resides
+ find_library(OpenCV_LIBS NAMES opencv2 PATHS ${OpenCV_DIR})
+else()
+ # set OpenCV_DIR to where OpenCVConfig.cmake resides
+ find_package(OpenCV REQUIRED)
+endif()
+
+add_executable(opencv-mobile-test main.cpp)
+
+target_link_libraries(opencv-mobile-test ${OpenCV_LIBS})
diff --git a/test/main.cpp b/test/main.cpp
new file mode 100644
index 0000000..f8d2873
--- /dev/null
+++ b/test/main.cpp
@@ -0,0 +1,14 @@
+#include
+#include
+#include
+
+int main()
+{
+ cv::Mat bgr = cv::imread("in.jpg", 1);
+
+ cv::resize(bgr, bgr, cv::Size(200, 200));
+
+ cv::imwrite("out.jpg", bgr);
+
+ return 0;
+}
diff --git a/toolchains/ios.toolchain.cmake b/toolchains/ios.toolchain.cmake
index 1240abd..931ded1 100644
--- a/toolchains/ios.toolchain.cmake
+++ b/toolchains/ios.toolchain.cmake
@@ -1,4 +1,6 @@
# This file is part of the ios-cmake project. It was retrieved from
+# https://github.com/leetal/ios-cmake.git, which is a fork of
+# https://github.com/gerstrong/ios-cmake.git, which is a fork of
# https://github.com/cristeab/ios-cmake.git, which is a fork of
# https://code.google.com/p/ios-cmake/. Which in turn is based off of
# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which
@@ -35,7 +37,7 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
-# This file is based off of the Platform/Darwin.cmake and
+# This file is based on the Platform/Darwin.cmake and
# Platform/UnixPaths.cmake files which are included with CMake 2.8.4
# It has been altered for iOS development.
#
@@ -49,43 +51,84 @@
#
# INFORMATION / HELP
#
-# The following variables control the behaviour of this toolchain:
+###############################################################################
+# OPTIONS #
+###############################################################################
#
-# IOS_PLATFORM: OS (default) or SIMULATOR or SIMULATOR64 or TVOS or SIMULATOR_TVOS or WATCHOS or SIMULATOR_WATCHOS
+# PLATFORM: (default "OS64")
# OS = Build for iPhoneOS.
-# OS64 = Build for arm64 arm64e iPhoneOS.
-# SIMULATOR = Build for x86 i386 iPhone Simulator.
-# SIMULATOR64 = Build for x86_64 iPhone Simulator.
-# TVOS = Build for AppleTVOS.
-# SIMULATOR_TVOS = Build for x86_64 AppleTV Simulator.
-# WATCHOS = Build for armv7k arm64_32 for WatchOS.
-# SIMULATOR_WATCHOS = Build for x86_64 for Watch Simulator.
-# CMAKE_OSX_SYSROOT: Path to the iOS SDK to use. By default this is
-# automatically determined from IOS_PLATFORM and xcodebuild, but
+# OS64 = Build for arm64 iphoneOS.
+# OS64COMBINED = Build for arm64 x86_64 iphoneOS + iphoneOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step)
+# SIMULATOR = Build for x86 i386 iphoneOS Simulator.
+# SIMULATOR64 = Build for x86_64 iphoneOS Simulator.
+# SIMULATORARM64 = Build for arm64 iphoneOS Simulator.
+# TVOS = Build for arm64 tvOS.
+# TVOSCOMBINED = Build for arm64 x86_64 tvOS + tvOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step)
+# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator.
+# WATCHOS = Build for armv7k arm64_32 for watchOS.
+# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step)
+# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator.
+# MAC = Build for x86_64 macOS.
+# MAC_ARM64 = Build for Apple Silicon macOS.
+# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS.
+# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS).
+# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
+# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS).
+# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
+#
+# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is
+# automatically determined from PLATFORM and xcodebuild, but
# can also be manually specified (although this should not be required).
-# CMAKE_IOS_DEVELOPER_ROOT: Path to the Developer directory for the iOS platform
-# being compiled for. By default this is automatically determined from
+#
+# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform
+# being compiled for. By default, this is automatically determined from
# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should
# not be required).
-# ENABLE_BITCODE: (1|0) Enables or disables bitcode support. Default 1 (true)
-# ENABLE_ARC: (1|0) Enables or disables ARC support. Default 1 (true, ARC enabled by default)
-# ENABLE_VISIBILITY: (1|0) Enables or disables symbol visibility support. Default 0 (false, visibility hidden by default)
-# IOS_ARCH: (armv7 armv7s armv7k arm64 arm64e arm64_32 i386 x86_64) If specified, will override the default architectures for the given IOS_PLATFORM
-# OS = armv7 armv7s arm64 arm64e (if applicable)
-# OS64 = arm64 arm64e (if applicable)
-# SIMULATOR = i386 x86_64
+#
+# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 2.0 on watchOS and 9.0 on tvOS+iOS
+#
+# NAMED_LANGUAGE_SUPPORT:
+# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support
+# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16)
+#
+# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default ON
+#
+# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default)
+#
+# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default)
+#
+# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker
+# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY)
+#
+# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM
+# OS = armv7 armv7s arm64 (if applicable)
+# OS64 = arm64 (if applicable)
+# SIMULATOR = i386
# SIMULATOR64 = x86_64
+# SIMULATORARM64 = arm64
# TVOS = arm64
# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated)
# WATCHOS = armv7k arm64_32 (if applicable)
# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated)
+# MAC = x86_64
+# MAC_ARM64 = arm64
+# MAC_UNIVERSAL = x86_64 arm64
+# MAC_CATALYST = x86_64
+# MAC_CATALYST_ARM64 = arm64
#
-# This toolchain defines the following variables for use externally:
+# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64"
#
+###############################################################################
+# END OPTIONS #
+###############################################################################
+#
+# This toolchain defines the following properties (available via get_property()) for use externally:
+#
+# PLATFORM: The currently targeted platform.
# XCODE_VERSION: Version number (not including Build version) of Xcode detected.
-# IOS_SDK_VERSION: Version of iOS SDK being used.
-# CMAKE_OSX_ARCHITECTURES: Architectures being compiled for (generated from
-# IOS_PLATFORM).
+# SDK_VERSION: Version of SDK being used.
+# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM).
+# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set!
#
# This toolchain defines the following macros for use externally:
#
@@ -96,8 +139,96 @@
#
# find_host_package (PROGRAM ARGS)
# A macro used to find executable programs on the host system, not within the
-# iOS environment. Thanks to the android-cmake project for providing the
+# environment. Thanks to the android-cmake project for providing the
# command.
+#
+
+cmake_minimum_required(VERSION 3.8.0)
+
+# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds.
+if(DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN})
+ return()
+endif()
+set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
+
+# List of supported platform values
+list(APPEND _supported_platforms
+ "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64"
+ "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS"
+ "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS"
+ "MAC" "MAC_ARM64" "MAC_UNIVERSAL"
+ "MAC_CATALYST" "MAC_CATALYST_ARM64")
+
+# Cache what generator is used
+set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
+
+# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib)
+if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14")
+ set(MODERN_CMAKE YES)
+endif()
+
+# Get the Xcode version being used.
+# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs.
+# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable.
+#
+# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts
+if(DEFINED XCODE_VERSION_INT)
+ # Environment variables are always preserved.
+ set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}")
+elseif(DEFINED ENV{_XCODE_VERSION_INT})
+ set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}")
+elseif(NOT DEFINED XCODE_VERSION_INT)
+ find_program(XCODEBUILD_EXECUTABLE xcodebuild)
+ if(NOT XCODEBUILD_EXECUTABLE)
+ message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.")
+ endif()
+ execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version
+ OUTPUT_VARIABLE XCODE_VERSION_INT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}")
+ string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}")
+ set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "")
+endif()
+
+# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur)
+# if you don't set a deployment target it will be set the way you only get 64-bit builds
+if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0)
+ # Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...)
+ set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64")
+endif()
+
+# Check if the platform variable is set
+if(DEFINED PLATFORM)
+ # Environment variables are always preserved.
+ set(ENV{_PLATFORM} "${PLATFORM}")
+elseif(DEFINED ENV{_PLATFORM})
+ set(PLATFORM "$ENV{_PLATFORM}")
+elseif(NOT DEFINED PLATFORM)
+ message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!")
+endif ()
+
+if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode")
+ message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake")
+endif()
+
+# Safeguard that the platform value is set and is one of the supported values
+list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM)
+if("${contains_PLATFORM}" EQUAL "-1")
+ string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}")
+ message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n"
+ " Supported PLATFORM values: \n * ${_supported_platforms_formatted}")
+endif()
+
+# Check if Apple Silicon is supported
+if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5")
+ message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5")
+endif()
+
+# Touch the toolchain variable to suppress the "unused variable" warning.
+# This happens if CMake is invoked with the same command line the second time.
+if(CMAKE_TOOLCHAIN_FILE)
+endif()
# Fix for PThread library not in path
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
@@ -105,221 +236,463 @@ set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
-# Get the Xcode version being used.
-execute_process(COMMAND xcodebuild -version
- OUTPUT_VARIABLE XCODE_VERSION
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
-string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
-message(STATUS "Building with Xcode version: ${XCODE_VERSION}")
-# Default to building for iPhoneOS if not specified otherwise, and we cannot
-# determine the platform from the CMAKE_OSX_ARCHITECTURES variable. The use
-# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly
-# determine the value of IOS_PLATFORM from the root project, as
-# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake.
-if (NOT DEFINED IOS_PLATFORM)
- if (CMAKE_OSX_ARCHITECTURES)
- if (CMAKE_OSX_ARCHITECTURES MATCHES ".*arm.*")
- set(IOS_PLATFORM "OS")
- elseif (CMAKE_OSX_ARCHITECTURES MATCHES "i386")
- set(IOS_PLATFORM "SIMULATOR")
- elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
- set(IOS_PLATFORM "SIMULATOR64")
- elseif (CMAKE_OSX_ARCHITECTURES MATCHES "armv7k")
- set(IOS_PLATFORM "WATCHOS")
- endif()
- endif()
- if (NOT IOS_PLATFORM)
- set(IOS_PLATFORM "OS")
- endif()
+# Specify named language support defaults.
+if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16")
+ set(NAMED_LANGUAGE_SUPPORT ON)
+ message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.")
+elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16")
+ set(NAMED_LANGUAGE_SUPPORT OFF)
+ message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.")
+elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16")
+ message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.")
endif()
-set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING
- "Type of iOS platform for which to build.")
-# Determine the platform name and architectures for use in xcodebuild commands
-# from the specified IOS_PLATFORM name.
-if (IOS_PLATFORM STREQUAL "OS")
- set(XCODE_IOS_PLATFORM iphoneos)
- if(NOT IOS_ARCH)
- if (XCODE_VERSION VERSION_GREATER 10.0)
- set(IOS_ARCH armv7 armv7s arm64 arm64e)
- else()
- set(IOS_ARCH armv7 armv7s arm64)
- endif()
- endif()
- elseif (IOS_PLATFORM STREQUAL "OS64")
- set(XCODE_IOS_PLATFORM iphoneos)
- if(NOT IOS_ARCH)
- if (XCODE_VERSION VERSION_GREATER 10.0)
- set(IOS_ARCH arm64 arm64e)
- else()
- set(IOS_ARCH arm64)
- endif()
- endif()
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
- set(XCODE_IOS_PLATFORM iphonesimulator)
- if(NOT IOS_ARCH)
- set(IOS_ARCH i386 x86_64)
- endif()
-elseif(IOS_PLATFORM STREQUAL "SIMULATOR64")
- set(XCODE_IOS_PLATFORM iphonesimulator)
- if(NOT IOS_ARCH)
- set(IOS_ARCH x86_64)
- endif()
-elseif (IOS_PLATFORM STREQUAL "TVOS")
- set(XCODE_IOS_PLATFORM appletvos)
- if(NOT IOS_ARCH)
- set(IOS_ARCH arm64)
- endif()
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS")
- set(XCODE_IOS_PLATFORM appletvsimulator)
- if(NOT IOS_ARCH)
- set(IOS_ARCH x86_64)
- endif()
-elseif (IOS_PLATFORM STREQUAL "WATCHOS")
- set(XCODE_IOS_PLATFORM watchos)
- if(NOT IOS_ARCH)
- if (XCODE_VERSION VERSION_GREATER 10.0)
- set(IOS_ARCH armv7k arm64_32)
- else()
- set(IOS_ARCH armv7k)
- endif()
- endif()
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS")
- set(XCODE_IOS_PLATFORM watchsimulator)
- if(NOT IOS_ARCH)
- set(IOS_ARCH x86_64)
- endif()
-else()
- message(FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}")
-endif()
-message(STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, "
- "architecture(s): ${IOS_ARCH}")
-# If user did not specify the SDK root to use, then query xcodebuild for it.
-execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
- OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT
- OUTPUT_QUIET ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-# If user did not specify the SDK root to use, then query xcodebuild for it.
-if (NOT DEFINED CMAKE_OSX_SYSROOT OR (NOT CMAKE_OSX_SYSROOT STREQUAL CMAKE_OSX_SYSROOT_INT))
- execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
- OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif()
-if (NOT EXISTS ${CMAKE_OSX_SYSROOT})
- message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain"
- "is pointing to the correct path. Please run:"
- "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer"
- "and see if that fixes the problem for you.")
- message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
- "does not exist.")
-elseif(DEFINED CMAKE_OSX_SYSROOT)
- message(STATUS "Using manually set SDK path: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
-else()
- message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
-endif()
-# Specify minimum version of deployment target.
-if (NOT DEFINED IOS_DEPLOYMENT_TARGET)
- if (IOS_PLATFORM STREQUAL "WATCHOS" OR IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS")
- # Unless specified, SDK version 2.0 is used by default as minimum target version (watchOS).
- set(IOS_DEPLOYMENT_TARGET "2.0"
- CACHE STRING "Minimum iOS version to build for." )
+set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL
+ "Whether or not to enable explicit named language support" FORCE)
+
+# Specify the minimum version of the deployment target.
+if(NOT DEFINED DEPLOYMENT_TARGET)
+ if (PLATFORM MATCHES "WATCHOS")
+ # Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS).
+ set(DEPLOYMENT_TARGET "4.0")
+ elseif(PLATFORM STREQUAL "MAC")
+ # Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos).
+ set(DEPLOYMENT_TARGET "10.13")
+ elseif(PLATFORM STREQUAL "MAC_ARM64")
+ # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm).
+ set(DEPLOYMENT_TARGET "11.0")
+ elseif(PLATFORM STREQUAL "MAC_UNIVERSAL")
+ # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds.
+ set(DEPLOYMENT_TARGET "11.0")
+ elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
+ # Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement).
+ set(DEPLOYMENT_TARGET "13.1")
else()
- # Unless specified, SDK version 9.0 is used by default as minimum target version (iOS, tvOS).
- set(IOS_DEPLOYMENT_TARGET "9.0"
- CACHE STRING "Minimum iOS version to build for." )
+ # Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS).
+ set(DEPLOYMENT_TARGET "11.0")
endif()
- message(STATUS "Using the default min-version since IOS_DEPLOYMENT_TARGET not provided!")
+ message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!")
+elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1")
+ message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!")
endif()
+
+# Store the DEPLOYMENT_TARGET in the cache
+set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "")
+
+# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially)
+if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4)
+ set(PLATFORM "OS64")
+ message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.")
+elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4)
+ set(PLATFORM "SIMULATOR64")
+ message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.")
+endif()
+
+set(PLATFORM_INT "${PLATFORM}")
+
+if(DEFINED ARCHS)
+ string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
+endif()
+
+# Determine the platform name and architectures for use in xcodebuild commands
+# from the specified PLATFORM_INT name.
+if(PLATFORM_INT STREQUAL "OS")
+ set(SDK_NAME iphoneos)
+ if(NOT ARCHS)
+ set(ARCHS armv7 armv7s arm64)
+ set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET})
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
+ endif()
+elseif(PLATFORM_INT STREQUAL "OS64")
+ set(SDK_NAME iphoneos)
+ if(NOT ARCHS)
+ if (XCODE_VERSION_INT VERSION_GREATER 10.0)
+ set(ARCHS arm64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example
+ else()
+ set(ARCHS arm64)
+ endif()
+ set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios${DEPLOYMENT_TARGET})
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
+ endif()
+elseif(PLATFORM_INT STREQUAL "OS64COMBINED")
+ set(SDK_NAME iphoneos)
+ if(MODERN_CMAKE)
+ if(NOT ARCHS)
+ if (XCODE_VERSION_INT VERSION_GREATER 10.0)
+ set(ARCHS arm64 x86_64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
+ else()
+ set(ARCHS arm64 x86_64)
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
+ endif()
+ set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET})
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
+ endif()
+ else()
+ message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work")
+ endif()
+elseif(PLATFORM_INT STREQUAL "SIMULATOR")
+ set(SDK_NAME iphonesimulator)
+ if(NOT ARCHS)
+ set(ARCHS i386)
+ set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ endif()
+ message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.")
+elseif(PLATFORM_INT STREQUAL "SIMULATOR64")
+ set(SDK_NAME iphonesimulator)
+ if(NOT ARCHS)
+ set(ARCHS x86_64)
+ set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ endif()
+elseif(PLATFORM_INT STREQUAL "SIMULATORARM64")
+ set(SDK_NAME iphonesimulator)
+ if(NOT ARCHS)
+ set(ARCHS arm64)
+ set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
+ endif()
+elseif(PLATFORM_INT STREQUAL "TVOS")
+ set(SDK_NAME appletvos)
+ if(NOT ARCHS)
+ set(ARCHS arm64)
+ set(APPLE_TARGET_TRIPLE_INT aarch64-apple-tvos${DEPLOYMENT_TARGET})
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET})
+ endif()
+elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED")
+ set(SDK_NAME appletvos)
+ if(MODERN_CMAKE)
+ if(NOT ARCHS)
+ set(ARCHS arm64 x86_64)
+ set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-tvos${DEPLOYMENT_TARGET})
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64")
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET})
+ endif()
+ else()
+ message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work")
+ endif()
+elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS")
+ set(SDK_NAME appletvsimulator)
+ if(NOT ARCHS)
+ set(ARCHS x86_64)
+ set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator)
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator)
+ endif()
+elseif(PLATFORM_INT STREQUAL "WATCHOS")
+ set(SDK_NAME watchos)
+ if(NOT ARCHS)
+ if (XCODE_VERSION_INT VERSION_GREATER 10.0)
+ set(ARCHS armv7k arm64_32)
+ set(APPLE_TARGET_TRIPLE_INT aarch64_32-apple-watchos${DEPLOYMENT_TARGET})
+ else()
+ set(ARCHS armv7k)
+ set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET})
+ endif()
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET})
+ endif()
+elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
+ set(SDK_NAME watchos)
+ if(MODERN_CMAKE)
+ if(NOT ARCHS)
+ if (XCODE_VERSION_INT VERSION_GREATER 10.0)
+ set(ARCHS armv7k arm64_32 i386)
+ set(APPLE_TARGET_TRIPLE_INT aarch64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
+ else()
+ set(ARCHS armv7k i386)
+ set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET})
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
+ endif()
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET})
+ endif()
+ else()
+ message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work")
+ endif()
+elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
+ set(SDK_NAME watchsimulator)
+ if(NOT ARCHS)
+ set(ARCHS i386)
+ set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
+ else()
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
+ endif()
+elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST")
+ set(SDK_NAME macosx)
+ if(NOT ARCHS)
+ set(ARCHS x86_64)
+ endif()
+ string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
+ if(PLATFORM_INT STREQUAL "MAC")
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
+ elseif(PLATFORM_INT STREQUAL "MAC_CATALYST")
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
+ endif()
+elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$")
+ set(SDK_NAME macosx)
+ if(NOT ARCHS)
+ set(ARCHS arm64)
+ endif()
+ string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
+ if(PLATFORM_INT STREQUAL "MAC_ARM64")
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
+ elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64")
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
+ endif()
+elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL")
+ set(SDK_NAME macosx)
+ if(NOT ARCHS)
+ set(ARCHS "x86_64;arm64")
+ endif()
+ string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
+else()
+ message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}")
+endif()
+
+string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}")
+
+if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode")
+ message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode")
+endif()
+
+if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx")
+ set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-maccatalyst")
+ if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET)
+ set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15")
+ else()
+ set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}")
+ endif()
+elseif(CMAKE_GENERATOR MATCHES "Xcode")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}")
+ if(NOT PLATFORM_INT MATCHES ".*COMBINED")
+ set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}")
+ set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}")
+ endif()
+endif()
+
+# If the user did not specify the SDK root to use, then query xcodebuild for it.
+if(DEFINED CMAKE_OSX_SYSROOT_INT)
+ # Environment variables are always preserved.
+ set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}")
+elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT})
+ set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}")
+elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT)
+ execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path
+ OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT)
+ message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain"
+ "is pointing to the correct path. Please run:"
+ "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer"
+ "and see if that fixes the problem for you.")
+ message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
+ "does not exist.")
+elseif(DEFINED CMAKE_OSX_SYSROOT_INT)
+ set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
+ # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT.
+ set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
+endif()
+
# Use bitcode or not
-if (NOT DEFINED ENABLE_BITCODE AND NOT IOS_ARCH MATCHES "((^|, )(i386|x86_64))+")
+if(NOT DEFINED ENABLE_BITCODE AND NOT ARCHS MATCHES "((^|;|, )(i386|x86_64))+")
# Unless specified, enable bitcode support by default
- set(ENABLE_BITCODE TRUE CACHE BOOL "Whether or not to enable bitcode")
- message(STATUS "Enabling bitcode support by default. ENABLE_BITCODE not provided!")
-endif()
-if (NOT DEFINED ENABLE_BITCODE)
- message(STATUS "Disabling bitcode support by default on simulators. ENABLE_BITCODE not provided for override!")
+ message(STATUS "[DEFAULTS] Enabling bitcode support by default. ENABLE_BITCODE not provided!")
+ set(ENABLE_BITCODE ON)
+elseif(NOT DEFINED ENABLE_BITCODE)
+ message(STATUS "[DEFAULTS] Disabling bitcode support by default on simulators. ENABLE_BITCODE not provided for override!")
+ set(ENABLE_BITCODE OFF)
endif()
+set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL
+ "Whether or not to enable bitcode" FORCE)
# Use ARC or not
-if (NOT DEFINED ENABLE_ARC)
+if(NOT DEFINED ENABLE_ARC)
# Unless specified, enable ARC support by default
- set(ENABLE_ARC TRUE CACHE BOOL "Whether or not to enable ARC")
- message(STATUS "Enabling ARC support by default. ENABLE_ARC not provided!")
+ set(ENABLE_ARC ON)
+ message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!")
endif()
+set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE)
# Use hidden visibility or not
-if (NOT DEFINED ENABLE_VISIBILITY)
+if(NOT DEFINED ENABLE_VISIBILITY)
# Unless specified, disable symbols visibility by default
- set(ENABLE_VISIBILITY FALSE CACHE BOOL "Whether or not to hide symbols (-fvisibility=hidden)")
- message(STATUS "Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!")
+ set(ENABLE_VISIBILITY OFF)
+ message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!")
endif()
+set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE)
+# Set strict compiler checks or not
+if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE)
+ # Unless specified, disable strict try_compile()
+ set(ENABLE_STRICT_TRY_COMPILE OFF)
+ message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!")
+endif()
+set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL
+ "Whether or not to use strict compiler checks" FORCE)
+
# Get the SDK version information.
-execute_process(COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
- OUTPUT_VARIABLE IOS_SDK_VERSION
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
+if(DEFINED SDK_VERSION)
+ # Environment variables are always preserved.
+ set(ENV{_SDK_VERSION} "${SDK_VERSION}")
+elseif(DEFINED ENV{_SDK_VERSION})
+ set(SDK_VERSION "$ENV{_SDK_VERSION}")
+elseif(NOT DEFINED SDK_VERSION)
+ execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion
+ OUTPUT_VARIABLE SDK_VERSION
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
# Find the Developer root for the specific iOS platform being compiled for
# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in
-# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain
+# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain
# this information from xcrun or xcodebuild.
-if (NOT CMAKE_IOS_DEVELOPER_ROOT)
- get_filename_component(IOS_PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT} PATH)
- get_filename_component(CMAKE_IOS_DEVELOPER_ROOT ${IOS_PLATFORM_SDK_DIR} PATH)
-endif()
-if (NOT EXISTS ${CMAKE_IOS_DEVELOPER_ROOT})
- message(FATAL_ERROR "Invalid CMAKE_IOS_DEVELOPER_ROOT: "
- "${CMAKE_IOS_DEVELOPER_ROOT} does not exist.")
+if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode")
+ get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH)
+ get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH)
+ if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}")
+ message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.")
+ endif()
endif()
+
# Find the C & C++ compilers for the specified SDK.
-if (NOT CMAKE_C_COMPILER)
- execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang
- OUTPUT_VARIABLE CMAKE_C_COMPILER
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
+if(DEFINED CMAKE_C_COMPILER)
+ # Environment variables are always preserved.
+ set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}")
+elseif(DEFINED ENV{_CMAKE_C_COMPILER})
+ set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}")
+ set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
+elseif(NOT DEFINED CMAKE_C_COMPILER)
+ execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang
+ OUTPUT_VARIABLE CMAKE_C_COMPILER
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
endif()
-if (NOT CMAKE_CXX_COMPILER)
- execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang++
- OUTPUT_VARIABLE CMAKE_CXX_COMPILER
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
+if(DEFINED CMAKE_CXX_COMPILER)
+ # Environment variables are always preserved.
+ set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}")
+elseif(DEFINED ENV{_CMAKE_CXX_COMPILER})
+ set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}")
+elseif(NOT DEFINED CMAKE_CXX_COMPILER)
+ execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++
+ OUTPUT_VARIABLE CMAKE_CXX_COMPILER
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
# Find (Apple's) libtool.
-execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find libtool
- OUTPUT_VARIABLE IOS_LIBTOOL
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-message(STATUS "Using libtool: ${IOS_LIBTOOL}")
+if(DEFINED BUILD_LIBTOOL)
+ # Environment variables are always preserved.
+ set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}")
+elseif(DEFINED ENV{_BUILD_LIBTOOL})
+ set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}")
+elseif(NOT DEFINED BUILD_LIBTOOL)
+ execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool
+ OUTPUT_VARIABLE BUILD_LIBTOOL
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+# Find the toolchain's provided install_name_tool if none is found on the host
+if(DEFINED CMAKE_INSTALL_NAME_TOOL)
+ # Environment variables are always preserved.
+ set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}")
+elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL})
+ set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}")
+elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
+ execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool
+ OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "")
+endif()
+
# Configure libtool to be used instead of ar + ranlib to build static libraries.
# This is required on Xcode 7+, but should also work on previous versions of
# Xcode.
-set(CMAKE_C_CREATE_STATIC_LIBRARY
- "${IOS_LIBTOOL} -static -o ")
-set(CMAKE_CXX_CREATE_STATIC_LIBRARY
- "${IOS_LIBTOOL} -static -o ")
-# Get the version of Darwin (OS X) of the host.
-execute_process(COMMAND uname -r
- OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
+get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+foreach(lang ${languages})
+ set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "")
+endforeach()
+
+# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box.
+if(MODERN_CMAKE)
+ if(SDK_NAME MATCHES "iphone")
+ set(CMAKE_SYSTEM_NAME iOS)
+ elseif(SDK_NAME MATCHES "macosx")
+ set(CMAKE_SYSTEM_NAME Darwin)
+ elseif(SDK_NAME MATCHES "appletv")
+ set(CMAKE_SYSTEM_NAME tvOS)
+ elseif(SDK_NAME MATCHES "watch")
+ set(CMAKE_SYSTEM_NAME watchOS)
+ endif()
+ # Provide flags for a combined FAT library build on newer CMake versions
+ if(PLATFORM_INT MATCHES ".*COMBINED")
+ set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO")
+ set(CMAKE_IOS_INSTALL_COMBINED YES)
+ endif()
+elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10")
+ # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified
+ set(CMAKE_SYSTEM_NAME iOS)
+elseif(NOT DEFINED CMAKE_SYSTEM_NAME)
+ # Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified
+ set(CMAKE_SYSTEM_NAME Darwin)
+endif()
# Standard settings.
-set(CMAKE_SYSTEM_NAME Darwin CACHE INTERNAL "")
-set(CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION} CACHE INTERNAL "")
-set(UNIX TRUE CACHE BOOL "")
-set(APPLE TRUE CACHE BOOL "")
-set(IOS TRUE CACHE BOOL "")
+set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "")
+set(UNIX ON CACHE BOOL "")
+set(APPLE ON CACHE BOOL "")
+if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL")
+ set(IOS OFF CACHE BOOL "")
+ set(MACOS ON CACHE BOOL "")
+elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
+ set(IOS ON CACHE BOOL "")
+ set(MACOS ON CACHE BOOL "")
+else()
+ set(IOS ON CACHE BOOL "")
+endif()
set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
-# Force unset of OS X-specific deployment target (otherwise autopopulated),
-# required as of cmake 2.8.10.
-set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING
- "Must be empty for iOS builds." FORCE)
+set(CMAKE_STRIP strip CACHE FILEPATH "" FORCE)
# Set the architectures for which to build.
-set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
-# Change the type of target generated for try_compile() so it'll work when cross-compiling
-set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "")
+# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks
+if(NOT ENABLE_STRICT_TRY_COMPILE_INT)
+ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+endif()
# All iOS/Darwin specific settings - some may be redundant.
+if (NOT DEFINED CMAKE_MACOSX_BUNDLE)
+ set(CMAKE_MACOSX_BUNDLE YES)
+endif()
+set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
set(CMAKE_SHARED_MODULE_PREFIX "lib")
@@ -335,152 +708,325 @@ set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
-if(IOS_ARCH MATCHES "((^|, )(arm64|arm64e|x86_64))+")
+if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+")
set(CMAKE_C_SIZEOF_DATA_PTR 8)
set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
- message(STATUS "Using a data_ptr size of 8")
+ if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+")
+ set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+ else()
+ set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+ endif()
else()
set(CMAKE_C_SIZEOF_DATA_PTR 4)
set(CMAKE_CXX_SIZEOF_DATA_PTR 4)
- message(STATUS "Using a data_ptr size of 4")
-endif()
-
-message(STATUS "Building for minimum iOS version: ${IOS_DEPLOYMENT_TARGET}"
- " (SDK version: ${IOS_SDK_VERSION})")
-# Note that only Xcode 7+ supports the newer more specific:
-# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use:
-# -m(ios/ios-simulator)-version-min instead.
-if (IOS_PLATFORM STREQUAL "OS" OR IOS_PLATFORM STREQUAL "OS64")
- if (XCODE_VERSION VERSION_LESS 7.0)
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mios-version-min=${IOS_DEPLOYMENT_TARGET}")
+ if(ARCHS MATCHES "((^|;|, )(armv7|armv7s|armv7k))+")
+ set(CMAKE_SYSTEM_PROCESSOR "arm")
else()
- # Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
+ set(CMAKE_SYSTEM_PROCESSOR "i386")
endif()
-elseif (IOS_PLATFORM STREQUAL "TVOS")
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mtvos-version-min=${IOS_DEPLOYMENT_TARGET}")
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS")
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mtvos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
-elseif (IOS_PLATFORM STREQUAL "WATCHOS")
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mwatchos-version-min=${IOS_DEPLOYMENT_TARGET}")
-elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS")
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mwatchos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
-else()
- # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
- set(XCODE_IOS_PLATFORM_VERSION_FLAGS
- "-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
endif()
-message(STATUS "Version flags set to: ${XCODE_IOS_PLATFORM_VERSION_FLAGS}")
-if (ENABLE_BITCODE)
+# Note that only Xcode 7+ supports the newer more specific:
+# -m${SDK_NAME}-version-min flags, older versions of Xcode use:
+# -m(ios/ios-simulator)-version-min instead.
+if(${CMAKE_VERSION} VERSION_LESS "3.11")
+ if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64")
+ if(XCODE_VERSION_INT VERSION_LESS 7.0)
+ set(SDK_NAME_VERSION_FLAGS
+ "-mios-version-min=${DEPLOYMENT_TARGET}")
+ else()
+ # Xcode 7.0+ uses flags we can build directly from SDK_NAME.
+ set(SDK_NAME_VERSION_FLAGS
+ "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}")
+ endif()
+ elseif(PLATFORM_INT STREQUAL "TVOS")
+ set(SDK_NAME_VERSION_FLAGS
+ "-mtvos-version-min=${DEPLOYMENT_TARGET}")
+ elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS")
+ set(SDK_NAME_VERSION_FLAGS
+ "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}")
+ elseif(PLATFORM_INT STREQUAL "WATCHOS")
+ set(SDK_NAME_VERSION_FLAGS
+ "-mwatchos-version-min=${DEPLOYMENT_TARGET}")
+ elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
+ set(SDK_NAME_VERSION_FLAGS
+ "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}")
+ elseif(PLATFORM_INT STREQUAL "MAC")
+ set(SDK_NAME_VERSION_FLAGS
+ "-mmacosx-version-min=${DEPLOYMENT_TARGET}")
+ else()
+ # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
+ set(SDK_NAME_VERSION_FLAGS
+ "-mios-simulator-version-min=${DEPLOYMENT_TARGET}")
+ endif()
+elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST")
+ # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets
+ set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET})
+endif()
+
+if(DEFINED APPLE_TARGET_TRIPLE_INT)
+ set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "")
+ set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
+ set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
+ set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
+endif()
+
+if(PLATFORM_INT MATCHES "^MAC_CATALYST")
+ set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks")
+endif()
+
+if(ENABLE_BITCODE_INT)
set(BITCODE "-fembed-bitcode")
- set(HEADER_PAD "")
- message(STATUS "Enabling bitcode support.")
+ set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode")
+ set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES")
else()
set(BITCODE "")
- set(HEADER_PAD "-headerpad_max_install_names")
- message(STATUS "Disabling bitcode support.")
+ set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
endif()
-if (ENABLE_ARC)
+if(ENABLE_ARC_INT)
set(FOBJC_ARC "-fobjc-arc")
- message(STATUS "Enabling ARC support.")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES")
else()
set(FOBJC_ARC "-fno-objc-arc")
- message(STATUS "Disabling ARC support.")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO")
endif()
-if (NOT ENABLE_VISIBILITY)
- set(VISIBILITY "-fvisibility=hidden")
- message(STATUS "Hiding symbols (-fvisibility=hidden).")
+if(NAMED_LANGUAGE_SUPPORT_INT)
+ set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0")
+ set(OBJC_LEGACY_VARS "")
else()
- set(VISIBILITY "")
+ set(OBJC_VARS "")
+ set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0")
endif()
-set(CMAKE_C_FLAGS
-"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS}")
-# Hidden visibilty is required for C++ on iOS.
-set(CMAKE_CXX_FLAGS
-"${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fvisibility-inlines-hidden -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS}")
-set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_MINSIZEREL}")
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${BITCODE} ${CMAKE_CXX_FLAGS_RELEASE}")
-set(CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
-set(CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
+if(NOT ENABLE_VISIBILITY_INT)
+ foreach(lang ${languages})
+ set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "")
+ endforeach()
+ set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES")
+ set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden")
+else()
+ foreach(lang ${languages})
+ set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "")
+ endforeach()
+ set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO")
+ set(VISIBILITY "-fvisibility=default")
+endif()
-# In order to ensure that the updated compiler flags are used in try_compile()
-# tests, we have to forcibly set them in the CMake cache, not merely set them
-# in the local scope.
-list(APPEND VARS_TO_FORCE_IN_CACHE
- CMAKE_C_FLAGS
- CMAKE_CXX_FLAGS
- CMAKE_CXX_FLAGS_RELWITHDEBINFO
- CMAKE_CXX_FLAGS_MINSIZEREL
- CMAKE_CXX_FLAGS_RELEASE
- CMAKE_C_LINK_FLAGS
- CMAKE_CXX_LINK_FLAGS)
-foreach(VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE})
- set(${VAR_TO_FORCE} "${${VAR_TO_FORCE}}" CACHE STRING "")
-endforeach()
+if(DEFINED APPLE_TARGET_TRIPLE)
+ set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}")
+endif()
+
+#Check if Xcode generator is used since that will handle these flags automagically
+if(CMAKE_GENERATOR MATCHES "Xcode")
+ message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.")
+else()
+ set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_C_FLAGS}")
+ set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}")
+ set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+ set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}")
+ set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_CXX_FLAGS}")
+ set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}")
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+ set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}")
+ if(NAMED_LANGUAGE_SUPPORT_INT)
+ set(CMAKE_OBJC_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJC_FLAGS}")
+ set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}")
+ set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}")
+ set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}")
+ set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}")
+ set(CMAKE_OBJCXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJCXX_FLAGS}")
+ set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}")
+ set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}")
+ set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}")
+ set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}")
+ endif()
+ set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
+ set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
+ if(NAMED_LANGUAGE_SUPPORT_INT)
+ set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}")
+ set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}")
+ endif()
+ set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES} ${APPLE_TARGET_TRIPLE_FLAG}")
+endif()
+
+## Print status messages to inform of the current state
+message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}")
+message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}")
+message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
+message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
+message(STATUS "Using libtool: ${BUILD_LIBTOOL}")
+message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}")
+if(DEFINED APPLE_TARGET_TRIPLE)
+ message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}")
+endif()
+message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}"
+ " (SDK version: ${SDK_VERSION})")
+if(MODERN_CMAKE)
+ message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!")
+ if(PLATFORM_INT MATCHES ".*COMBINED")
+ message(STATUS "Will combine built (static) artifacts into FAT lib...")
+ endif()
+endif()
+if(CMAKE_GENERATOR MATCHES "Xcode")
+ message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}")
+endif()
+message(STATUS "CMake version: ${CMAKE_VERSION}")
+if(DEFINED SDK_NAME_VERSION_FLAGS)
+ message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}")
+endif()
+message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}")
+if(ENABLE_BITCODE_INT)
+ message(STATUS "Bitcode: Enabled")
+else()
+ message(STATUS "Bitcode: Disabled")
+endif()
+
+if(ENABLE_ARC_INT)
+ message(STATUS "ARC: Enabled")
+else()
+ message(STATUS "ARC: Disabled")
+endif()
+
+if(ENABLE_VISIBILITY_INT)
+ message(STATUS "Hiding symbols: Disabled")
+else()
+ message(STATUS "Hiding symbols: Enabled")
+endif()
+
+# Set global properties
+set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}")
+set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}")
+set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}")
+set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}")
+set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
+
+# Export configurable variables for the try_compile() command.
+set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
+ PLATFORM
+ XCODE_VERSION_INT
+ SDK_VERSION
+ NAMED_LANGUAGE_SUPPORT
+ DEPLOYMENT_TARGET
+ CMAKE_DEVELOPER_ROOT
+ CMAKE_OSX_SYSROOT_INT
+ ENABLE_BITCODE
+ ENABLE_ARC
+ CMAKE_ASM_COMPILER
+ CMAKE_C_COMPILER
+ CMAKE_C_COMPILER_TARGET
+ CMAKE_CXX_COMPILER
+ CMAKE_CXX_COMPILER_TARGET
+ BUILD_LIBTOOL
+ CMAKE_INSTALL_NAME_TOOL
+ CMAKE_C_FLAGS
+ CMAKE_C_DEBUG
+ CMAKE_C_MINSIZEREL
+ CMAKE_C_RELWITHDEBINFO
+ CMAKE_C_RELEASE
+ CMAKE_CXX_FLAGS
+ CMAKE_CXX_FLAGS_DEBUG
+ CMAKE_CXX_FLAGS_MINSIZEREL
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_C_LINK_FLAGS
+ CMAKE_CXX_LINK_FLAGS
+ CMAKE_ASM_FLAGS
+)
+
+if(NAMED_LANGUAGE_SUPPORT_INT)
+ list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
+ CMAKE_OBJC_FLAGS
+ CMAKE_OBJC_DEBUG
+ CMAKE_OBJC_MINSIZEREL
+ CMAKE_OBJC_RELWITHDEBINFO
+ CMAKE_OBJC_RELEASE
+ CMAKE_OBJCXX_FLAGS
+ CMAKE_OBJCXX_DEBUG
+ CMAKE_OBJCXX_MINSIZEREL
+ CMAKE_OBJCXX_RELWITHDEBINFO
+ CMAKE_OBJCXX_RELEASE
+ CMAKE_OBJC_LINK_FLAGS
+ CMAKE_OBJCXX_LINK_FLAGS
+ )
+endif()
set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
-set (CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks")
-set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib ${HEADER_PAD}")
-set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle ${HEADER_PAD}")
+set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks")
+set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
+set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names")
set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a")
+set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name")
-# Hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old
-# build tree (where install_name_tool was hardcoded) and where
-# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't fail in
-# CMakeFindBinUtils.cmake (because it isn't rerun) hardcode
-# CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did
-# before, Alex.
-if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
- find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
-endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
+# Set the find root to the SDK developer roots.
+# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds.
+if(NOT PLATFORM_INT MATCHES "^MAC.*$")
+ list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
+ set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib" CACHE INTERNAL "")
+endif()
-# Set the find root to the iOS developer roots and to user defined paths.
-set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT}
- ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root" FORCE)
# Default to searching for frameworks first.
set(CMAKE_FIND_FRAMEWORK FIRST)
+
# Set up the default search directories for frameworks.
-set(CMAKE_SYSTEM_FRAMEWORK_PATH
- ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
- ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
- ${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks)
-# Only search the specified iOS SDK, not the remainder of the host filesystem.
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-# This little macro lets you set any XCode specific property.
+if(PLATFORM_INT MATCHES "^MAC_CATALYST")
+ set(CMAKE_FRAMEWORK_PATH
+ ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
+ ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks
+ ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks
+ ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "")
+else()
+ set(CMAKE_FRAMEWORK_PATH
+ ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
+ ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks
+ ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "")
+endif()
+
+# By default, search both the specified iOS SDK and the remainder of the host filesystem.
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "")
+endif()
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "")
+endif()
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "")
+endif()
+if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
+ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "")
+endif()
+
+#
+# Some helper-macros below to simplify and beautify the CMakeFile
+#
+
+# This little macro lets you set any Xcode specific property.
macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION)
set(XCODE_RELVERSION_I "${XCODE_RELVERSION}")
- if (XCODE_RELVERSION_I STREQUAL "All")
- set_property(TARGET ${TARGET} PROPERTY
- XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}")
+ if(XCODE_RELVERSION_I STREQUAL "All")
+ set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}")
else()
- set_property(TARGET ${TARGET} PROPERTY
- XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}")
+ set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}")
endif()
endmacro(set_xcode_property)
+
# This macro lets you find executable programs on the host system.
macro(find_host_package)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
- set(IOS FALSE)
+ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER)
+ set(_TOOLCHAIN_IOS ${IOS})
+ set(IOS OFF)
find_package(${ARGN})
- set(IOS TRUE)
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+ set(IOS ${_TOOLCHAIN_IOS})
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
+ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
endmacro(find_host_package)