| name: crossbuild-mingw |
| |
| on: |
| push: |
| branches: [ main ] |
| tags: ["*.*.*"] |
| pull_request: |
| branches: [ main ] |
| |
| permissions: |
| contents: write |
| |
| jobs: |
| build: |
| runs-on: ubuntu-24.04 |
| name: ${{ matrix.name }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: win32 |
| ARCH: 32 |
| PACKAGES: g++-mingw-w64-i686 wine wine32 |
| - name: win64 |
| ARCH: 64 |
| PACKAGES: g++-mingw-w64-x86-64 wine wine64 wine32:i386 |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
| - name: Setup Ccache |
| uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18 |
| - name: Install Dependencies |
| run: | |
| sudo dpkg --add-architecture i386 |
| sudo apt-get update |
| sudo apt install -y \ |
| zip \ |
| ${{ matrix.PACKAGES }} |
| - name: Setup Python |
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 |
| with: |
| python-version: '3.12' |
| - name: Install Python Dependencies |
| run: pip3 install -r .ci/requirements.txt --require-hashes |
| - name: Build |
| run: bash .ci/build-win.sh ${{ matrix.ARCH }} |
| - name: Test |
| run: meson devenv -Cbuild-win${{ matrix.ARCH }} meson test -t 10 --print-errorlogs --suite=harfbuzz |
| - name: Archive artifacts |
| uses: actions/upload-artifact@v4 |
| with: |
| name: harfbuzz-win${{ matrix.ARCH }} |
| path: harfbuzz-win${{ matrix.ARCH }}.zip |
| if-no-files-found: error |
| |
| release: |
| name: Create and populate release |
| needs: build |
| runs-on: ubuntu-24.04 |
| if: contains(github.ref, 'refs/tags/') |
| env: |
| GH_TOKEN: ${{ github.token }} |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Download artifacts |
| uses: actions/download-artifact@v5 |
| - name: Rename artifacts |
| run: | |
| for file in harfbuzz-win*.zip; do |
| mv -v "$file" "${file%.zip}-${{ github.ref_name }}.zip" |
| done |
| - name: Check for release |
| id: create_release |
| run: | |
| if ! gh release view ${{ github.ref_name }}; then |
| gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --draft |
| fi |
| - name: Populate release |
| run: | |
| gh release upload ${{ github.ref_name }} harfbuzz-win*-${{ github.ref_name }}.zip --clobber |