name: build-wheels-aarch64

on:
  push:
    branches:
      - wheel
    tags:
      - '*'
  workflow_dispatch:

env:
  SHERPA_NCNN_IS_IN_GITHUB_ACTIONS: 1

concurrency:
  group: build-wheels-aarch64-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_wheels_aarch64:
    name: ${{ matrix.python-version }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        python-version: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"]

    steps:
      - uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
        with:
          platforms: all

      # see https://cibuildwheel.readthedocs.io/en/stable/changelog/
      # for a list of versions
      - name: Build wheels
        uses: pypa/cibuildwheel@v2.15.0
        env:
          CIBW_BEFORE_ALL: |
            git clone --depth 1 --branch v1.2.12 https://github.com/alsa-project/alsa-lib
            cd alsa-lib
            ./gitcompile
            cd ..
            echo "PWD"
            ls -lh /project/alsa-lib/src/.libs
          CIBW_ENVIRONMENT: CPLUS_INCLUDE_PATH=/project/alsa-lib/include:$CPLUS_INCLUDE_PATH SHERPA_NCNN_ALSA_LIB_DIR=/project/alsa-lib/src/.libs LD_LIBRARY_PATH=/project/build/bdist.linux-x86_64/wheel/sherpa_ncnn/lib:$SHERPA_NCNN_ALSA_LIB_DIR SHERPA_NCNN_MAKE_ARGS="VERBOSE=1" SHERPA_NCNN_ENABLE_ALSA=1 SHERPA_NCNN_CMAKE_ARGS='-DCMAKE_C_FLAGS="-march=armv8-a" -DCMAKE_CXX_FLAGS="-march=armv8-a"'
          CIBW_BUILD: "${{ matrix.python-version}}-* "
          CIBW_SKIP: "cp27-* cp35-* cp36-* *-win32 pp* *-musllinux* *-manylinux_i686"
          CIBW_BUILD_VERBOSITY: 3
          CIBW_ARCHS_LINUX: aarch64

      - name: Display wheels
        shell: bash
        run: |
          ls -lh ./wheelhouse/

      - uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.python-version }}
          path: ./wheelhouse/*.whl

      - name: Publish wheels to PyPI
        env:
          TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
          TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install wheel twine setuptools

          twine upload ./wheelhouse/*.whl
