Skip to content

Commit 16fe1c0

Browse files
committed
Build AArch64 Cygwin using Ubuntu cross-toolchain
1 parent aa712ee commit 16fe1c0

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

.github/workflows/cygwin.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,87 @@ jobs:
9090
scp -pr build/*/winsup/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+
107+
steps:
108+
- uses: actions/checkout@v3
109+
110+
# install build tools
111+
- name: Install build tools
112+
run: |
113+
sudo apt-get update
114+
sudo apt-get install -y \
115+
autoconf \
116+
automake \
117+
dblatex \
118+
docbook2x \
119+
docbook-xsl \
120+
gawk \
121+
gh \
122+
make \
123+
openssh-client \
124+
patch \
125+
perl \
126+
python3 \
127+
python3-lxml \
128+
python3-ply \
129+
xmlto
130+
131+
# download toolchain
132+
- name: Download toolchain
133+
run: |
134+
CYGWIN_DIGEST=$(gh release view \
135+
--repo Windows-on-ARM-Experiments/mingw-woarm64-build \
136+
--json assets \
137+
--jq '.assets[] | select(.name | test(".*${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz")).digest')
138+
MINGW_DIGEST=$(gh release view \
139+
--repo Windows-on-ARM-Experiments/mingw-woarm64-build \
140+
--json assets \
141+
--jq '.assets[] | select(.name | test(".*${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz")).digest')
142+
gh release download \
143+
--repo Windows-on-ARM-Experiments/mingw-woarm64-build \
144+
--pattern ${{ matrix.arch }}-*-msvcrt-toolchain.tar.gz
145+
sha256sum -c <<< "${CYGWIN_DIGEST#sha256:} ${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz"
146+
sha256sum -c <<< "${MINGW_DIGEST#sha256:} ${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz"
147+
148+
# install toolchain
149+
- name: Install toolchain
150+
run: |
151+
mkdir -p toolchain/${{ matrix.arch }}-w64-mingw32
152+
mkdir -p toolchain/${{ matrix.arch }}-pc-cygwin
153+
tar -xzf ${{ matrix.arch }}-w64-mingw32-msvcrt-toolchain.tar.gz -C toolchain/${{ matrix.arch }}-w64-mingw32
154+
tar -xzf ${{ matrix.arch }}-pc-cygwin-msvcrt-toolchain.tar.gz -C toolchain/${{ matrix.arch }}-pc-cygwin
155+
156+
# build
157+
- name: Configure, build and install
158+
run: |
159+
export PATH="$PATH:${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/bin:${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/bin"
160+
export CXXFLAGS_FOR_TARGET="-D_WIN64 -I${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/include"
161+
export LDFLAGS_FOR_TARGET="-L${{ github.workspace }}/toolchain/${{ matrix.arch }}-pc-cygwin/lib"
162+
export MINGW_CPPFLAGS="-I${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/include"
163+
export MINGW_LDFLAGS="-L${{ github.workspace }}/toolchain/${{ matrix.arch }}-w64-mingw32/lib"
164+
export MAKEFLAGS="V=1 -j$(nproc)"
165+
166+
mkdir build install
167+
(cd winsup && ./autogen.sh)
168+
(cd build && ../configure --target=${{ matrix.arch }}-pc-cygwin --prefix=$(realpath $(pwd)/../install) )
169+
make -C build
170+
make -C build/*/newlib info man
171+
make -C build install
172+
make -C build/*/newlib install-info install-man
173+
93174
windows-build:
94175
runs-on: windows-latest
95176
strategy:

0 commit comments

Comments
 (0)