Skip to content

Commit

Permalink
Update cross-compilation toolchain to the new upstream packages (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
Blackhex committed Sep 11, 2024
1 parent 3cb0c8b commit 916a5c8
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 77 deletions.
2 changes: 1 addition & 1 deletion .github/scripts/pthread-headers-hack-after.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e # exit on error
set -x # echo on
set -o pipefail # fail of any command in pipeline is an error

pacman -R --noconfirm mingw-w64-cross-winpthreads || true
pacman -R --noconfirm mingw-w64-cross-mingw64-winpthreads || true
rm -rf /opt/aarch64-w64-mingw32/include/pthread_signal.h
rm -rf /opt/aarch64-w64-mingw32/include/pthread_unistd.h
rm -rf /opt/aarch64-w64-mingw32/include/pthread_time.h
2 changes: 1 addition & 1 deletion .github/scripts/pthread-headers-hack-before.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e # exit on error
set -x # echo on
set -o pipefail # fail of any command in pipeline is an error

pacman -S --noconfirm mingw-w64-cross-winpthreads
pacman -S --noconfirm mingw-w64-cross-mingw64-winpthreads
cp /opt/x86_64-w64-mingw32/include/pthread_signal.h /opt/aarch64-w64-mingw32/include/
cp /opt/x86_64-w64-mingw32/include/pthread_unistd.h /opt/aarch64-w64-mingw32/include/
cp /opt/x86_64-w64-mingw32/include/pthread_time.h /opt/aarch64-w64-mingw32/include/
6 changes: 4 additions & 2 deletions .github/workflows/build-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ jobs:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ contains(inputs.packages_repository, 'MINGW') && 'MINGW64' || 'MSYS' }}
update: true
cache: true

- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -62,8 +64,8 @@ jobs:
run: |
`cygpath "${{ github.workspace }}"`/.github/scripts/install-artifacts.sh
- name: Copy missing headers for mingw-w64-cross-crt
if: ${{ inputs.package_name == 'mingw-w64-cross-crt' }}
- name: Copy missing headers for mingw-w64-cross-mingwarm64-crt
if: ${{ inputs.package_name == 'mingw-w64-cross-mingwarm64-crt' }}
run: |
`cygpath "${{ github.workspace }}"`/.github/scripts/pthread-headers-hack-before.sh
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/check-repository.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ jobs:
- name: Install toolchain
run: |
pacman -S mingw-w64-cross-gcc --noconfirm
pacman -S mingw-w64-cross-mingwarm64-gcc --noconfirm
pacman -S mingw-w64-aarch64-cc --noconfirm
- name: Build hello-world.exe
run: |
Expand Down
99 changes: 51 additions & 48 deletions .github/workflows/mingw-cross-toolchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,100 +19,103 @@ on:
value: ${{ toJson(jobs) }}

