Files
boringssl/infra/config/main.star
Lily Chen 16ba372a6b Add PRESUBMIT.py for infra/config
This adds a PRESUBMIT.py file for infra/config, which works with `git cl
presubmit` from depot_tools. The presubmit function checks that the
lucicfg generated output matches the changes to main.star and has no
validation errors.

Fixes the existing config file to make it conform to the presubmit
checks (e.g. formatting, docstrings).

Also adds a mention of depot_tools to CONTRIBUTING.md to make it clear
that depot_tools works on the boringssl repo.

Change-Id: I311cab911b80025db5c0d780f8959b58c033d81c
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/80627
Auto-Submit: Lily Chen <chlily@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
2025-07-24 14:14:44 -07:00

1120 lines
29 KiB
Plaintext
Executable File

#!/usr/bin/env lucicfg
"""
lucicfg definitions for BoringSSL's CI and CQ.
"""
lucicfg.check_version("1.30.9")
# Use LUCI Scheduler BBv2 names and add Scheduler realms configs.
lucicfg.enable_experiment("crbug.com/1182002")
lucicfg.config(
lint_checks = ["default"],
)
REPO_URL = "https://boringssl.googlesource.com/boringssl"
# The default recipe is "boringssl.py"
RECIPE_BUNDLE = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
luci.project(
name = "boringssl",
buildbucket = "cr-buildbucket.appspot.com",
logdog = "luci-logdog.appspot.com",
milo = "luci-milo.appspot.com",
notify = "luci-notify.appspot.com",
scheduler = "luci-scheduler.appspot.com",
swarming = "chromium-swarm.appspot.com",
acls = [
acl.entry(
roles = [
acl.BUILDBUCKET_READER,
acl.LOGDOG_READER,
acl.PROJECT_CONFIGS_READER,
acl.SCHEDULER_READER,
],
groups = "all",
),
acl.entry(
roles = acl.CQ_COMMITTER,
groups = "project-boringssl-committers",
),
acl.entry(
roles = acl.CQ_DRY_RUNNER,
groups = "project-boringssl-tryjob-access",
),
acl.entry(
roles = acl.CQ_NEW_PATCHSET_RUN_TRIGGERER,
groups = "project-boringssl-tryjob-access",
),
acl.entry(
roles = acl.SCHEDULER_OWNER,
groups = "project-boringssl-admins",
),
acl.entry(
roles = acl.LOGDOG_WRITER,
groups = "luci-logdog-chromium-writers",
),
],
)
luci.bucket(name = "ci")
luci.bucket(
name = "try",
acls = [
# Allow launching tryjobs directly (in addition to doing it through CQ).
acl.entry(
roles = acl.BUILDBUCKET_TRIGGERER,
groups = [
"project-boringssl-tryjob-access",
"service-account-cq",
],
),
],
)
luci.milo(
logo = "https://storage.googleapis.com/chrome-infra/boringssl-logo.png",
)
console_view = luci.console_view(
name = "main",
repo = REPO_URL,
refs = ["refs/heads/main"],
title = "BoringSSL Main Console",
)
luci.cq(
submit_max_burst = 4,
submit_burst_delay = 480 * time.second,
# TODO(davidben): Can this be removed? It is marked as optional and
# deprecated. It was included as part of porting over from commit-queue.cfg.
status_host = "chromium-cq-status.appspot.com",
honor_gerrit_linked_accounts = True,
)
cq_group = luci.cq_group(
name = "main-cq",
watch = cq.refset(REPO_URL, refs = ["refs/heads/.+"]),
retry_config = cq.RETRY_ALL_FAILURES,
)
poller = luci.gitiles_poller(
name = "main-gitiles-trigger",
bucket = "ci",
repo = REPO_URL,
refs = ["refs/heads/main"],
)
luci.logdog(
gs_bucket = "chromium-luci-logdog",
)
notifier = luci.notifier(
name = "all",
on_occurrence = ["FAILURE", "INFRA_FAILURE"],
on_new_status = ["SUCCESS"],
notify_emails = ["boringssl@google.com"],
)
DEFAULT_TIMEOUT = 30 * time.minute
def ci_builder(
name,
host,
*,
recipe = "boringssl",
category = None,
short_name = None,
execution_timeout = None,
properties = {}):
"""Defines a CI builder.
Args:
name: The name to use for the builder.
host: The host to run on.
recipe: The recipe to run.
category: Category in which to display the builder in the console view.
short_name: The short name for the builder in the console view.
execution_timeout: Overrides the default timeout.
properties: Properties to pass to the recipe.
"""
dimensions = dict(host["dimensions"])
dimensions["pool"] = "luci.flex.ci"
caches = [swarming.cache("gocache"), swarming.cache("gopath")]
if "caches" in host:
caches += host["caches"]
properties = dict(properties)
properties["$gatekeeper"] = {"group": "client.boringssl"}
if execution_timeout == None:
execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT)
builder = luci.builder(
name = name,
bucket = "ci",
executable = luci.recipe(
name = recipe,
cipd_package = RECIPE_BUNDLE,
use_python3 = True,
),
service_account = "boringssl-ci-builder@chops-service-accounts.iam.gserviceaccount.com",
dimensions = dimensions,
execution_timeout = execution_timeout,
caches = caches,
notifies = [notifier],
triggered_by = [poller],
properties = properties,
)
luci.console_view_entry(
builder = builder,
console_view = console_view,
category = category,
short_name = short_name,
)
def cq_builder(
name,
host,
*,
recipe = "boringssl",
cq_enabled = True,
execution_timeout = None,
properties = {}):
"""Defines a CQ builder.
Args:
name: The name to use for the builder.
host: The host to run on.
recipe: The recipe to run.
cq_enabled: Whether the try builder is enabled by default. (If false,
the builder is includable_only.)
execution_timeout: Overrides the default timeout.
properties: Properties to pass to the recipe.
"""
dimensions = dict(host["dimensions"])
dimensions["pool"] = "luci.flex.try"
if execution_timeout == None:
execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT)
builder = luci.builder(
name = name,
bucket = "try",
executable = luci.recipe(
name = recipe,
cipd_package = RECIPE_BUNDLE,
use_python3 = True,
),
service_account = "boringssl-try-builder@chops-service-accounts.iam.gserviceaccount.com",
dimensions = dimensions,
execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT),
caches = host.get("caches"),
properties = properties,
)
luci.cq_tryjob_verifier(
builder = builder,
cq_group = cq_group,
includable_only = not cq_enabled,
)
luci.cq_tryjob_verifier(
cq_group = "main-cq",
builder = "chromium:try/tricium-clang-tidy",
owner_whitelist = ["project-boringssl-tryjob-access"],
experiment_percentage = 100,
disable_reuse = True,
mode_allowlist = [cq.MODE_NEW_PATCHSET_RUN],
location_filters = [
cq.location_filter(path_regexp = r".+\.h"),
cq.location_filter(path_regexp = r".+\.c"),
cq.location_filter(path_regexp = r".+\.cc"),
cq.location_filter(path_regexp = r".+\.cpp"),
],
)
def both_builders(
name,
host,
*,
recipe = "boringssl",
category = None,
short_name = None,
cq_enabled = True,
cq_compile_only = None,
execution_timeout = None,
properties = {}):
"""Defines both a CI builder and similarly-configured CQ builder.
Args:
name: The name to use for both builders.
host: The host to run on.
recipe: The recipe to run.
category: Category in which to display the builder in the console view.
short_name: The short name for the builder in the console view.
cq_enabled: Whether the try builder is enabled by default. (If false,
the builder is includable_only.)
cq_compile_only: If cq_compile_only is specified, we generate both a
disabled builder that matches the CI builder, and a compile-only
builder. The compile-only builder is controlled by cq_enabled.
cq_compile_only also specifies the host to run on, because the
compile-only builder usually has weaker requirements.
execution_timeout: Overrides the default timeout.
properties: Properties to pass to the recipe.
"""
ci_builder(
name,
host,
recipe = recipe,
category = category,
short_name = short_name,
execution_timeout = execution_timeout,
properties = properties,
)
cq_builder(
name,
host,
recipe = recipe,
cq_enabled = cq_enabled and not cq_compile_only,
execution_timeout = execution_timeout,
properties = properties,
)
if cq_compile_only:
compile_properties = dict(properties)
compile_properties["run_unit_tests"] = False
compile_properties["run_ssl_tests"] = False
cq_builder(
name + "_compile",
cq_compile_only,
recipe = recipe,
cq_enabled = cq_enabled,
execution_timeout = execution_timeout,
properties = compile_properties,
)
LINUX_HOST = {
"dimensions": {
"os": "Ubuntu-22.04",
"cpu": "x86-64",
},
}
MAC_ARM64_HOST = {
"dimensions": {
"os": "Mac",
"cpu": "arm64",
},
"caches": [swarming.cache("osx_sdk")],
# xcode installation can take a while, particularly when running
# concurrently on multiple VMs on the same host. See crbug.com/1063870
# for more context.
"execution_timeout": 60 * time.minute,
}
MAC_X86_64_HOST = {
"dimensions": {
"os": "Mac-10.15|Mac-11",
"cpu": "x86-64",
},
"caches": [swarming.cache("osx_sdk")],
# xcode installation can take a while, particularly when running
# concurrently on multiple VMs on the same host. See crbug.com/1063870
# for more context.
"execution_timeout": 60 * time.minute,
}
WIN_HOST = {
"dimensions": {
"os": "Windows-10",
"cpu": "x86-64",
},
"caches": [swarming.cache("win_toolchain")],
}
# The Android tests take longer to run. See https://crbug.com/900953.
ANDROID_TIMEOUT = 60 * time.minute
WALLEYE_HOST = {
"dimensions": {
"device_type": "walleye", # Pixel 2
},
"execution_timeout": ANDROID_TIMEOUT,
}
# SDE tests take longer to run.
SDE_TIMEOUT = 3 * 60 * time.minute
# TODO(davidben): Switch the BoringSSL recipe to specify most flags in
# properties rather than parsing names. Then we can add new configurations
# without having to touch multiple repositories.
both_builders(
"android_aarch64",
WALLEYE_HOST,
category = "android|aarch64",
short_name = "dbg",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "arm64-v8a",
"ANDROID_PLATFORM": "android-21",
},
},
)
both_builders(
"android_aarch64_rel",
WALLEYE_HOST,
category = "android|aarch64",
short_name = "rel",
cq_compile_only = LINUX_HOST,
cq_enabled = False,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "arm64-v8a",
"ANDROID_PLATFORM": "android-21",
"CMAKE_BUILD_TYPE": "Release",
},
},
)
both_builders(
"android_aarch64_fips",
# The Android FIPS configuration requires a newer device.
WALLEYE_HOST,
category = "android|aarch64",
short_name = "fips",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "arm64-v8a",
"ANDROID_PLATFORM": "android-21",
# FIPS mode on Android uses shared libraries.
"BUILD_SHARED_LIBS": "1",
"FIPS": "1",
},
},
)
both_builders(
"android_aarch64_fips_noasm",
# The Android FIPS configuration requires a newer device.
WALLEYE_HOST,
category = "android|aarch64",
short_name = "fips3",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"OPENSSL_NO_ASM": "1",
"ANDROID_ABI": "arm64-v8a",
"ANDROID_PLATFORM": "android-21",
# FIPS mode on Android uses shared libraries.
"BUILD_SHARED_LIBS": "1",
"FIPS": "1",
},
},
)
# delocate works on aarch64. Test this by also building the static library mode
# for android_aarch64_fips. Additionally, urandom_test doesn't work in shared
# library builds, so this gives Android FIPS coverage for urandom_test.
both_builders(
"android_aarch64_fips_static",
# The Android FIPS configuration requires a newer device.
WALLEYE_HOST,
category = "android|aarch64",
short_name = "fips2",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "arm64-v8a",
"ANDROID_PLATFORM": "android-21",
"FIPS": "1",
},
},
)
both_builders(
"android_arm",
WALLEYE_HOST,
category = "android|thumb",
short_name = "dbg",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "armeabi-v7a",
"ANDROID_PLATFORM": "android-18",
},
},
)
both_builders(
"android_arm_rel",
WALLEYE_HOST,
category = "android|thumb",
short_name = "rel",
cq_compile_only = LINUX_HOST,
cq_enabled = False,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "armeabi-v7a",
"ANDROID_PLATFORM": "android-18",
"CMAKE_BUILD_TYPE": "Release",
# Although Android now requires NEON support, on one builder, we
# ignore the |__ARM_NEON| preprocessor option, to keep testing
# non-NEON codepaths. This matters because there are a few non-NEON
# assembly functions that would otherwise be untested.
"CMAKE_C_FLAGS": "-DOPENSSL_NO_STATIC_NEON_FOR_TESTING=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_NO_STATIC_NEON_FOR_TESTING=1",
},
},
)
both_builders(
"android_arm_fips",
# The Android FIPS configuration requires a newer device.
WALLEYE_HOST,
category = "android|thumb",
short_name = "fips",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "armeabi-v7a",
"ANDROID_PLATFORM": "android-21",
# FIPS mode on Android uses shared libraries.
"BUILD_SHARED_LIBS": "1",
"FIPS": "1",
},
},
)
both_builders(
"android_arm_armmode_rel",
WALLEYE_HOST,
category = "android|arm",
short_name = "rel",
cq_compile_only = LINUX_HOST,
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "armeabi-v7a",
"ANDROID_ARM_MODE": "arm",
"ANDROID_PLATFORM": "android-18",
"CMAKE_BUILD_TYPE": "Release",
},
},
)
both_builders(
"android_riscv64_compile_only",
LINUX_HOST,
category = "android|riscv64",
short_name = "rel",
properties = {
"android": True,
"cmake_args": {
"ANDROID_ABI": "riscv64",
"ANDROID_PLATFORM": "android-35",
"CMAKE_BUILD_TYPE": "Release",
},
# The default Android NDK cannot be updated until https://crbug.com/boringssl/454 is fixed.
# Meanwhile, RISC-V support requires a newer NDK, thus we override for this builder.
"gclient_vars": {
"android_ndk_revision": "wC8sJjVPRDPTbaZFlki_qXTC1lWJNbJi8glUO0woJ1MC",
},
"run_unit_tests": False,
"run_ssl_tests": False,
},
)
both_builders("docs", LINUX_HOST, recipe = "boringssl_docs", short_name = "doc")
# For now, we use x86_64 Macs to build iOS because there are far more of them
# in luci.flex.ci and luci.flex.try pools. When this changes, switch to
# MAC_ARM64_HOST.
both_builders(
"ios64_compile",
MAC_X86_64_HOST,
category = "ios",
short_name = "64",
properties = {
"cmake_args": {
"CMAKE_OSX_ARCHITECTURES": "arm64",
"CMAKE_OSX_SYSROOT": "iphoneos",
},
"run_unit_tests": False,
"run_ssl_tests": False,
},
)
both_builders(
"linux",
LINUX_HOST,
category = "linux",
short_name = "dbg",
properties = {
"check_stack": True,
"cmake_args": {
# Pick one builder to build with the C++ runtime allowed. The default
# configuration does not check pure virtuals
"BORINGSSL_ALLOW_CXX_RUNTIME": "1",
},
},
)
both_builders(
"linux_rel",
LINUX_HOST,
category = "linux",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
},
},
)
both_builders(
"linux32",
LINUX_HOST,
category = "linux|32",
short_name = "dbg",
properties = {
"check_stack": True,
"cmake_args": {
# 32-bit x86 is cross-compiled on the 64-bit bots.
"CMAKE_SYSTEM_NAME": "Linux",
"CMAKE_SYSTEM_PROCESSOR": "x86",
"CMAKE_ASM_FLAGS": "-m32 -msse2",
"CMAKE_CXX_FLAGS": "-m32 -msse2",
"CMAKE_C_FLAGS": "-m32 -msse2",
},
},
)
both_builders(
"linux32_rel",
LINUX_HOST,
category = "linux|32",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
# 32-bit x86 is cross-compiled on the 64-bit bots.
"CMAKE_SYSTEM_NAME": "Linux",
"CMAKE_SYSTEM_PROCESSOR": "x86",
"CMAKE_ASM_FLAGS": "-m32 -msse2",
"CMAKE_C_FLAGS": "-m32 -msse2",
"CMAKE_CXX_FLAGS": "-m32 -msse2",
},
},
)
both_builders(
"linux32_sde",
LINUX_HOST,
category = "linux|32",
short_name = "sde",
cq_enabled = False,
execution_timeout = SDE_TIMEOUT,
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "RelWithAsserts",
# 32-bit x86 is cross-compiled on the 64-bit bots.
"CMAKE_SYSTEM_NAME": "Linux",
"CMAKE_SYSTEM_PROCESSOR": "x86",
"CMAKE_ASM_FLAGS": "-m32 -msse2",
"CMAKE_C_FLAGS": "-m32 -msse2",
"CMAKE_CXX_FLAGS": "-m32 -msse2",
},
"run_ssl_tests": False,
"sde": True,
},
)
both_builders(
"linux32_nosse2_noasm",
LINUX_HOST,
category = "linux|32",
short_name = "nosse2",
properties = {
"cmake_args": {
"OPENSSL_NO_ASM": "1",
"OPENSSL_NO_SSE2_FOR_TESTING": "1",
# 32-bit x86 is cross-compiled on the 64-bit bots.
"CMAKE_SYSTEM_NAME": "Linux",
"CMAKE_SYSTEM_PROCESSOR": "x86",
"CMAKE_ASM_FLAGS": "-m32 -msse2",
"CMAKE_C_FLAGS": "-m32 -msse2",
"CMAKE_CXX_FLAGS": "-m32 -msse2",
},
},
)
both_builders(
"linux_clang_cfi",
LINUX_HOST,
category = "linux|clang",
short_name = "cfi",
cq_enabled = False,
properties = {
"clang": True,
"cmake_args": {
"CFI": "1",
},
},
)
both_builders(
"linux_clang_rel",
LINUX_HOST,
category = "linux|clang",
short_name = "rel",
properties = {
"clang": True,
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
},
},
)
both_builders(
"linux_clang_rel_msan",
LINUX_HOST,
category = "linux|clang",
short_name = "msan",
properties = {
"clang": True,
"cmake_args": {
# TODO(davidben): Should this be RelWithAsserts?
"CMAKE_BUILD_TYPE": "Release",
"MSAN": "1",
"USE_CUSTOM_LIBCXX": "1",
},
"gclient_vars": {
"checkout_libcxx": True,
},
},
)
both_builders(
"linux_clang_rel_tsan",
LINUX_HOST,
category = "linux|clang",
short_name = "tsan",
cq_enabled = False,
properties = {
"clang": True,
"cmake_args": {
# TODO(davidben): Should this be RelWithAsserts?
"CMAKE_BUILD_TYPE": "Release",
"TSAN": "1",
"USE_CUSTOM_LIBCXX": "1",
},
"gclient_vars": {
"checkout_libcxx": True,
},
# SSL tests are all single-threaded, so running them under TSan is a
# waste of time.
"run_ssl_tests": False,
},
)
both_builders(
"linux_clang_ubsan",
LINUX_HOST,
category = "linux|clang",
short_name = "ubsan",
cq_enabled = True,
properties = {
"clang": True,
"cmake_args": {
"CMAKE_BUILD_TYPE": "RelWithAsserts",
"UBSAN": "1",
},
},
)
both_builders(
"linux_fips",
LINUX_HOST,
category = "linux|fips",
short_name = "dbg",
properties = {
"cmake_args": {
"FIPS": "1",
},
},
)
both_builders(
"linux_fips_rel",
LINUX_HOST,
category = "linux|fips",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
"FIPS": "1",
},
},
)
both_builders(
"linux_fips_clang",
LINUX_HOST,
category = "linux|fips|clang",
short_name = "dbg",
properties = {
"clang": True,
"cmake_args": {
"FIPS": "1",
},
},
)
both_builders(
"linux_fips_clang_rel",
LINUX_HOST,
category = "linux|fips|clang",
short_name = "rel",
properties = {
"clang": True,
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
"FIPS": "1",
},
},
)
both_builders(
"linux_fips_noasm_asan",
LINUX_HOST,
category = "linux|fips",
short_name = "asan",
properties = {
"clang": True,
"cmake_args": {
"ASAN": "1",
"FIPS": "1",
"OPENSSL_NO_ASM": "1",
},
},
)
both_builders(
"linux_fuzz",
LINUX_HOST,
category = "linux",
short_name = "fuzz",
properties = {
"clang": True,
"cmake_args": {
"FUZZ": "1",
"LIBFUZZER_FROM_DEPS": "1",
},
"gclient_vars": {
"checkout_fuzzer": True,
},
},
)
both_builders(
"linux_noasm_asan",
LINUX_HOST,
category = "linux",
short_name = "asan",
properties = {
"clang": True,
"cmake_args": {
"ASAN": "1",
"OPENSSL_NO_ASM": "1",
},
},
)
both_builders(
"linux_nothreads",
LINUX_HOST,
category = "linux",
short_name = "not",
properties = {
"cmake_args": {
"CMAKE_C_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1",
},
},
)
# TODO(crbug.com/42290446): Enable on both CQ and CI.
cq_builder(
"linux_rust",
LINUX_HOST,
cq_enabled = False,
properties = {
"cmake_args": {
"RUST_BINDINGS": "x86_64-unknown-linux-gnu",
},
"rust": True,
},
)
both_builders(
"linux_sde",
LINUX_HOST,
category = "linux",
short_name = "sde",
cq_enabled = False,
execution_timeout = SDE_TIMEOUT,
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "RelWithAsserts",
},
"run_ssl_tests": False,
"sde": True,
},
)
both_builders(
"linux_shared",
LINUX_HOST,
category = "linux",
short_name = "sh",
properties = {
"cmake_args": {
"BUILD_SHARED_LIBS": "1",
},
# The default Linux build may not depend on the C++ runtime. This is
# easy to check when building shared libraries.
"check_imported_libraries": True,
},
)
both_builders(
"linux_small",
LINUX_HOST,
category = "linux",
short_name = "sm",
properties = {
"cmake_args": {
"CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1",
},
},
)
both_builders(
"linux_nosse2_noasm",
LINUX_HOST,
category = "linux",
short_name = "nosse2",
properties = {
"cmake_args": {
"OPENSSL_NO_ASM": "1",
"OPENSSL_NO_SSE2_FOR_TESTING": "1",
},
},
)
both_builders(
"linux_bazel",
LINUX_HOST,
category = "linux",
short_name = "bzl",
recipe = "boringssl_bazel",
)
both_builders("mac", MAC_X86_64_HOST, category = "mac", short_name = "dbg")
both_builders(
"mac_rel",
MAC_X86_64_HOST,
category = "mac",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
},
},
)
both_builders(
"mac_small",
MAC_X86_64_HOST,
category = "mac",
short_name = "sm",
properties = {
"cmake_args": {
"CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1",
},
},
)
both_builders("mac_arm64", MAC_ARM64_HOST, category = "mac", short_name = "arm64")
both_builders(
"mac_arm64_bazel",
MAC_ARM64_HOST,
category = "mac",
short_name = "bzl",
recipe = "boringssl_bazel",
)
both_builders(
"win32",
WIN_HOST,
category = "win|x86",
short_name = "dbg",
cq_compile_only = WIN_HOST, # Reduce CQ cycle times.
properties = {
"msvc_target": "x86",
},
)
both_builders(
"win32_rel",
WIN_HOST,
category = "win|x86",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
},
"msvc_target": "x86",
},
)
both_builders(
"win32_sde",
WIN_HOST,
category = "win|x86",
short_name = "sde",
cq_enabled = False,
execution_timeout = SDE_TIMEOUT,
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "RelWithAsserts",
},
"msvc_target": "x86",
"run_ssl_tests": False,
"sde": True,
},
)
both_builders(
"win32_small",
WIN_HOST,
category = "win|x86",
short_name = "sm",
properties = {
"cmake_args": {
"CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1",
},
"msvc_target": "x86",
},
)
both_builders(
"win32_clang",
WIN_HOST,
category = "win|x86",
short_name = "clang",
cq_compile_only = WIN_HOST, # Reduce CQ cycle times.
properties = {
"clang": True,
"msvc_target": "x86",
"cmake_args": {
# Clang doesn't pick up 32-bit x86 from msvc_target. Specify it as a
# cross-compile.
"CMAKE_SYSTEM_NAME": "Windows",
"CMAKE_SYSTEM_PROCESSOR": "x86",
"CMAKE_ASM_FLAGS": "-m32 -msse2",
"CMAKE_C_FLAGS": "-m32 -msse2",
"CMAKE_CXX_FLAGS": "-m32 -msse2",
},
},
)
both_builders(
"win64",
WIN_HOST,
category = "win|x64",
short_name = "dbg",
cq_compile_only = WIN_HOST, # Reduce CQ cycle times.
properties = {
"msvc_target": "x64",
},
)
both_builders(
"win64_rel",
WIN_HOST,
category = "win|x64",
short_name = "rel",
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "Release",
},
"msvc_target": "x64",
},
)
both_builders(
"win64_sde",
WIN_HOST,
category = "win|x64",
short_name = "sde",
cq_enabled = False,
execution_timeout = SDE_TIMEOUT,
properties = {
"cmake_args": {
"CMAKE_BUILD_TYPE": "RelWithAsserts",
},
"msvc_target": "x64",
"run_ssl_tests": False,
"sde": True,
},
)
both_builders(
"win64_small",
WIN_HOST,
category = "win|x64",
short_name = "sm",
properties = {
"cmake_args": {
"CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1",
"CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1",
},
"msvc_target": "x64",
},
)
both_builders(
"win64_clang",
WIN_HOST,
category = "win|x64",
short_name = "clg",
cq_compile_only = WIN_HOST, # Reduce CQ cycle times.
properties = {
"clang": True,
"msvc_target": "x64",
},
)
both_builders(
"win_arm64_compile",
WIN_HOST,
category = "win|arm64",
short_name = "clang",
properties = {
"clang": True,
"cmake_args": {
# Clang doesn't pick up arm64 from msvc_target. Specify it as a
# cross-compile.
"CMAKE_SYSTEM_NAME": "Windows",
"CMAKE_SYSTEM_PROCESSOR": "arm64",
"CMAKE_ASM_FLAGS": "--target=arm64-windows",
"CMAKE_C_FLAGS": "--target=arm64-windows",
"CMAKE_CXX_FLAGS": "--target=arm64-windows",
},
"gclient_vars": {
"checkout_nasm": False,
},
"msvc_target": "arm64",
"run_unit_tests": False,
"run_ssl_tests": False,
},
)
both_builders(
"win_arm64_msvc_compile",
WIN_HOST,
category = "win|arm64",
short_name = "msvc",
properties = {
"cmake_args": {
# This is a cross-compile, so CMake needs to be told the processor.
# MSVC will pick up the architecture from msvc_target.
"CMAKE_SYSTEM_NAME": "Windows",
"CMAKE_SYSTEM_PROCESSOR": "arm64",
# We do not currently support Windows arm64 assembly with MSVC.
"OPENSSL_NO_ASM": "1",
},
"gclient_vars": {
"checkout_nasm": False,
},
"msvc_target": "arm64",
"run_unit_tests": False,
"run_ssl_tests": False,
},
)