Skip to content

Commit 17c20b3

Browse files
authored
build harmonyos (#123)
1 parent 4dbc3c0 commit 17c20b3

File tree

1 file changed

+96
-1
lines changed

1 file changed

+96
-1
lines changed

.github/workflows/release.yml

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)