mirror of
https://github.com/nihui/opencv-mobile.git
synced 2025-12-24 13:07:55 +08:00
macos (#13)
This commit is contained in:
210
.github/workflows/release.yml
vendored
210
.github/workflows/release.yml
vendored
@@ -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
|
||||
|
||||
29
toolchains/macos-arm64.toolchain.cmake
Normal file
29
toolchains/macos-arm64.toolchain.cmake
Normal 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)
|
||||
Reference in New Issue
Block a user