blob: 51b9999026247fd33d08da1b5eb9944919c72693 [file] [log] [blame]
#===----------------------------------------------------------------------===##
#
# 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.
#
# The Linux CI runners use the nightly ToT build provided by the Docker image.
# (Note the image isn't updated daily.) The LLVM_HEAD_VERSION contains that
# version number. The Linux CI runners for GCC use the latest stable version.
# Theses numbers are available in all runners, making it easier to update the
# version number.
env:
# LLVM POST-BRANCH bump version
# LLVM POST-BRANCH add compiler test for ToT - 1, e.g. "Clang 17"
# LLVM RELEASE bump remove compiler ToT - 3, e.g. "Clang 15"
LLVM_HEAD_VERSION: "18" # Used compiler, update POST-BRANCH.
GCC_STABLE_VERSION: "13"
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/*"
# Define agents using YAML anchors to reduce duplication
agents_definitions:
_windows_agent: &windows_agent
agents:
queue: windows
# Mac OS Builders
_mac_agent_x86: &mac_agent_x86
agents:
queue: libcxx-builders
os: macos
arch: x86_64
_mac_agent_arm64: &mac_agent_arm64
agents:
queue: libcxx-builders
os: macos
arch: arm64
_mac_agent_any_arch: &mac_agent_any_arch
agents:
queue: libcxx-builders
os: macos
_arm_agent_aarch64: &arm_agent_aarch64
agents:
queue: libcxx-builders-linaro-arm
arch: aarch64
_arm_agent_armv8l: &arm_agent_armv8l
agents:
queue: libcxx-builders-linaro-arm
arch: armv8l
_aix_agent: &aix_agent
agents:
queue: libcxx-builders
os: aix
_android_agent: &android_agent
agents:
queue: libcxx-builders
os: android
environment_definitions:
_common_env: &common_env
ENABLE_CLANG_TIDY: "On"
LLVM_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer-${LLVM_HEAD_VERSION}"
CLANG_CRASH_DIAGNOSTICS_DIR: "crash_diagnostics"
CC: clang-${LLVM_HEAD_VERSION}
CXX: clang++-${LLVM_HEAD_VERSION}
CMAKE: /opt/bin/cmake
_absolute_path_clang: &absolute_path_clang
# Note modules require and absolute path for clang-scan-deps
# https://github.com/llvm/llvm-project/issues/61006
CC: /usr/lib/llvm-${LLVM_HEAD_VERSION}/bin/clang
CXX: /usr/lib/llvm-${LLVM_HEAD_VERSION}/bin/clang++
steps:
- group: ':windows: Windows'
steps:
- label: Clang-cl (DLL)
command: bash libcxx/utils/ci/run-buildbot clang-cl-dll
<<: *windows_agent
<<: *common
- label: Clang-cl (Static)
command: bash libcxx/utils/ci/run-buildbot clang-cl-static
<<: *windows_agent
<<: *common
- label: Clang-cl (no vcruntime exceptions)
command: bash libcxx/utils/ci/run-buildbot clang-cl-no-vcruntime
<<: *common
<<: *windows_agent
- label: Clang-cl (Debug mode)
command: bash libcxx/utils/ci/run-buildbot clang-cl-debug
<<: *windows_agent
<<: *common
- label: Clang-cl (Static CRT)
command: bash libcxx/utils/ci/run-buildbot clang-cl-static-crt
<<: *windows_agent
<<: *common
- label: MinGW (DLL, x86_64)
command: bash libcxx/utils/ci/run-buildbot mingw-dll
<<: *windows_agent
<<: *common
- label: MinGW (Static, x86_64)
command: bash libcxx/utils/ci/run-buildbot mingw-static
<<: *windows_agent
<<: *common
- label: MinGW (DLL, i686)
command: bash libcxx/utils/ci/run-buildbot mingw-dll-i686
<<: *windows_agent
<<: *common
- group: ':mac: Apple'
steps:
- label: MacOS x86_64
command: libcxx/utils/ci/run-buildbot generic-cxx23
<<: *mac_agent_x86
<<: *common
- label: MacOS arm64
command: libcxx/utils/ci/run-buildbot generic-cxx23
<<: *mac_agent_arm64
<<: *common
- label: MacOS with Modules
command: libcxx/utils/ci/run-buildbot generic-modules
<<: *mac_agent_any_arch
<<: *common
# Build with the configuration we use to generate libc++.dylib on Apple platforms
- label: Apple system
command: libcxx/utils/ci/run-buildbot apple-system
<<: *mac_agent_arm64 # This can technically run on any architecture, but we have more resources on arm64 so we pin this job to arm64
<<: *common
- label: Apple back-deployment macosx10.13
command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.13
<<: *mac_agent_x86 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then
<<: *common
- label: Apple back-deployment macosx10.15
command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15
<<: *mac_agent_x86 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then
<<: *common
- label: Apple back-deployment with hardening enabled
command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-hardened-11.0
<<: *mac_agent_x86 # TODO: Remove this once we are able to run back-deployment on arm64 again, since this isn't x86_64 specific
<<: *common
- group: ARM
steps:
- label: AArch64
command: libcxx/utils/ci/run-buildbot aarch64
<<: *arm_agent_aarch64
<<: *common
- label: AArch64 -fno-exceptions
command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
<<: *arm_agent_aarch64
<<: *common
- label: Armv8
command: libcxx/utils/ci/run-buildbot armv8
<<: *arm_agent_armv8l
<<: *common
- label: Armv8 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
<<: *arm_agent_armv8l
<<: *common
- label: Armv7
command: libcxx/utils/ci/run-buildbot armv7
<<: *arm_agent_armv8l
<<: *common
- label: Armv7 -fno-exceptions
command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
<<: *arm_agent_armv8l
<<: *common
- label: Armv7-M picolibc
command: libcxx/utils/ci/run-buildbot armv7m-picolibc
<<: *arm_agent_aarch64
<<: *common
- group: AIX
steps:
- label: AIX (32-bit)
command: libcxx/utils/ci/run-buildbot aix
env:
CC: clang
CXX: clang++
OBJECT_MODE: '32'
<<: *aix_agent
<<: *common
- label: AIX (64-bit)
command: libcxx/utils/ci/run-buildbot aix
env:
CC: clang
CXX: clang++
OBJECT_MODE: '64'
<<: *aix_agent
<<: *common
- group: ':freebsd: FreeBSD'
steps:
- label: FreeBSD 13 amd64
command: libcxx/utils/ci/run-buildbot generic-cxx23
env:
CC: clang16
CXX: clang++16
ENABLE_STD_MODULES: 'Off'
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
<<: *android_agent
<<: *common
- label: Android 13, x86_64 NDK
command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64
<<: *android_agent
<<: *common
# TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
# - label: "Apple back-deployment macosx11.0 arm64"
# command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
# artifact_paths:
# - "**/test-results.xml"
# - "**/*.abilist"
# agents:
# queue: "libcxx-builders"
# os: "macos"
# arch: "arm64"
# retry:
# automatic:
# - exit_status: -1 # Agent was lost
# limit: 2
# timeout_in_minutes: 120