| name: Cross-compile with mingw |
| |
| on: |
| workflow_dispatch: |
| push: |
| branches: [ master ] |
| paths: |
| - '**.h' |
| - '**.c' |
| - 'liblouis/liblouis/liblouis.h.in' |
| pull_request: |
| branches: [ master ] |
| paths: |
| - '**.h' |
| - '**.c' |
| - 'liblouis/liblouis/liblouis.h.in' |
| |
| env: |
| LIBYAML_VERSION: 0.1.4 |
| |
| jobs: |
| build: |
| name: Build for win64 |
| |
| runs-on: ubuntu-22.04 |
| env: |
| HOST: x86_64-w64-mingw32 |
| PREFIX: /tmp/build/win64 |
| |
| steps: |
| - name: Harden Runner |
| uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0 |
| with: |
| egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs |
| |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
| - name: Install dependencies |
| run: sudo apt-get update -qq && sudo apt-get install -y autoconf automake curl libtool make mingw-w64 pkg-config texinfo wine64 zip patch jq |
| - name: Build libyaml |
| run: | |
| curl -L https://github.com/yaml/libyaml/archive/${{ env.LIBYAML_VERSION }}.tar.gz | tar zx |
| cd libyaml-${{ env.LIBYAML_VERSION }} |
| patch -p1 < ../libyaml_mingw.patch |
| ./bootstrap |
| ./configure --host ${{ env.HOST }} --prefix=${{ env.PREFIX }} |
| make |
| make install |
| - name: Autogen && configure |
| run: | |
| ./autogen.sh |
| ./configure --host ${{ env.HOST }} --enable-ucs4 --prefix=${{ env.PREFIX }} CPPFLAGS="-I${{ env.PREFIX }}/include/" LDFLAGS="-L${{ env.PREFIX }}/lib/" |
| - name: Make |
| run: make LDFLAGS="-L${{ env.PREFIX }}/lib/ -avoid-version -Xcompiler -static-libgcc" |
| - name: Check |
| run: make check WINE=wine64 |
| - name: Store the test suite log |
| if: ${{ failure() }} |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 |
| with: |
| name: test-suite-w64.log |
| path: tests/test-suite.log |
| - name: Install |
| run: make install |
| |
| - name: Zip up the build artifacts |
| run: ( cd ${{ env.PREFIX }}; zip -r liblouis.zip * ) |
| - name: Archive the build artifacts |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 |
| with: |
| name: liblouis-w64.zip |
| path: ${{ env.PREFIX }}/liblouis.zip |
| |
| - name: Upload the assets to the snapshot release |
| # only upload to snapshot page if it is a push to master in the main repo |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository =='liblouis/liblouis'}} |
| uses: shogo82148/actions-upload-release-asset@59cbc563d11314e48122193f8fe5cdda62ea6cf9 # v1.9.1 |
| with: |
| github_token: ${{ secrets.GITHUB_TOKEN }} |
| upload_url: https://uploads.github.com/repos/liblouis/liblouis/releases/8031256/assets{?name,label} |
| asset_path: ${{ env.PREFIX }}/liblouis.zip |
| asset_name: liblouis-w64.zip |
| asset_content_type: application/zip |
| overwrite: true |
| |
| - name: Edit the description of the snapshot release |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository =='liblouis/liblouis'}} |
| run: | |
| if ! curl -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ |
| -H "Accept: application/json" \ |
| -H "Content-type: application/json" \ |
| -X PATCH \ |
| "https://api.github.com/repos/liblouis/liblouis/releases/8031256" \ |
| -d "{\"tag_name\": \"snapshot\", \ |
| \"body\": \"Latest build: ${{ github.sha }}\"}" \ |
| 2>/dev/null \ |
| | jq -e '.url'; \ |
| then \ |
| echo "Failed to edit release description" && \ |
| exit 1; \ |
| fi |
| |
| # win32 build disabled for now: see https://github.com/liblouis/liblouis/issues/1135 |
| |
| #build-w32: |
| # name: Build for win32 |
| # |
| # runs-on: ubuntu-latest |
| # env: |
| # HOST: i686-w64-mingw32 |
| # PREFIX: /tmp/build/win32 |
| # |
| # steps: |
| # - name: Harden Runner |
| # uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0 |
| # with: |
| # egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs |
| # |
| # - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
| # - name: Install dependencies |
| # run: sudo apt-get update -qq && sudo apt-get install -y autoconf automake curl libtool make pkg-config texinfo zip patch |
| # - name: Install wine for 32-bit architecture |
| # run: | |
| # sudo apt-get update -qq |
| # sudo dpkg --add-architecture i386 |
| # sudo apt-get update |
| # sudo apt-get install -y fonts-wine libc6-dev-i386-x32-cross mingw-w64 mingw-w64-i686-dev wine-development wine32 # FIXME: in 20.4 wine-development will be just wine |
| # |
| # - name: Build libyaml |
| # run: | |
| # curl -L https://github.com/yaml/libyaml/archive/${{ env.LIBYAML_VERSION }}.tar.gz | tar zx |
| # cd libyaml-${{ env.LIBYAML_VERSION }} |
| # patch -p1 < ../libyaml_mingw.patch |
| # ./bootstrap |
| # ./configure --host ${{ env.HOST }} --prefix=${{ env.PREFIX }} |
| # make |
| # make install |
| # - name: Autogen && configure |
| # run: | |
| # ./autogen.sh |
| # ./configure --host ${{ env.HOST }} --enable-ucs4 --prefix=${{ env.PREFIX }} CFLAGS="-O0" CPPFLAGS="-I${{ env.PREFIX }}/include/" LDFLAGS="-L${{ env.PREFIX }}/lib/" |
| # - name: Make |
| # run: make LDFLAGS="-L${{ env.PREFIX }}/lib/ -avoid-version -Xcompiler -static-libgcc" |
| # - name: Check |
| # run: make check WINE=wine |
| # - name: Store the test suite log |
| # if: ${{ failure() }} |
| # uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 |
| # with: |
| # name: test-suite-w32.log |
| # path: tests/test-suite.log |
| # - name: Install |
| # run: make install |
| # |
| # - name: Zip up the build artifacts |
| # run: ( cd ${{ env.PREFIX }}; zip -r liblouis.zip * ) |
| # - name: Archive the build artifacts |
| # uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 |
| # with: |
| # name: liblouis-w32.zip |
| # path: ${{ env.PREFIX }}/liblouis.zip |
| # |
| # - name: Upload the assets to the snapshot release |
| # # only upload to snapshot page if it is a push to master in the main repo |
| # if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository =='liblouis/liblouis'}} |
| # uses: shogo82148/actions-upload-release-asset@59cbc563d11314e48122193f8fe5cdda62ea6cf9 # v1.9.1 |
| # with: |
| # github_token: ${{ secrets.GITHUB_TOKEN }} |
| # upload_url: https://uploads.github.com/repos/liblouis/liblouis/releases/8031256/assets{?name,label} |
| # asset_path: ${{ env.PREFIX }}/liblouis.zip |
| # asset_name: liblouis-w32.zip |
| # asset_content_type: application/zip |
| # overwrite: true |