#===----------------------------------------------------------------------===##
#
# 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.
#

steps:
  - label: "C++03"
    command: "libcxx/utils/ci/run-buildbot generic-cxx03"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "C++11"
    command: "libcxx/utils/ci/run-buildbot generic-cxx11"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "C++14"
    command: "libcxx/utils/ci/run-buildbot generic-cxx14"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "C++17"
    command: "libcxx/utils/ci/run-buildbot generic-cxx17"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "C++20"
    command: "libcxx/utils/ci/run-buildbot generic-cxx20"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "C++2b"
    command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "-fno-exceptions"
    command: "libcxx/utils/ci/run-buildbot generic-noexceptions"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "GCC/C++20"
    command: "libcxx/utils/ci/run-buildbot generic-gcc"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "ASAN"
    command: "libcxx/utils/ci/run-buildbot generic-asan"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "TSAN"
    command: "libcxx/utils/ci/run-buildbot generic-tsan"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "UBSAN"
    command: "libcxx/utils/ci/run-buildbot generic-ubsan"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "With LLVM's libunwind"
    command: "libcxx/utils/ci/run-buildbot generic-with_llvm_unwinder"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Single-threaded"
    command: "libcxx/utils/ci/run-buildbot generic-singlethreaded"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "No debug mode"
    command: "libcxx/utils/ci/run-buildbot generic-nodebug"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "No Filesystem"
    command: "libcxx/utils/ci/run-buildbot generic-no-filesystem"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "No random device"
    command: "libcxx/utils/ci/run-buildbot generic-no-random_device"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "No locale"
    command: "libcxx/utils/ci/run-buildbot generic-no-localization"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "MacOS C++20"
    command: "libcxx/utils/ci/run-buildbot generic-cxx20"
    artifact_paths:
      - "**/test-results.xml"
      - "**/*.abilist"
    agents:
      queue: "libcxx-macos-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Benchmarks"
    command: "libcxx/utils/ci/run-buildbot benchmarks"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Documentation"
    command: "libcxx/utils/ci/run-buildbot documentation"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Legacy standalone build"
    command: "libcxx/utils/ci/run-buildbot legacy-standalone"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Unified standalone build"
    command: "libcxx/utils/ci/run-buildbot unified-standalone"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  # Build with the configuration we use to generate libc++.dylib on Apple platforms
  - label: "Apple system"
    command: "libcxx/utils/ci/run-buildbot x86_64-apple-system"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-macos-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Apple system -fno-exceptions"
    command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-noexceptions"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-macos-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  # Test back-deployment to older Apple platforms
  - label: "Apple back-deployment macosx10.9"
    command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-backdeployment-10.9"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-macos-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2

  - label: "Apple back-deployment macosx10.15"
    command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-backdeployment-10.15"
    artifact_paths:
      - "**/test-results.xml"
    agents:
      queue: "libcxx-macos-builders"
    retry:
      automatic:
        - exit_status: -1  # Agent was lost
          limit: 2
