# ===----------------------------------------------------------------------===##
#
# Part of the LLVM Project, 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
#
# ===----------------------------------------------------------------------===##

#
# This file describes the various pre-commit CI bots used to test libc++.
#
# This file should never contain logic -- all the logic must be offloaded
# into scripts. This is critical to being able to reproduce CI issues outside
# of the CI environment, which is important for debugging.
#
# It is also worth noting that this script is split into several sections, the
# goal being to reduce the load on testers when a commit is known to fail.
#

definitions:
  _common: &common
    timeout_in_minutes: 120
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
      - "**/crash_diagnostics/*"
      - "**/CMakeConfigureLog.yaml"
      - "**/CMakeError.log"
      - "**/CMakeOutput.log"

steps:
- group: ARM
  steps:
  - label: AArch64
    command: libcxx/utils/ci/run-buildbot aarch64
    agents:
      queue: libcxx-builders-linaro-arm
      arch: aarch64
    <<: *common

  - label: AArch64 -fno-exceptions
    command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
    agents:
      queue: libcxx-builders-linaro-arm
      arch: aarch64
    <<: *common

  - label: Armv8
    command: libcxx/utils/ci/run-buildbot armv8
    agents:
      queue: libcxx-builders-linaro-arm
      arch: armv8l
    <<: *common

  - label: Armv8 -fno-exceptions
    command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
    agents:
      queue: libcxx-builders-linaro-arm
      arch: armv8l
    <<: *common

  - label: Armv7
    command: libcxx/utils/ci/run-buildbot armv7
    agents:
      queue: libcxx-builders-linaro-arm
      arch: armv8l
    <<: *common

  - label: Armv7 -fno-exceptions
    command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
    agents:
      queue: libcxx-builders-linaro-arm
      arch: armv8l
    <<: *common

  - label: Armv7-M picolibc
    command: libcxx/utils/ci/run-buildbot armv7m-picolibc
    agents:
      queue: libcxx-builders-linaro-arm
      arch: aarch64
    <<: *common

  - label: Armv7-M picolibc -fno-exceptions
    command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
    agents:
      queue: libcxx-builders-linaro-arm
      arch: aarch64
    <<: *common

- group: AIX
  steps:
  - label: AIX (32-bit)
    command: libcxx/utils/ci/run-buildbot aix
    env:
      CC: clang
      CXX: clang++
      OBJECT_MODE: '32'
    agents:
      queue: libcxx-builders
      os: aix
    <<: *common

  - label: AIX (64-bit)
    command: libcxx/utils/ci/run-buildbot aix
    env:
      CC: clang
      CXX: clang++
      OBJECT_MODE: '64'
    agents:
      queue: libcxx-builders
      os: aix
    <<: *common

- group: ':freebsd: FreeBSD'
  steps:
  - label: FreeBSD 13 amd64
    command: libcxx/utils/ci/run-buildbot generic-cxx26
    env:
      CC: clang19
      CXX: clang++19
    agents:
      queue: libcxx-builders
      os: freebsd
    <<: *common

- group: ':android: Android'
  steps:
  - label: Android 5.0, x86 NDK
    command: libcxx/utils/ci/run-buildbot android-ndk-21-def-x86
    agents:
      queue: libcxx-builders
      os: android
    <<: *common

  - label: Android 13, x86_64 NDK
    command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64
    agents:
      queue: libcxx-builders
      os: android
    <<: *common
