From fc1635bba63225e6db26a3e9d4a44c376e9166ea Mon Sep 17 00:00:00 2001 From: nihui Date: Mon, 14 Aug 2023 15:41:28 +0800 Subject: [PATCH] update 3.4.20 and 4.8.0 and some ci fix and highgui fix (#53) * update 3.4.20 patch * update 4.8.0 patch * update toolchain and ci * split ios simulator * fix wasm simd build * enable cxx11 for opencv2 * workaround for macos build * workaround for ios build * do not convert RGB/BGR inplace on imencode/imwrite * Update stb_image.h * enable stbi neon * Update highgui.cpp * mac catalyst * add test project * opencv2 link openmp * opencv 2.4.13.7 on newer msvc * enable c++11 test * test all packages --- .github/workflows/release.yml | 2853 ++++++++++++----- README.md | 186 +- highgui/src/highgui.cpp | 19 +- highgui/src/stb_image.h | 144 +- opencv-2.4.13.7-enable-cxx11.patch | 11 + opencv-2.4.13.7-link-openmp.patch | 16 + opencv-2.4.13.7-newer-msvc.patch | 28 + opencv-3.4.18-no-zlib.patch | 12 - opencv-3.4.20-fix-emscripten-include.patch | 11 + opencv-3.4.20-link-openmp.patch | 14 + ...-rtti.patch => opencv-3.4.20-no-rtti.patch | 90 +- opencv-3.4.20-no-zlib.patch | 12 + ...d.patch => opencv-3.4.20-unsafe-xadd.patch | 8 +- opencv-4.6.0-no-zlib.patch | 12 - opencv-4.8.0-fix-emscripten-include.patch | 11 + ...o-rtti.patch => opencv-4.8.0-no-rtti.patch | 126 +- opencv-4.8.0-no-zlib.patch | 12 + ...dd.patch => opencv-4.8.0-unsafe-xadd.patch | 8 +- test/CMakeLists.txt | 17 + test/main.cpp | 14 + toolchains/ios.toolchain.cmake | 1178 +++++-- 21 files changed, 3484 insertions(+), 1298 deletions(-) create mode 100644 opencv-2.4.13.7-enable-cxx11.patch create mode 100644 opencv-2.4.13.7-link-openmp.patch create mode 100644 opencv-2.4.13.7-newer-msvc.patch delete mode 100644 opencv-3.4.18-no-zlib.patch create mode 100644 opencv-3.4.20-fix-emscripten-include.patch create mode 100644 opencv-3.4.20-link-openmp.patch rename opencv-3.4.18-no-rtti.patch => opencv-3.4.20-no-rtti.patch (77%) create mode 100644 opencv-3.4.20-no-zlib.patch rename opencv-3.4.18-unsafe-xadd.patch => opencv-3.4.20-unsafe-xadd.patch (83%) delete mode 100644 opencv-4.6.0-no-zlib.patch create mode 100644 opencv-4.8.0-fix-emscripten-include.patch rename opencv-4.6.0-no-rtti.patch => opencv-4.8.0-no-rtti.patch (76%) create mode 100644 opencv-4.8.0-no-zlib.patch rename opencv-4.6.0-unsafe-xadd.patch => opencv-4.8.0-unsafe-xadd.patch (81%) create mode 100644 test/CMakeLists.txt create mode 100644 test/main.cpp 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 @@ ![Firefox](https://img.shields.io/badge/Firefox-FF7139?style=for-the-badge&logo=Firefox-Browser&logoColor=white) ![Chrome](https://img.shields.io/badge/Chrome-4285F4?style=for-the-badge&logo=Google-chrome&logoColor=white) -✔️ 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)