Skip to content

Commit eb818fb

Browse files
Blackhexgithub-actions
authored andcommitted
Build AArch64 Cygwin using Ubuntu cross-toolchain (#31)
1 parent d84f16a commit eb818fb

1 file changed

Lines changed: 82 additions & 0 deletions

File tree

.github/workflows/cygwin.yml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,88 @@ jobs:
9090
scp -pr install/share/doc/{cygwin-api,cygwin-ug-net,faq}* cygwin-admin@cygwin.com:/sourceware/www/sourceware/htdocs/cygwin/doc/${DEST}/
9191
if: env.HAS_SSH_KEY == 'true'
9292

93+
ubuntu-build:
94+
strategy:
95+
fail-fast: false
96+
matrix:
97+
include:
98+
- arch: aarch64
99+
runner: ubuntu-24.04-arm
100+
101+
runs-on: ${{ matrix.runner }}
102+
name: Ubuntu cross ${{ matrix.arch }}-pc-cygwin
103+
104+
env:
105+
GH_TOKEN: ${{ github.token }}
106+
TOOLCHAIN_REPO: Windows-on-ARM-Experiments/mingw-woarm64-build
107+
108+
steps:
109+
- uses: actions/checkout@v3
110+
111+
# install build tools
112+
- name: Install build tools
113+
run: |
114+
sudo apt-get update
115+
sudo apt-get install -y \
116+
autoconf \
117+
automake \
118+
dblatex \
119+
docbook2x \
120+
docbook-xsl \
121+
gawk \
122+
gh \
123+
make \
124+
openssh-client \
125+
patch \
126+
perl \
127+
python3 \
128+
python3-lxml \
129+
python3-ply \
130+
xmlto
131+
132+
# download toolchain
133+
- name: Download toolchain
134+
run: |
135+
CYGWIN_DIGEST=$(gh release view \
136+
--repo ${{ env.TOOLCHAIN_REPO }} \
137+
--json assets \
138+
--jq '.assets[] | select(.name | test("${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz")).digest')
139+
MINGW_DIGEST=$(gh release view \
140+
--repo ${{ env.TOOLCHAIN_REPO }} \
141+
--json assets \
142+
--jq '.assets[] | select(.name | test("${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz")).digest')
143+
gh release download \
144+
--repo ${{ env.TOOLCHAIN_REPO }} \
145+
--pattern ${{ matrix.arch }}-*-msvcrt-toolchain.tar.gz
146+
sha256sum -c <<< "${CYGWIN_DIGEST#sha256:} ${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz"
147+
sha256sum -c <<< "${MINGW_DIGEST#sha256:} ${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz"
148+
149+
# install toolchain
150+
- name: Install toolchain
151+
run: |
152+
mkdir -p toolchain/${{ matrix.arch }}-w64-mingw32
153+
mkdir -p toolchain/${{ matrix.arch }}-pc-cygwin
154+
tar -xzf ${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz -C toolchain/${{ matrix.arch }}-w64-mingw32
155+
tar -xzf ${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz -C toolchain/${{ matrix.arch }}-pc-cygwin
156+
157+
# build
158+
- name: Configure, build and install
159+
run: |
160+
export PATH="$PATH:${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/bin:${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/bin"
161+
export CXXFLAGS_FOR_TARGET="-D_WIN64 -I${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/include"
162+
export LDFLAGS_FOR_TARGET="-L${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/lib"
163+
export MINGW_CPPFLAGS="-I${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/include"
164+
export MINGW_LDFLAGS="-L${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/lib"
165+
export MAKEFLAGS="V=1 -j$(nproc)"
166+
167+
mkdir build install
168+
(cd winsup && ./autogen.sh)
169+
(cd build && ../configure --target=${{ matrix.arch }}-pc-cygwin --prefix=$(realpath $(pwd)/../install) )
170+
make -C build
171+
make -C build/*/newlib info man
172+
make -C build install
173+
make -C build/*/newlib install-info install-man
174+
93175
windows-build:
94176
runs-on: windows-latest
95177
strategy:

0 commit comments

Comments
 (0)