From fe673ebc156c3332c2a17e2231d99a3713f08e33 Mon Sep 17 00:00:00 2001 From: Manfred Endres Date: Mon, 3 Nov 2025 12:10:14 +0100 Subject: [PATCH] ci: Add Windows ARM64 build and test support ## Description Add support for building and testing Windows ARM64 (aarch64-pc-windows-msvc) binaries in CI workflows. Changes: - Add `aarch64-pc-windows-msvc` target to build matrix in `rust.yml` for testing - Add `aarch64-pc-windows-msvc` target to build matrix in `release.yml` for releases - Skip runtime tests for Windows ARM64 (cross-compiled target, cannot run on x86_64 runners) - Update release installation instructions to include Windows ARM64 download option Windows ARM64 binaries will be built on Windows runners using cross-compilation and included in releases alongside x86_64 Windows binaries. This enables support for ARM64 Windows devices such as Surface Pro X and Windows on ARM systems. --- .github/workflows/release.yml | 8 +++++++- .github/workflows/rust.yml | 11 +++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c28daac3..f589e230 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -117,8 +117,11 @@ jobs: ### Windows ```powershell - # Download binary directly + # x86_64 (Intel/AMD) Invoke-WebRequest -Uri "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/uvm-x86_64-pc-windows-msvc.exe" -OutFile "uvm.exe" + + # ARM64 (Apple Silicon Windows, Surface Pro X, etc.) + Invoke-WebRequest -Uri "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/uvm-aarch64-pc-windows-msvc.exe" -OutFile "uvm.exe" ``` draft: true prerelease: ${{ steps.extract-version.outputs.is-prerelease == 'true' }} @@ -143,6 +146,9 @@ jobs: - target: x86_64-pc-windows-msvc os: windows-latest use-zigbuild: false + - target: aarch64-pc-windows-msvc + os: windows-latest + use-zigbuild: false # Linux GNU target (native) - target: x86_64-unknown-linux-gnu diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 71067347..4706df27 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -25,6 +25,9 @@ jobs: - target: x86_64-pc-windows-msvc os: windows-latest use-zigbuild: false + - target: aarch64-pc-windows-msvc + os: windows-latest + use-zigbuild: false - target: x86_64-apple-darwin os: macos-latest use-zigbuild: false @@ -77,11 +80,11 @@ jobs: shell: bash - name: Run tests - # Skip tests for cross-compiled targets - if: matrix.use-zigbuild == false + # Skip tests for cross-compiled targets and Windows ARM64 (cross-compiled) + if: matrix.use-zigbuild == false && matrix.target != 'aarch64-pc-windows-msvc' run: cargo test --target ${{ matrix.target }} --verbose --release - name: Run UVM help - # Skip help test for cross-compiled targets - if: matrix.use-zigbuild == false + # Skip help test for cross-compiled targets and Windows ARM64 (cross-compiled) + if: matrix.use-zigbuild == false && matrix.target != 'aarch64-pc-windows-msvc' run: cargo run --target ${{ matrix.target }} --bin uvm --release -- --help