@@ -337,6 +337,101 @@ jobs:
337337 name : ${{ env.PACKAGE_NAME }}
338338 path : ${{ env.PACKAGE_NAME }}.zip
339339
340+ harmonyos :
341+ needs : [setup]
342+ runs-on : ubuntu-latest
343+ strategy :
344+ matrix :
345+ opencv-version : [2.4.13.7, 3.4.20, 4.10.0]
346+ env :
347+ OHOS_NDK_CMAKE : $GITHUB_WORKSPACE/ohos-sdk/linux/native/build-tools/cmake/bin/cmake
348+ COMMON_CMAKE_OPTIONS : |
349+ -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/ohos-sdk/linux/native/build/cmake/ohos.toolchain.cmake \
350+ -DCMAKE_INSTALL_PREFIX=install \
351+ -DCMAKE_BUILD_TYPE=Release \
352+ steps :
353+ - uses : actions/checkout@v4
354+ - name : ndk-fix-debug
355+ run : |
356+ wget https://repo.huaweicloud.com/harmonyos/os/4.1.1-Release/ohos-sdk-windows_linux-public.tar.gz
357+ tar -xf ohos-sdk-windows_linux-public.tar.gz
358+ cd ohos-sdk/linux
359+ unzip -q native-linux-x64-4.1.7.8-Release.zip
360+ - uses : actions/download-artifact@v4
361+ with :
362+ name : opencv-mobile-${{ matrix.opencv-version }}-source
363+ - name : setup-opencv-source
364+ run : |
365+ unzip -q opencv-mobile-${{ matrix.opencv-version }}.zip
366+ echo "SOURCE_DIR=opencv-mobile-${{ matrix.opencv-version }}" >> $GITHUB_ENV
367+ echo "PACKAGE_NAME=opencv-mobile-${{ matrix.opencv-version }}-harmonyos" >> $GITHUB_ENV
368+ - name : build-armeabi-v7a
369+ run : |
370+ cd ${{ env.SOURCE_DIR }}
371+ mkdir build-armeabi-v7a && cd build-armeabi-v7a
372+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="armeabi-v7a" \
373+ `cat ../options.txt` -DBUILD_opencv_world=OFF -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
374+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
375+ ${{ env.OHOS_NDK_CMAKE }} --build . --target install
376+ - name : build-arm64-v8a
377+ run : |
378+ cd ${{ env.SOURCE_DIR }}
379+ mkdir build-arm64-v8a && cd build-arm64-v8a
380+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="arm64-v8a" \
381+ `cat ../options.txt` -DBUILD_opencv_world=OFF -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
382+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
383+ ${{ env.OHOS_NDK_CMAKE }} --build . --target install
384+ - name : build-x86_64
385+ run : |
386+ cd ${{ env.SOURCE_DIR }}
387+ mkdir build-x86_64 && cd build-x86_64
388+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="x86_64" \
389+ `cat ../options.txt` -DBUILD_opencv_world=OFF -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
390+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
391+ ${{ env.OHOS_NDK_CMAKE }} --build . --target install
392+ - name : package
393+ run : |
394+ mkdir ${{ env.PACKAGE_NAME }}
395+ mkdir ${{ env.PACKAGE_NAME }}/x86_64
396+ mkdir ${{ env.PACKAGE_NAME }}/armeabi-v7a
397+ mkdir ${{ env.PACKAGE_NAME }}/arm64-v8a
398+ cp -rf ${{ env.SOURCE_DIR }}/build-x86_64/install/* ${{ env.PACKAGE_NAME }}/x86_64/
399+ cp -rf ${{ env.SOURCE_DIR }}/build-armeabi-v7a/install/* ${{ env.PACKAGE_NAME }}/armeabi-v7a/
400+ cp -rf ${{ env.SOURCE_DIR }}/build-arm64-v8a/install/* ${{ env.PACKAGE_NAME }}/arm64-v8a/
401+ zip -9 -r ${{ env.PACKAGE_NAME }}.zip ${{ env.PACKAGE_NAME }}
402+ - name : set-opencv-dir
403+ if : matrix.opencv-version == '2.4.13.7' || matrix.opencv-version == '3.4.20'
404+ run : echo "OPENCV_SUBDIR=share/OpenCV" >> $GITHUB_ENV
405+ - name : set-opencv-dir
406+ if : matrix.opencv-version == '4.10.0'
407+ run : echo "OPENCV_SUBDIR=lib/cmake/opencv4" >> $GITHUB_ENV
408+ - name : test-armeabi-v7a
409+ run : |
410+ cd test
411+ mkdir build-armeabi-v7a && cd build-armeabi-v7a
412+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="armeabi-v7a" \
413+ -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGE_NAME }}/armeabi-v7a/${{ env.OPENCV_SUBDIR }} ..
414+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
415+ - name : test-arm64-v8a
416+ run : |
417+ cd test
418+ mkdir build-arm64-v8a && cd build-arm64-v8a
419+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="arm64-v8a" \
420+ -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGE_NAME }}/arm64-v8a/${{ env.OPENCV_SUBDIR }} ..
421+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
422+ - name : test-x86_64
423+ run : |
424+ cd test
425+ mkdir build-x86_64 && cd build-x86_64
426+ ${{ env.OHOS_NDK_CMAKE }} ${{ env.COMMON_CMAKE_OPTIONS }} -DOHOS_ARCH="x86_64" \
427+ -DOpenCV_DIR=$GITHUB_WORKSPACE/${{ env.PACKAGE_NAME }}/x86_64/${{ env.OPENCV_SUBDIR }} ..
428+ ${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
429+ - name : upload
430+ uses : actions/upload-artifact@v4
431+ with :
432+ name : ${{ env.PACKAGE_NAME }}
433+ path : ${{ env.PACKAGE_NAME }}.zip
434+
340435 ios :
341436 needs : [setup]
342437 runs-on : macos-13
@@ -1747,7 +1842,7 @@ jobs:
17471842 release :
17481843 permissions :
17491844 contents : write # for softprops/action-gh-release to create a release
1750- needs : [setup, android, ios, ios-simulator, armlinux, macos, mac-catalyst, watchos, watchos-simulator, tvos, tvos-simulator, visionos, visionos-simulator, windows, ubuntu, webassembly, apple, devboard]
1845+ needs : [setup, android, harmonyos, ios, ios-simulator, armlinux, macos, mac-catalyst, watchos, watchos-simulator, tvos, tvos-simulator, visionos, visionos-simulator, windows, ubuntu, webassembly, apple, devboard]
17511846 runs-on : ubuntu-latest
17521847 steps :
17531848 - name : download
0 commit comments