Skip to content

Conversation

mstorsjo
Copy link
Member

@mstorsjo mstorsjo commented Oct 3, 2025

Github Actions has got free runners with Windows on ARM64 these days, which can be used for running CI, just as well as the other existing cases.

This qualifies this configuration as a supported target platform, thus add it to the docs in the listing of supported platforms.

Github Actions has got free runners with Windows on ARM64 these
days, which can be used for running CI, just as well as the other
existing cases.

This qualifies this configuration as a supported target platform,
thus add it to the docs in the listing of supported platforms.
@mstorsjo mstorsjo requested a review from a team as a code owner October 3, 2025 21:04
@llvmbot llvmbot added libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. github:workflow labels Oct 3, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 3, 2025

@llvm/pr-subscribers-github-workflow

Author: Martin Storsjö (mstorsjo)

Changes

Github Actions has got free runners with Windows on ARM64 these days, which can be used for running CI, just as well as the other existing cases.

This qualifies this configuration as a supported target platform, thus add it to the docs in the listing of supported platforms.


Full diff: https://github.com/llvm/llvm-project/pull/161906.diff

3 Files Affected:

  • (modified) .github/workflows/libcxx-build-and-test.yaml (+3-2)
  • (modified) libcxx/docs/index.rst (+1-1)
  • (modified) libcxx/utils/ci/run-buildbot (+1-1)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 77f79a85a0a2f..b322c96d63416 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -236,7 +236,6 @@ jobs:
             **/crash_diagnostics/*
 
   windows:
-    runs-on: windows-2022
     needs: [ stage2 ]
     strategy:
       fail-fast: false
@@ -251,6 +250,8 @@ jobs:
         - { config: mingw-static, mingw: true }
         - { config: mingw-dll-i686, mingw: true }
         - { config: mingw-incomplete-sysroot, mingw: true }
+        - { config: mingw-static-aarch64, mingw: true, runner: windows-11-arm }
+    runs-on: ${{ matrix.runner != '' && matrix.runner || 'windows-latest' }}
     steps:
       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
       - name: Install dependencies
@@ -264,7 +265,7 @@ jobs:
       - name: Install llvm-mingw
         if: ${{ matrix.mingw == true }}
         run: |
-          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250709/llvm-mingw-20250709-ucrt-x86_64.zip
+          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250709/llvm-mingw-20250709-ucrt-${{ matrix.runner == 'windows-11-arm' && 'aarch64' || 'x86_64' }}.zip
           powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
           del llvm-mingw*.zip
           mv llvm-mingw* c:\llvm-mingw
diff --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst
index 4d5064bfd7f3b..495ccceb31cef 100644
--- a/libcxx/docs/index.rst
+++ b/libcxx/docs/index.rst
@@ -147,7 +147,7 @@ macOS 10.13+          i386, x86_64, arm64
 FreeBSD 12+           i386, x86_64, arm
 Linux                 i386, x86_64, arm, arm64  Only glibc-2.24 and later and no other libc is officially supported
 Android 5.0+          i386, x86_64, arm, arm64
-Windows               i386, x86_64              Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
+Windows               i386, x86_64, arm64       Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
 AIX 7.2TL5+           powerpc, powerpc64
 Embedded (picolibc)   arm
 ===================== ========================= ============================
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 57ecf1e49dbf2..b3dc428724c58 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -706,7 +706,7 @@ mingw-dll)
           -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake"
     check-runtimes
 ;;
-mingw-static)
+mingw-static|mingw-static-aarch64)
     clean
     generate-cmake \
           -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" \

@llvmbot
Copy link
Member

llvmbot commented Oct 3, 2025

@llvm/pr-subscribers-libcxx

Author: Martin Storsjö (mstorsjo)

Changes

Github Actions has got free runners with Windows on ARM64 these days, which can be used for running CI, just as well as the other existing cases.

This qualifies this configuration as a supported target platform, thus add it to the docs in the listing of supported platforms.


Full diff: https://github.com/llvm/llvm-project/pull/161906.diff

3 Files Affected:

  • (modified) .github/workflows/libcxx-build-and-test.yaml (+3-2)
  • (modified) libcxx/docs/index.rst (+1-1)
  • (modified) libcxx/utils/ci/run-buildbot (+1-1)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 77f79a85a0a2f..b322c96d63416 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -236,7 +236,6 @@ jobs:
             **/crash_diagnostics/*
 
   windows:
-    runs-on: windows-2022
     needs: [ stage2 ]
     strategy:
       fail-fast: false
@@ -251,6 +250,8 @@ jobs:
         - { config: mingw-static, mingw: true }
         - { config: mingw-dll-i686, mingw: true }
         - { config: mingw-incomplete-sysroot, mingw: true }
+        - { config: mingw-static-aarch64, mingw: true, runner: windows-11-arm }
+    runs-on: ${{ matrix.runner != '' && matrix.runner || 'windows-latest' }}
     steps:
       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
       - name: Install dependencies
@@ -264,7 +265,7 @@ jobs:
       - name: Install llvm-mingw
         if: ${{ matrix.mingw == true }}
         run: |
-          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250709/llvm-mingw-20250709-ucrt-x86_64.zip
+          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250709/llvm-mingw-20250709-ucrt-${{ matrix.runner == 'windows-11-arm' && 'aarch64' || 'x86_64' }}.zip
           powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
           del llvm-mingw*.zip
           mv llvm-mingw* c:\llvm-mingw
diff --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst
index 4d5064bfd7f3b..495ccceb31cef 100644
--- a/libcxx/docs/index.rst
+++ b/libcxx/docs/index.rst
@@ -147,7 +147,7 @@ macOS 10.13+          i386, x86_64, arm64
 FreeBSD 12+           i386, x86_64, arm
 Linux                 i386, x86_64, arm, arm64  Only glibc-2.24 and later and no other libc is officially supported
 Android 5.0+          i386, x86_64, arm, arm64
-Windows               i386, x86_64              Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
+Windows               i386, x86_64, arm64       Both MSVC and MinGW style environments, ABI in MSVC environments is :doc:`unstable <DesignDocs/ABIVersioning>`
 AIX 7.2TL5+           powerpc, powerpc64
 Embedded (picolibc)   arm
 ===================== ========================= ============================
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 57ecf1e49dbf2..b3dc428724c58 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -706,7 +706,7 @@ mingw-dll)
           -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake"
     check-runtimes
 ;;
-mingw-static)
+mingw-static|mingw-static-aarch64)
     clean
     generate-cmake \
           -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" \

check-runtimes
;;
mingw-static)
mingw-static|mingw-static-aarch64)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need a new configuration name if it is identical?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right - as we don't need any differences here I guess we could just reuse the same config name here as well. I'll update the PR accordingly.

@philnik777
Copy link
Contributor

In general I'm happy with this, but I don't really know the GH CI stuff. Maybe @boomanaiden154 could take a look at that.

Also fix the default runner image name, don't use "windows-latest"
but keep using "windows-2022" like we did before.
Copy link
Contributor

@philnik777 philnik777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The libc++ side LGTM, but I'd like someone who knows the GH CI stuff to review.

@boomanaiden154
Copy link
Contributor

It's a bit annoying that there are no supported Windows Server SKUs on ARM to keep everything consistent, but that seems to mostly involve waiting on Microsoft to release one.

@mstorsjo mstorsjo merged commit 646bc09 into llvm:main Oct 7, 2025
72 of 82 checks passed
@mstorsjo mstorsjo deleted the libcxx-win-arm64 branch October 7, 2025 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
github:workflow libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants