15e5c12b0Sopenharmony_ci# See also https://docs.github.com/en/actions/learn-github-actions/expressions
25e5c12b0Sopenharmony_ci# See also https://github.com/marketplace/actions/setup-android-ndk
35e5c12b0Sopenharmony_ci
45e5c12b0Sopenharmony_ciname: CI
55e5c12b0Sopenharmony_ci
65e5c12b0Sopenharmony_cion: [push, pull_request]
75e5c12b0Sopenharmony_ci
85e5c12b0Sopenharmony_cijobs:
95e5c12b0Sopenharmony_ci  build:
105e5c12b0Sopenharmony_ci    runs-on: ubuntu-latest
115e5c12b0Sopenharmony_ci    strategy:
125e5c12b0Sopenharmony_ci      fail-fast: false
135e5c12b0Sopenharmony_ci      matrix:
145e5c12b0Sopenharmony_ci        build:
155e5c12b0Sopenharmony_ci        - android
165e5c12b0Sopenharmony_ci        - linux-gcc
175e5c12b0Sopenharmony_ci        - linux-clang
185e5c12b0Sopenharmony_ci        - linux-x86-gcc
195e5c12b0Sopenharmony_ci        - linux-powerpc64-gcc
205e5c12b0Sopenharmony_ci        - linux-mingw64-gcc
215e5c12b0Sopenharmony_ci        - macos
225e5c12b0Sopenharmony_ci        include:
235e5c12b0Sopenharmony_ci        - build: android
245e5c12b0Sopenharmony_ci          cc: clang
255e5c12b0Sopenharmony_ci          host: aarch64-linux-android32
265e5c12b0Sopenharmony_ci        - build: linux-gcc
275e5c12b0Sopenharmony_ci          cc: gcc
285e5c12b0Sopenharmony_ci        - build: linux-clang
295e5c12b0Sopenharmony_ci          cc: clang
305e5c12b0Sopenharmony_ci        - build: linux-x86-gcc
315e5c12b0Sopenharmony_ci          cc: gcc
325e5c12b0Sopenharmony_ci          arch: x86
335e5c12b0Sopenharmony_ci        - build: linux-powerpc64-gcc
345e5c12b0Sopenharmony_ci          cc: gcc
355e5c12b0Sopenharmony_ci          host: powerpc64-linux-gnu
365e5c12b0Sopenharmony_ci        - build: linux-mingw64-gcc
375e5c12b0Sopenharmony_ci          cc: gcc
385e5c12b0Sopenharmony_ci          host: x86_64-w64-mingw32
395e5c12b0Sopenharmony_ci          cflags: -D__USE_MINGW_ANSI_STDIO
405e5c12b0Sopenharmony_ci        - build: macos
415e5c12b0Sopenharmony_ci          cc: clang
425e5c12b0Sopenharmony_ci          os: macos-latest
435e5c12b0Sopenharmony_ci    steps:
445e5c12b0Sopenharmony_ci      - uses: actions/checkout@v3
455e5c12b0Sopenharmony_ci      - name: Install Android NDK
465e5c12b0Sopenharmony_ci        run: |
475e5c12b0Sopenharmony_ci          if [ ${{matrix.build}} = android ]; then \
485e5c12b0Sopenharmony_ci              wget --quiet https://dl.google.com/android/repository/android-ndk-r24-linux.zip; \
495e5c12b0Sopenharmony_ci              unzip -q android-ndk-r24-linux.zip;  \
505e5c12b0Sopenharmony_ci          fi
515e5c12b0Sopenharmony_ci      - name: Install Ubuntu packages
525e5c12b0Sopenharmony_ci        run: |
535e5c12b0Sopenharmony_ci          sudo apt-get -q update
545e5c12b0Sopenharmony_ci          case "${{matrix.host}}" in                                        \
555e5c12b0Sopenharmony_ci            x86_64-w64-mingw32)                                             \
565e5c12b0Sopenharmony_ci              sudo apt-get -q install -y binutils-mingw-w64 gcc-mingw-w64;; \
575e5c12b0Sopenharmony_ci            powerpc64-linux-gnu)                                            \
585e5c12b0Sopenharmony_ci              sudo apt-get -q install -y binutils-powerpc64-linux-gnu       \
595e5c12b0Sopenharmony_ci              gcc-powerpc64-linux-gnu;;                                     \
605e5c12b0Sopenharmony_ci          esac
615e5c12b0Sopenharmony_ci      - name: Build
625e5c12b0Sopenharmony_ci        run: |
635e5c12b0Sopenharmony_ci          echo "HOST=${{matrix.host}}"
645e5c12b0Sopenharmony_ci          NDK=$PWD/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/bin
655e5c12b0Sopenharmony_ci          export PATH="$NDK:$PATH"
665e5c12b0Sopenharmony_ci          ./autogen.sh
675e5c12b0Sopenharmony_ci          ./configure --host=${{matrix.host}} \
685e5c12b0Sopenharmony_ci              CC=${{ matrix.host && format('{0}-{1}', matrix.host, matrix.cc) || matrix.cc }} \
695e5c12b0Sopenharmony_ci              CFLAGS="-Wall -Wextra -Werror -Wno-sign-compare -Wno-unused-function -Wno-unused-parameter ${{matrix.cflags}}"
705e5c12b0Sopenharmony_ci          make -j$(nproc)
71