jobs:
mingw-w64-cross-headers:
mingw-w64-cross-mingwarm64-headers:
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-headers
package_name: mingw-w64-cross-mingwarm64-headers
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-binutils:
needs: mingw-w64-cross-headers
mingw-w64-cross-mingwarm64-binutils:
needs: mingw-w64-cross-mingwarm64-headers
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-binutils
package_name: mingw-w64-cross-mingwarm64-binutils
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc-stage1:
needs: [mingw-w64-cross-headers, mingw-w64-cross-binutils]
mingw-w64-cross-mingwarm64-gcc-stage1:
needs: [
mingw-w64-cross-mingwarm64-headers,
mingw-w64-cross-mingwarm64-binutils
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc-stage1
package_name: mingw-w64-cross-mingwarm64-gcc-stage1
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-windows-default-manifest:
needs: [mingw-w64-cross-binutils, mingw-w64-cross-gcc-stage1]
mingw-w64-cross-mingwarm64-windows-default-manifest:
needs: [
mingw-w64-cross-mingwarm64-binutils,
mingw-w64-cross-mingwarm64-gcc-stage1
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-windows-default-manifest
package_name: mingw-w64-cross-mingwarm64-windows-default-manifest
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-crt:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1
]
mingw-w64-cross-mingwarm64-crt:
needs: [
mingw-w64-cross-mingwarm64-headers,
mingw-w64-cross-mingwarm64-binutils,
mingw-w64-cross-mingwarm64-gcc-stage1
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-crt
package_name: mingw-w64-cross-mingwarm64-crt
needs: ${{ toJson(needs) }}
dependencies: mingw-w64-cross-winpthreads
dependencies: mingw-w64-cross-mingw64-winpthreads
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-winpthreads:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-crt
]
mingw-w64-cross-mingwarm64-winpthreads:
needs: [
mingw-w64-cross-mingwarm64-headers,
mingw-w64-cross-mingwarm64-binutils,
mingw-w64-cross-mingwarm64-gcc-stage1,
mingw-w64-cross-mingwarm64-crt
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-winpthreads
package_name: mingw-w64-cross-mingwarm64-winpthreads
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-gcc:
needs:
[
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-gcc-stage1,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads
]
mingw-w64-cross-mingwarm64-gcc:
needs: [
mingw-w64-cross-mingwarm64-headers,
mingw-w64-cross-mingwarm64-binutils,
mingw-w64-cross-mingwarm64-gcc-stage1,
mingw-w64-cross-mingwarm64-windows-default-manifest,
mingw-w64-cross-mingwarm64-crt,
mingw-w64-cross-mingwarm64-winpthreads
]
uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-gcc
package_name: mingw-w64-cross-mingwarm64-gcc
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}

mingw-w64-cross-zlib:
mingw-w64-cross-mingwarm64-zlib:
needs: [
mingw-w64-cross-headers,
mingw-w64-cross-binutils,
mingw-w64-cross-windows-default-manifest,
mingw-w64-cross-crt,
mingw-w64-cross-winpthreads,
mingw-w64-cross-gcc
mingw-w64-cross-mingwarm64-headers,
mingw-w64-cross-mingwarm64-binutils,
mingw-w64-cross-mingwarm64-windows-default-manifest,
mingw-w64-cross-mingwarm64-crt,
mingw-w64-cross-mingwarm64-winpthreads,
mingw-w64-cross-mingwarm64-gcc
]

uses: ./.github/workflows/build-package.yml
with:
package_name: mingw-w64-cross-zlib
package_name: mingw-w64-cross-mingwarm64-zlib
needs: ${{ toJson(needs) }}
packages_repository: Windows-on-ARM-Experiments/MSYS2-packages
packages_branch: ${{ github.event.inputs.msys2_packages_branch || 'woarm64' }}
49 changes: 25 additions & 24 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,64 +10,65 @@ if [ "$CLEAN_BUILD" = 1 ] ; then
MAKEPKG_OPTIONS="$MAKEPKG_OPTIONS --cleanbuild"
fi

pacman -R --noconfirm mingw-w64-cross-gcc || true
pacman -R --noconfirm mingw-w64-cross-winpthreads || true
pacman -R --noconfirm mingw-w64-cross-crt || true
pacman -R --noconfirm mingw-w64-cross-windows-default-manifest || true
pacman -R --noconfirm mingw-w64-cross-gcc-stage1 || true
pacman -R --noconfirm mingw-w64-cross-binutils || true
pacman -R --noconfirm mingw-w64-cross-headers || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-zlib || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-gcc || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-winpthreads || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-crt || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-windows-default-manifest || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-gcc-stage1 || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-binutils || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-headers || true

pacman -S --noconfirm base-devel

echo "::group::Build mingw-w64-cross-headers"
pushd ../MSYS2-packages/mingw-w64-cross-headers
echo "::group::Build mingw-w64-cross-mingwarm64-headers"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-headers
makepkg $MAKEPKG_OPTIONS
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-binutils"
pushd ../MSYS2-packages/mingw-w64-cross-binutils
echo "::group::Build mingw-w64-cross-mingwarm64-binutils"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-binutils
makepkg $MAKEPKG_OPTIONS
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-gcc-stage1"
pushd ../MSYS2-packages/mingw-w64-cross-gcc-stage1
echo "::group::Build mingw-w64-cross-mingwarm64-gcc-stage1"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-gcc-stage1
makepkg $MAKEPKG_OPTIONS
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-windows-default-manifest"
pushd ../MSYS2-packages/mingw-w64-cross-windows-default-manifest
echo "::group::Build mingw-w64-cross-mingwarm64-windows-default-manifest"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-windows-default-manifest
makepkg $MAKEPKG_OPTIONS
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-crt"
echo "::group::Build mingw-w64-cross-mingwarm64-crt"
.github/scripts/pthread-headers-hack-before.sh
pushd ../MSYS2-packages/mingw-w64-cross-crt
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-crt
makepkg $MAKEPKG_OPTIONS
popd
.github/scripts/pthread-headers-hack-after.sh
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-winpthreads"
pushd ../MSYS2-packages/mingw-w64-cross-winpthreads
echo "::group::Build mingw-w64-cross-mingwarm64-winpthreads"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-winpthreads
makepkg $MAKEPKG_OPTIONS
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-gcc"
pushd ../MSYS2-packages/mingw-w64-cross-gcc
echo "::group::Build mingw-w64-cross-mingwarm64-gcc"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-gcc
makepkg ${MAKEPKG_OPTIONS//--install/}
pacman -R --noconfirm mingw-w64-cross-gcc-stage1 || true
pacman -R --noconfirm mingw-w64-cross-mingwarm64-gcc-stage1 || true
pacman -U --noconfirm *.pkg.tar.zst
popd
echo "::endgroup::"

echo "::group::Build mingw-w64-cross-zlib"
pushd ../MSYS2-packages/mingw-w64-cross-zlib
echo "::group::Build mingw-w64-cross-mingwarm64-zlib"
pushd ../MSYS2-packages/mingw-w64-cross-mingwarm64-zlib
makepkg $MAKEPKG_OPTIONS --skippgpcheck
popd
echo "::endgroup::"

0 comments on commit 916a5c8

Please sign in to comment.