This commit is contained in:
nihui
2021-04-29 17:39:50 +08:00
committed by GitHub
parent 313311d7a1
commit b54e8e2561
2 changed files with 238 additions and 1 deletions

View File

@@ -805,8 +805,183 @@ jobs:
name: ${{ env.PACKAGENAME }}
path: ${{ env.PACKAGENAME }}.zip
macos-opencv4:
runs-on: macos-latest
env:
OPENCV_VERSION: 4.5.1
PACKAGENAME: opencv-mobile-4.5.1-macos
steps:
- uses: actions/checkout@v2
- 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.5.1-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" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2
cmake --build . --target install
- name: build-arm64
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 \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2
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: upload-zip
uses: actions/upload-artifact@v2
with:
name: ${{ env.PACKAGENAME }}
path: ${{ env.PACKAGENAME }}.zip
macos-opencv3:
runs-on: macos-latest
env:
OPENCV_VERSION: 3.4.13
PACKAGENAME: opencv-mobile-3.4.13-macos
steps:
- uses: actions/checkout@v2
- 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.13-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" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2
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 \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv3_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2
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: upload-zip
uses: actions/upload-artifact@v2
with:
name: ${{ env.PACKAGENAME }}
path: ${{ env.PACKAGENAME }}.zip
macos-opencv2:
runs-on: macos-latest
env:
OPENCV_VERSION: 2.4.13.7
PACKAGENAME: opencv-mobile-2.4.13.7-macos
steps:
- uses: actions/checkout@v2
- 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
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_OSX_ARCHITECTURES="x86_64" \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2 || echo "qaq"
# workaround ar @list issue on macos
cd modules/world
/Applications/Xcode_12.2.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 \
-DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv2_cmake_options.txt` -DBUILD_opencv_world=ON ..
cmake --build . -j 2 || echo "qaq"
# workaround ar @list issue on macos
cd modules/world
/Applications/Xcode_12.2.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: upload-zip
uses: actions/upload-artifact@v2
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]
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]
runs-on: ubuntu-latest
steps:
- name: download
@@ -956,3 +1131,36 @@ jobs:
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.5.1-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.13-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

View File

@@ -0,0 +1,29 @@
set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR arm64)
set(UNIX TRUE)
set(APPLE TRUE)
set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architecture")
# query xcodebuild for SDK root
execute_process(COMMAND xcodebuild -version -sdk macosx Path
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT}")
set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT} CACHE STRING "find search path root" FORCE)
set(CMAKE_FIND_FRAMEWORK FIRST)
set(CMAKE_SYSTEM_FRAMEWORK_PATH
${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks
)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)