Skip to content

Commit 1b219dc

Browse files
ci: build for Windows ARM64 (#223)
1 parent 0fd30e5 commit 1b219dc

1 file changed

Lines changed: 48 additions & 27 deletions

File tree

.github/workflows/ci.yml

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,34 @@ jobs:
3636
github_token: ${{ secrets.GITHUB_TOKEN }}
3737

3838
build:
39-
name: Build
39+
name: Build (${{ matrix.name }})
4040
needs: setup_release
4141
permissions:
4242
contents: read
4343
runs-on: ${{ matrix.os }}
4444
defaults:
4545
run:
46-
shell: ${{ matrix.os == 'windows-latest' && 'msys2 {0}' || 'bash' }}
46+
shell: ${{ matrix.shell }}
4747
strategy:
4848
fail-fast: false
4949
matrix:
50-
os:
51-
- ubuntu-latest
52-
- macos-latest
53-
- windows-latest
50+
include:
51+
- name: Linux
52+
os: ubuntu-latest
53+
shell: bash
54+
- name: macOS
55+
os: macos-latest
56+
shell: bash
57+
- name: Windows-AMD64
58+
os: windows-latest
59+
shell: msys2 {0}
60+
msystem: ucrt64
61+
toolchain: ucrt-x86_64
62+
- name: Windows-ARM64
63+
os: windows-11-arm
64+
shell: msys2 {0}
65+
msystem: clangarm64
66+
toolchain: clang-aarch64
5467
steps:
5568
- name: Checkout
5669
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -84,18 +97,17 @@ jobs:
8497
if: runner.os == 'Windows'
8598
uses: msys2/setup-msys2@cafece8e6baf9247cf9b1bf95097b0b983cc558d # v2.31.0
8699
with:
87-
msystem: ucrt64
100+
msystem: ${{ matrix.msystem }}
88101
update: true
89102
install: >-
90103
doxygen
91-
mingw-w64-ucrt-x86_64-binutils
92-
mingw-w64-ucrt-x86_64-cmake
93-
mingw-w64-ucrt-x86_64-graphviz
94-
mingw-w64-ucrt-x86_64-ninja
95-
mingw-w64-ucrt-x86_64-nodejs
96-
mingw-w64-ucrt-x86_64-toolchain
97-
mingw-w64-ucrt-x86_64-boost
98-
mingw-w64-ucrt-x86_64-nlohmann-json
104+
mingw-w64-${{ matrix.toolchain }}-boost
105+
mingw-w64-${{ matrix.toolchain }}-cmake
106+
mingw-w64-${{ matrix.toolchain }}-graphviz
107+
mingw-w64-${{ matrix.toolchain }}-ninja
108+
mingw-w64-${{ matrix.toolchain }}-nodejs
109+
mingw-w64-${{ matrix.toolchain }}-toolchain
110+
mingw-w64-${{ matrix.toolchain }}-nlohmann-json
99111
100112
- name: Setup python
101113
id: setup-python
@@ -172,7 +184,7 @@ jobs:
172184
(steps.test_report.outcome == 'success')
173185
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
174186
with:
175-
name: coverage-${{ matrix.os }}
187+
name: coverage-${{ matrix.name }}
176188
path: |
177189
build/coverage.xml
178190
build/tests/test_results.xml
@@ -181,7 +193,7 @@ jobs:
181193
- name: Move Artifacts
182194
run: |
183195
mkdir -p artifacts
184-
if ["${RUNNER_OS}" == "Windows"]; then
196+
if [[ "${RUNNER_OS}" == "Windows" ]]; then
185197
mv -f ./build/tests/test_libdisplaydevice.exe artifacts/
186198
else
187199
mv -f ./build/tests/test_libdisplaydevice artifacts/
@@ -190,7 +202,7 @@ jobs:
190202
- name: Upload Artifacts
191203
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
192204
with:
193-
name: build-${{ runner.os }}
205+
name: build-${{ matrix.name }}
194206
path: artifacts/
195207
if-no-files-found: error
196208

@@ -208,20 +220,22 @@ jobs:
208220
fail-fast: false
209221
matrix:
210222
include:
211-
- build_os: ubuntu-latest
223+
- build_name: Linux
212224
flag: Linux
213-
- build_os: macos-latest
225+
- build_name: macOS
214226
flag: macOS
215-
- build_os: windows-latest
216-
flag: Windows
227+
- build_name: Windows-AMD64
228+
flag: Windows-AMD64
229+
- build_name: Windows-ARM64
230+
flag: Windows-ARM64
217231
steps:
218232
- name: Checkout
219233
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
220234

221235
- name: Download coverage artifact
222236
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
223237
with:
224-
name: coverage-${{ matrix.build_os }}
238+
name: coverage-${{ matrix.build_name }}
225239
path: _coverage
226240

227241
- name: Debug coverage file
@@ -263,11 +277,17 @@ jobs:
263277
contents: read
264278
runs-on: ubuntu-latest
265279
steps:
266-
- name: Download build artifact (Windows)
280+
- name: Download build artifact (Windows-AMD64)
281+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
282+
with:
283+
name: build-Windows-AMD64
284+
path: build-Windows-AMD64
285+
286+
- name: Download build artifact (Windows-ARM64)
267287
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
268288
with:
269-
name: build-Windows
270-
path: build-Windows
289+
name: build-Windows-ARM64
290+
path: build-Windows-ARM64
271291

272292
- name: Download build artifact (Linux)
273293
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
@@ -284,7 +304,8 @@ jobs:
284304
- name: Move artifacts
285305
run: |
286306
mkdir -p artifacts
287-
mv -f build-Windows/test_libdisplaydevice.exe artifacts/test_libdisplaydevice-Windows.exe
307+
mv -f build-Windows-AMD64/test_libdisplaydevice.exe artifacts/test_libdisplaydevice-Windows-AMD64.exe
308+
mv -f build-Windows-ARM64/test_libdisplaydevice.exe artifacts/test_libdisplaydevice-Windows-ARM64.exe
288309
mv -f build-Linux/test_libdisplaydevice artifacts/test_libdisplaydevice-Linux
289310
mv -f build-macOS/test_libdisplaydevice artifacts/test_libdisplaydevice-macOS
290311

0 commit comments

Comments
 (0)