Add macOS workflow running on M1 (#19656)
This adds a workflow similar to the `macos_x64_clang` but running with
macos-14 on M1 (arm64).
Building the `iree-test-deps` target fails on macos-14. To allow the
workflow passing, building the target can be skipped by setting
`IREE_BUILD_TEST_DEPS` to `0` (defaults to `1`). In contrast to running
on x64 / macos-13, the workflow also skips calling `ctest_all.sh`.
diff --git a/.github/workflows/ci_macos_arm64_clang.yml b/.github/workflows/ci_macos_arm64_clang.yml
new file mode 100644
index 0000000..a8ee265
--- /dev/null
+++ b/.github/workflows/ci_macos_arm64_clang.yml
@@ -0,0 +1,67 @@
+# Copyright 2025 The IREE Authors
+#
+# Licensed under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+name: CI - macOS arm64 clang
+
+on:
+ schedule:
+ # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8).
+ - cron: "15 9 * * 1-5"
+ workflow_dispatch:
+
+concurrency:
+ # A PR number if a pull request and otherwise the commit hash. This cancels
+ # queued and in-progress runs for the same PR (presubmit) or commit
+ # (postsubmit). The workflow name is prepended to avoid conflicts between
+ # different workflows.
+ group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
+ cancel-in-progress: true
+
+jobs:
+ macos_arm64_clang:
+ runs-on: macos-14
+ env:
+ BUILD_DIR: build-macos
+ defaults:
+ run:
+ shell: bash
+ steps:
+ - name: "Checking out repository"
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: "Updating git submodules"
+ run: git submodule update --init --jobs 8 --depth 1
+ # There may be multiple versions of Xcode and SDKs installed.
+ # Select the latest Xcode app to enable using Metal offline toolchain.
+ - name: "Update Xcode command line tools path"
+ run: |
+ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
+ xcrun metal --version
+ xcrun metallib --version
+ - name: "Setting up Python"
+ uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
+ with:
+ python-version: "3.11"
+ cache: "pip"
+ - name: "Installing Python packages"
+ run: pip install -r runtime/bindings/python/iree/runtime/build_requirements.txt
+ - name: "Installing requirements"
+ # We need coreutils for `realpath` used in scripts.
+ # We need bash because the default one on macOS is fairly old and lacks
+ # features we use in scripts.
+ run: brew install ninja ccache coreutils bash
+ - name: "Building IREE"
+ env:
+ # TODO(#19664): Enable building test deps when build errors are fixed.
+ IREE_BUILD_TEST_DEPS: 0
+ run: bash ./build_tools/cmake/build_all.sh "${BUILD_DIR}"
+
+ - name: Post to Discord on Failure
+ uses: sarisia/actions-status-discord@ce8cc68e4e626000136b3c702d049a154243e490 # v1.14.7
+ if: failure() && github.ref_name == 'main' && github.repository_owner == 'iree-org'
+ with:
+ webhook: ${{ secrets.DISCORD_WEBHOOK }}
+ description: "The ${{ github.workflow }} workflow failed"
+ url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}"
diff --git a/README.md b/README.md
index d04fe4a..0ec55ab 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,7 @@
| -- | --: |
Linux | [](https://github.com/iree-org/iree/actions/workflows/ci_linux_arm64_clang.yml?query=branch%3Amain+event%3Aschedule)
macOS | [](https://github.com/iree-org/iree/actions/workflows/ci_macos_x64_clang.yml?query=branch%3Amain+event%3Aschedule)
+macOS | [](https://github.com/iree-org/iree/actions/workflows/ci_macos_arm64_clang.yml?query=branch%3Amain+event%3Aschedule)
Windows | [](https://github.com/iree-org/iree/actions/workflows/ci_windows_x64_msvc.yml?query=branch%3Amain+event%3Aschedule)
For the full list of workflows see
diff --git a/build_tools/cmake/build_all.sh b/build_tools/cmake/build_all.sh
index 0519a18..53e843f 100755
--- a/build_tools/cmake/build_all.sh
+++ b/build_tools/cmake/build_all.sh
@@ -30,6 +30,8 @@
# needed, but some of the deps are too large to enable by default for all
# developers.
IREE_TARGET_BACKEND_WEBGPU_SPIRV="${IREE_TARGET_BACKEND_WEBGPU_SPIRV:-ON}"
+# Enable building the `iree-test-deps` target.
+IREE_BUILD_TEST_DEPS="${IREE_BUILD_TEST_DEPS:-1}"
source build_tools/cmake/setup_build.sh
source build_tools/cmake/setup_ccache.sh
@@ -73,9 +75,11 @@
echo "------------------"
"${CMAKE_BIN}" --build "${BUILD_DIR}" --target install -- -k 0
-echo "Building test deps"
-echo "------------------"
-"$CMAKE_BIN" --build "${BUILD_DIR}" --target iree-test-deps -- -k 0
+if (( IREE_BUILD_TEST_DEPS == 1 )); then
+ echo "Building test deps"
+ echo "------------------"
+ "$CMAKE_BIN" --build "${BUILD_DIR}" --target iree-test-deps -- -k 0
+fi
if (( IREE_USE_CCACHE == 1 )); then
ccache --show-stats
diff --git a/docs/website/docs/developers/general/github-actions.md b/docs/website/docs/developers/general/github-actions.md
index 4480e09..571c398 100644
--- a/docs/website/docs/developers/general/github-actions.md
+++ b/docs/website/docs/developers/general/github-actions.md
@@ -84,6 +84,7 @@
| |
[`ci_linux_arm64_clang.yml`](https://github.com/iree-org/iree/blob/main/.github/workflows/ci_linux_arm64_clang.yml) | [](https://github.com/iree-org/iree/actions/workflows/ci_linux_arm64_clang.yml?query=branch%3Amain+event%3Aschedule) | `schedule`
[`ci_macos_x64_clang.yml`](https://github.com/iree-org/iree/blob/main/.github/workflows/ci_macos_x64_clang.yml) | [](https://github.com/iree-org/iree/actions/workflows/ci_macos_x64_clang.yml?query=branch%3Amain+event%3Aschedule) | `schedule`
+[`ci_macos_arm64_clang.yml`](https://github.com/iree-org/iree/blob/main/.github/workflows/ci_macos_arm64_clang.yml) | [](https://github.com/iree-org/iree/actions/workflows/ci_macos_arm64_clang.yml?query=branch%3Amain+event%3Aschedule) | `schedule`
[`ci_windows_x64_msvc.yml`](https://github.com/iree-org/iree/blob/main/.github/workflows/ci_windows_x64_msvc.yml) | [](https://github.com/iree-org/iree/actions/workflows/ci_windows_x64_msvc.yml?query=branch%3Amain+event%3Aschedule) | `schedule`
| |
[`ci_linux_x64_clang_byollvm.yml`](https://github.com/iree-org/iree/blob/main/.github/workflows/ci_linux_x64_clang_byollvm.yml) | [](https://github.com/iree-org/iree/actions/workflows/ci_linux_x64_clang_byollvm.yml?query=branch%3Amain+event%3Aschedule) | `schedule`