# Copyright 2022 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

# A few notes:
#
# Variables:
# GitHub actions don't have variables or even support normal yaml anchors (they
# are specially disabled because...reasons?):
# See https://github.com/github-community/community/discussions/4501
# https://github.community/t/support-for-yaml-anchors/16128/92
# https://github.com/actions/runner/issues/1182
# Neither does it have any contexts that are available everywhere. The
# top-level `env` field is available in many places, but not all. We already
# have a "setup" job that every other job depends on, so we leverage that
# for variables that every other job can use, since that *is* available in all
# sub-fields of the job.
# See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
# and https://github.com/community/community/discussions/27370
#
# Runner label ordering:
# - self-hosted always has to be listed first in a runs-on block:
# https://docs.github.com/en/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow

on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - main

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 are organized into groups and topologically sorted by dependencies
jobs:
  setup:
    uses: ./.github/workflows/setup.yml

  ##############################################################################
  # Runtime builds

  runtime:
    needs: setup
    name: "runtime :: ${{ matrix.name }}"
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'runtime')
    runs-on: ${{ matrix.runs-on }}
    defaults:
      run:
        shell: bash
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: ubuntu-24.04
            runs-on: ubuntu-24.04
            driver-options: -DIREE_HAL_DRIVER_CUDA=ON -DIREE_HAL_DRIVER_HIP=ON -DIREE_HAL_DRIVER_VULKAN=ON
          - name: ubuntu-24.04-arm
            runs-on: ubuntu-24.04-arm
            driver-options: -DIREE_HAL_DRIVER_CUDA=ON -DIREE_HAL_DRIVER_HIP=ON -DIREE_HAL_DRIVER_VULKAN=ON
          - name: windows-2022
            runs-on: windows-2022
            driver-options: -DIREE_HAL_DRIVER_CUDA=ON -DIREE_HAL_DRIVER_HIP=ON -DIREE_HAL_DRIVER_VULKAN=ON
          - name: macos-14
            runs-on: macos-14
            driver-options: -DIREE_HAL_DRIVER_METAL=ON -DIREE_HAL_DRIVER_VULKAN=OFF
    env:
      BUILD_DIR: build-runtime
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
      - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: "3.11"

      - name: (Linux) Install requirements
        if: contains(matrix.name, 'ubuntu')
        run: |
          sudo apt update
          sudo apt install -y ninja-build
          echo "CC=clang" >> $GITHUB_ENV
          echo "CXX=clang++" >> $GITHUB_ENV
      - name: (Windows) Configure MSVC
        if: contains(matrix.name, 'windows')
        uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
      - name: (macOS) Install requirements
        if: contains(matrix.name, 'macos')
        run: brew install ninja ccache coreutils bash

      - name: Checkout runtime submodules
        run: bash ./build_tools/scripts/git/update_runtime_submodules.sh
      - name: Install Python requirements
        run: pip install -r ./runtime/bindings/python/iree/runtime/build_requirements.txt
      - name: ccache
        uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18
        with:
          key: ${{ github.job }}-${{ matrix.name }}
          save: ${{ needs.setup.outputs.write-caches == 1 }}
      - name: CMake - configure
        run: |
          cmake \
            -G Ninja \
            -B ${BUILD_DIR} \
            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_C_COMPILER_LAUNCHER=ccache \
            -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
            -DIREE_BUILD_COMPILER=OFF \
            -DIREE_BUILD_PYTHON_BINDINGS=ON \
            -DIREE_BUILD_SAMPLES=ON \
            -DIREE_ENABLE_LLD=ON \
            -DIREE_ENABLE_ASSERTIONS=ON \
            ${{matrix.driver-options}}
      - name: CMake - build
        run: cmake --build ${BUILD_DIR} -- -k 0
      - name: CTest
        run: bash ./build_tools/cmake/ctest_all.sh "${BUILD_DIR}"

  runtime_small:
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'runtime_small')
    runs-on: ubuntu-24.04
    env:
      BUILD_DIR: build-runtime
      CC: clang
      CXX: clang++
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
      - name: Install requirements
        run: sudo apt update && sudo apt install -y ninja-build
      - name: Checkout runtime submodules
        run: bash ./build_tools/scripts/git/update_runtime_submodules.sh
      - name: ccache
        uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18
        with:
          key: ${{ github.job }}
          save: ${{ needs.setup.outputs.write-caches == 1 }}
      - name: CMake - configure
        run: |
          cmake \
            -G Ninja \
            -B ${BUILD_DIR} \
            -DCMAKE_BUILD_TYPE=MinSizeRel \
            -DCMAKE_C_COMPILER_LAUNCHER=ccache \
            -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
            -DIREE_BUILD_COMPILER=OFF \
            -DIREE_RUNTIME_OPTIMIZATION_PROFILE=size \
            -DIREE_ENABLE_LLD=ON
      - name: CMake - build
        run: cmake --build ${BUILD_DIR} -- -k 0
      - name: CTest
        run: bash ./build_tools/cmake/ctest_all.sh "${BUILD_DIR}"

  runtime_tracing:
    needs: setup
    name: "runtime_tracing :: ${{ matrix.runs-on }} :: ${{ matrix.provider }}"
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'runtime_tracing')
    runs-on: ${{ matrix.runs-on }}
    defaults:
      run:
        shell: bash
    strategy:
      fail-fast: false
      matrix:
        runs-on: [ubuntu-24.04, ubuntu-24.04-arm, windows-2022, macos-14]
        provider: [tracy, console]
    env:
      BUILD_DIR: build-tracing
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

      - name: (Linux) Install requirements
        if: contains(matrix.runs-on, 'ubuntu')
        run: |
          sudo apt update
          sudo apt install -y ninja-build
          echo "CC=clang" >> $GITHUB_ENV
          echo "CXX=clang++" >> $GITHUB_ENV
      - name: (Windows) Configure MSVC
        if: contains(matrix.runs-on, 'windows')
        uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
      - name: (macOS) Install requirements
        if: contains(matrix.runs-on, 'macos')
        run: brew install ninja ccache coreutils bash

      - name: (Linux/Windows) Set driver options
        if: contains(matrix.runs-on, 'ubuntu') || contains(matrix.runs-on, 'windows')
        run: echo IREE_DRIVER_OPTIONS="-DIREE_HAL_DRIVER_CUDA=ON -DIREE_HAL_DRIVER_HIP=ON -DIREE_HAL_DRIVER_VULKAN=ON" >> $GITHUB_ENV
      - name: (macOS) Set driver options
        if: contains(matrix.runs-on, 'macos')
        run: echo IREE_DRIVER_OPTIONS="-DIREE_HAL_DRIVER_METAL=ON -DIREE_HAL_DRIVER_VULKAN=OFF" >> $GITHUB_ENV

      - name: Checkout runtime submodules
        run: bash ./build_tools/scripts/git/update_runtime_submodules.sh
      - name: ccache
        uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18
        with:
          key: ${{ github.job }}-${{ matrix.runs-on}}-${{ matrix.provider }}
          save: ${{ needs.setup.outputs.write-caches == 1 }}
      - name: CMake - configure
        run: |
          cmake \
            -G Ninja \
            -B ${BUILD_DIR} \
            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_C_COMPILER_LAUNCHER=ccache \
            -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
            -DIREE_BUILD_COMPILER=OFF \
            -DIREE_ENABLE_LLD=ON \
            -DIREE_ENABLE_RUNTIME_TRACING=ON \
            -DIREE_TRACING_PROVIDER=${{ matrix.provider }} \
            ${IREE_DRIVER_OPTIONS}
      - name: CMake - build
        run: cmake --build ${BUILD_DIR} -- -k 0

  ##############################################################################
  # Full project builds

  linux_x64_bazel:
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_bazel')
    uses: ./.github/workflows/ci_linux_x64_bazel.yml
    secrets: inherit

  linux_x64_clang:
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang')
    uses: ./.github/workflows/ci_linux_x64_clang.yml
    secrets: inherit

  linux_x64_clang_asan:
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'linux_x64_clang_asan')
    uses: ./.github/workflows/ci_linux_x64_clang_asan.yml
    secrets: inherit

  windows_x64_msvc:
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'windows_x64_msvc')
    uses: ./.github/workflows/ci_windows_x64_msvc.yml
    secrets: inherit

  ##############################################################################

  # Aggregate job status and alerting on failures.
  ci_summary:
    if: always()
    needs:
      - setup

      # Runtime builds.
      - runtime
      - runtime_small
      - runtime_tracing

      # Full project builds.
      - linux_x64_bazel
      - linux_x64_clang
      - linux_x64_clang_asan
      - windows_x64_msvc
    uses: ./.github/workflows/workflow_summary.yml
    secrets: inherit
    with:
      jobs-json: ${{ toJson(needs) }}
