1#!/usr/bin/env lucicfg 2 3""" 4lucicfg definitions for BoringSSL's CI and CQ. 5""" 6 7lucicfg.check_version("1.30.9") 8 9# Use LUCI Scheduler BBv2 names and add Scheduler realms configs. 10lucicfg.enable_experiment("crbug.com/1182002") 11 12lucicfg.config( 13 lint_checks = ["default"], 14) 15 16REPO_URL = "https://boringssl.googlesource.com/boringssl" 17 18# The default recipe is "boringssl.py" 19RECIPE_BUNDLE = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" 20 21luci.project( 22 name = "boringssl", 23 buildbucket = "cr-buildbucket.appspot.com", 24 logdog = "luci-logdog.appspot.com", 25 milo = "luci-milo.appspot.com", 26 notify = "luci-notify.appspot.com", 27 scheduler = "luci-scheduler.appspot.com", 28 swarming = "chromium-swarm.appspot.com", 29 acls = [ 30 acl.entry( 31 roles = [ 32 acl.BUILDBUCKET_READER, 33 acl.LOGDOG_READER, 34 acl.PROJECT_CONFIGS_READER, 35 acl.SCHEDULER_READER, 36 ], 37 groups = "all", 38 ), 39 acl.entry( 40 roles = acl.CQ_COMMITTER, 41 groups = "project-boringssl-committers", 42 ), 43 acl.entry( 44 roles = acl.CQ_DRY_RUNNER, 45 groups = "project-boringssl-tryjob-access", 46 ), 47 acl.entry( 48 roles = acl.SCHEDULER_OWNER, 49 groups = "project-boringssl-admins", 50 ), 51 acl.entry( 52 roles = acl.LOGDOG_WRITER, 53 groups = "luci-logdog-chromium-writers", 54 ), 55 ], 56) 57 58luci.bucket(name = "ci") 59 60luci.bucket( 61 name = "try", 62 acls = [ 63 # Allow launching tryjobs directly (in addition to doing it through CQ). 64 acl.entry( 65 roles = acl.BUILDBUCKET_TRIGGERER, 66 groups = [ 67 "project-boringssl-tryjob-access", 68 "service-account-cq", 69 ], 70 ), 71 ], 72) 73 74luci.milo( 75 logo = "https://storage.googleapis.com/chrome-infra/boringssl-logo.png", 76) 77 78console_view = luci.console_view( 79 name = "main", 80 repo = REPO_URL, 81 refs = ["refs/heads/master"], 82 title = "BoringSSL Main Console", 83) 84 85luci.cq( 86 submit_max_burst = 4, 87 submit_burst_delay = 480 * time.second, 88 # TODO(davidben): Can this be removed? It is marked as optional and 89 # deprecated. It was included as part of porting over from commit-queue.cfg. 90 status_host = "chromium-cq-status.appspot.com", 91 honor_gerrit_linked_accounts = True, 92) 93 94cq_group = luci.cq_group( 95 name = "main-cq", 96 watch = cq.refset(REPO_URL, refs = ["refs/heads/.+"]), 97 retry_config = cq.RETRY_ALL_FAILURES, 98) 99 100poller = luci.gitiles_poller( 101 name = "master-gitiles-trigger", 102 bucket = "ci", 103 repo = REPO_URL, 104 refs = ["refs/heads/master"], 105) 106 107luci.logdog( 108 gs_bucket = "chromium-luci-logdog", 109) 110 111notifier = luci.notifier( 112 name = "all", 113 on_occurrence = ["FAILURE", "INFRA_FAILURE"], 114 on_new_status = ["SUCCESS"], 115 notify_emails = ["boringssl@google.com"], 116) 117 118DEFAULT_TIMEOUT = 30 * time.minute 119 120def ci_builder( 121 name, 122 host, 123 *, 124 recipe = "boringssl", 125 category = None, 126 short_name = None, 127 execution_timeout = None, 128 properties = {}): 129 dimensions = dict(host["dimensions"]) 130 dimensions["pool"] = "luci.flex.ci" 131 caches = [swarming.cache("gocache"), swarming.cache("gopath")] 132 if "caches" in host: 133 caches += host["caches"] 134 properties = dict(properties) 135 properties["$gatekeeper"] = {"group": "client.boringssl"} 136 if execution_timeout == None: 137 execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT) 138 builder = luci.builder( 139 name = name, 140 bucket = "ci", 141 executable = luci.recipe( 142 name = recipe, 143 cipd_package = RECIPE_BUNDLE, 144 use_python3 = True, 145 ), 146 service_account = "boringssl-ci-builder@chops-service-accounts.iam.gserviceaccount.com", 147 dimensions = dimensions, 148 execution_timeout = execution_timeout, 149 caches = caches, 150 notifies = [notifier], 151 triggered_by = [poller], 152 properties = properties, 153 ) 154 luci.console_view_entry( 155 builder = builder, 156 console_view = console_view, 157 category = category, 158 short_name = short_name, 159 ) 160 161def cq_builder( 162 name, 163 host, 164 *, 165 recipe = "boringssl", 166 cq_enabled = True, 167 execution_timeout = None, 168 properties = {}): 169 dimensions = dict(host["dimensions"]) 170 dimensions["pool"] = "luci.flex.try" 171 if execution_timeout == None: 172 execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT) 173 builder = luci.builder( 174 name = name, 175 bucket = "try", 176 executable = luci.recipe( 177 name = recipe, 178 cipd_package = RECIPE_BUNDLE, 179 use_python3 = True, 180 ), 181 service_account = "boringssl-try-builder@chops-service-accounts.iam.gserviceaccount.com", 182 dimensions = dimensions, 183 execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT), 184 caches = host.get("caches"), 185 properties = properties, 186 ) 187 luci.cq_tryjob_verifier( 188 builder = builder, 189 cq_group = cq_group, 190 includable_only = not cq_enabled, 191 ) 192 193def both_builders( 194 name, 195 host, 196 *, 197 recipe = "boringssl", 198 category = None, 199 short_name = None, 200 cq_enabled = True, 201 cq_compile_only = None, 202 execution_timeout = None, 203 properties = {}): 204 ci_builder( 205 name, 206 host, 207 recipe = recipe, 208 category = category, 209 short_name = short_name, 210 execution_timeout = execution_timeout, 211 properties = properties, 212 ) 213 214 # If cq_compile_only is specified, we generate both a disabled builder that 215 # matches the CI builder, and a compile-only builder. The compile-only 216 # builder is controlled by cq_enabled. cq_compile_only also specifies the 217 # host to run on, because the compile-only builder usually has weaker 218 # requirements. 219 cq_builder( 220 name, 221 host, 222 recipe = recipe, 223 cq_enabled = cq_enabled and not cq_compile_only, 224 execution_timeout = execution_timeout, 225 properties = properties, 226 ) 227 if cq_compile_only: 228 compile_properties = dict(properties) 229 compile_properties["run_unit_tests"] = False 230 compile_properties["run_ssl_tests"] = False 231 cq_builder( 232 name + "_compile", 233 cq_compile_only, 234 recipe = recipe, 235 cq_enabled = cq_enabled, 236 execution_timeout = execution_timeout, 237 properties = compile_properties, 238 ) 239 240LINUX_HOST = { 241 "dimensions": { 242 "os": "Ubuntu-22.04", 243 "cpu": "x86-64", 244 }, 245} 246 247MAC_ARM64_HOST = { 248 "dimensions": { 249 "os": "Mac", 250 "cpu": "arm64", 251 }, 252 "caches": [swarming.cache("osx_sdk")], 253 # xcode installation can take a while, particularly when running 254 # concurrently on multiple VMs on the same host. See crbug.com/1063870 255 # for more context. 256 "execution_timeout": 60 * time.minute, 257} 258 259MAC_X86_64_HOST = { 260 "dimensions": { 261 "os": "Mac-10.15|Mac-11", 262 "cpu": "x86-64", 263 }, 264 "caches": [swarming.cache("osx_sdk")], 265 # xcode installation can take a while, particularly when running 266 # concurrently on multiple VMs on the same host. See crbug.com/1063870 267 # for more context. 268 "execution_timeout": 60 * time.minute, 269} 270 271WIN_HOST = { 272 "dimensions": { 273 "os": "Windows-10", 274 "cpu": "x86-64", 275 }, 276 "caches": [swarming.cache("win_toolchain")], 277} 278 279# The Android tests take longer to run. See https://crbug.com/900953. 280ANDROID_TIMEOUT = 60 * time.minute 281 282WALLEYE_HOST = { 283 "dimensions": { 284 "device_type": "walleye", # Pixel 2 285 }, 286 "execution_timeout": ANDROID_TIMEOUT, 287} 288 289# SDE tests take longer to run. 290SDE_TIMEOUT = 3 * 60 * time.minute 291 292# TODO(davidben): Switch the BoringSSL recipe to specify most flags in 293# properties rather than parsing names. Then we can add new configurations 294# without having to touch multiple repositories. 295 296both_builders( 297 "android_aarch64", 298 WALLEYE_HOST, 299 category = "android|aarch64", 300 short_name = "dbg", 301 cq_compile_only = LINUX_HOST, 302 properties = { 303 "android": True, 304 "cmake_args": { 305 "ANDROID_ABI": "arm64-v8a", 306 "ANDROID_PLATFORM": "android-21", 307 }, 308 }, 309) 310both_builders( 311 "android_aarch64_rel", 312 WALLEYE_HOST, 313 category = "android|aarch64", 314 short_name = "rel", 315 cq_compile_only = LINUX_HOST, 316 cq_enabled = False, 317 properties = { 318 "android": True, 319 "cmake_args": { 320 "ANDROID_ABI": "arm64-v8a", 321 "ANDROID_PLATFORM": "android-21", 322 "CMAKE_BUILD_TYPE": "Release", 323 }, 324 }, 325) 326both_builders( 327 "android_aarch64_fips", 328 # The Android FIPS configuration requires a newer device. 329 WALLEYE_HOST, 330 category = "android|aarch64", 331 short_name = "fips", 332 cq_compile_only = LINUX_HOST, 333 properties = { 334 "android": True, 335 "cmake_args": { 336 "ANDROID_ABI": "arm64-v8a", 337 "ANDROID_PLATFORM": "android-21", 338 # FIPS mode on Android uses shared libraries. 339 "BUILD_SHARED_LIBS": "1", 340 "FIPS": "1", 341 }, 342 }, 343) 344 345both_builders( 346 "android_aarch64_fips_noasm", 347 # The Android FIPS configuration requires a newer device. 348 WALLEYE_HOST, 349 category = "android|aarch64", 350 short_name = "fips3", 351 cq_compile_only = LINUX_HOST, 352 properties = { 353 "android": True, 354 "cmake_args": { 355 "OPENSSL_NO_ASM": "1", 356 "ANDROID_ABI": "arm64-v8a", 357 "ANDROID_PLATFORM": "android-21", 358 # FIPS mode on Android uses shared libraries. 359 "BUILD_SHARED_LIBS": "1", 360 "FIPS": "1", 361 }, 362 }, 363) 364 365 366# delocate works on aarch64. Test this by also building the static library mode 367# for android_aarch64_fips. Additionally, urandom_test doesn't work in shared 368# library builds, so this gives Android FIPS coverage for urandom_test. 369both_builders( 370 "android_aarch64_fips_static", 371 # The Android FIPS configuration requires a newer device. 372 WALLEYE_HOST, 373 category = "android|aarch64", 374 short_name = "fips2", 375 cq_compile_only = LINUX_HOST, 376 properties = { 377 "android": True, 378 "cmake_args": { 379 "ANDROID_ABI": "arm64-v8a", 380 "ANDROID_PLATFORM": "android-21", 381 "FIPS": "1", 382 }, 383 }, 384) 385 386both_builders( 387 "android_arm", 388 WALLEYE_HOST, 389 category = "android|thumb", 390 short_name = "dbg", 391 cq_compile_only = LINUX_HOST, 392 properties = { 393 "android": True, 394 "cmake_args": { 395 "ANDROID_ABI": "armeabi-v7a", 396 # Newer versions of the Android NDK make NEON-only builds by 397 # default. We rely on making NEON-optional builds for some of our 398 # test coverage, but see https://crbug.com/boringssl/454. 399 "ANDROID_ARM_NEON": "FALSE", 400 "ANDROID_PLATFORM": "android-18", 401 }, 402 }, 403) 404both_builders( 405 "android_arm_rel", 406 WALLEYE_HOST, 407 category = "android|thumb", 408 short_name = "rel", 409 cq_compile_only = LINUX_HOST, 410 cq_enabled = False, 411 properties = { 412 "android": True, 413 "cmake_args": { 414 "ANDROID_ABI": "armeabi-v7a", 415 # Newer versions of the Android NDK make NEON-only builds by 416 # default. We rely on making NEON-optional builds for some of our 417 # test coverage, but see https://crbug.com/boringssl/454. 418 "ANDROID_ARM_NEON": "FALSE", 419 "ANDROID_PLATFORM": "android-18", 420 "CMAKE_BUILD_TYPE": "Release", 421 }, 422 }, 423) 424both_builders( 425 "android_arm_fips", 426 # The Android FIPS configuration requires a newer device. 427 WALLEYE_HOST, 428 category = "android|thumb", 429 short_name = "fips", 430 cq_compile_only = LINUX_HOST, 431 properties = { 432 "android": True, 433 "cmake_args": { 434 "ANDROID_ABI": "armeabi-v7a", 435 "ANDROID_PLATFORM": "android-21", 436 # FIPS mode on Android uses shared libraries. 437 "BUILD_SHARED_LIBS": "1", 438 "FIPS": "1", 439 }, 440 }, 441) 442both_builders( 443 "android_arm_armmode_rel", 444 WALLEYE_HOST, 445 category = "android|arm", 446 short_name = "rel", 447 cq_compile_only = LINUX_HOST, 448 properties = { 449 "android": True, 450 "cmake_args": { 451 "ANDROID_ABI": "armeabi-v7a", 452 "ANDROID_ARM_MODE": "arm", 453 # Newer versions of the Android NDK make NEON-only builds by 454 # default. We rely on making NEON-optional builds for some of our 455 # test coverage, but see https://crbug.com/boringssl/454. 456 "ANDROID_ARM_NEON": "FALSE", 457 "ANDROID_PLATFORM": "android-18", 458 "CMAKE_BUILD_TYPE": "Release", 459 }, 460 }, 461) 462both_builders( 463 "android_riscv64_compile_only", 464 LINUX_HOST, 465 category = "android|riscv64", 466 short_name = "rel", 467 properties = { 468 "android": True, 469 "cmake_args": { 470 "ANDROID_ABI": "riscv64", 471 "ANDROID_PLATFORM": "android-35", 472 "CMAKE_BUILD_TYPE": "Release", 473 }, 474 # The default Android NDK cannot be updated until https://crbug.com/boringssl/454 is fixed. 475 # Meanwhile, RISC-V support requires a newer NDK, thus we override for this builder. 476 "gclient_vars": { 477 "android_ndk_revision": "wC8sJjVPRDPTbaZFlki_qXTC1lWJNbJi8glUO0woJ1MC", 478 }, 479 "run_unit_tests": False, 480 "run_ssl_tests": False, 481 }, 482) 483 484both_builders("docs", LINUX_HOST, recipe = "boringssl_docs", short_name = "doc") 485 486# For now, we use x86_64 Macs to build iOS because there are far more of them 487# in luci.flex.ci and luci.flex.try pools. When this changes, switch to 488# MAC_ARM64_HOST. 489both_builders( 490 "ios64_compile", 491 MAC_X86_64_HOST, 492 category = "ios", 493 short_name = "64", 494 properties = { 495 "cmake_args": { 496 "CMAKE_OSX_ARCHITECTURES": "arm64", 497 "CMAKE_OSX_SYSROOT": "iphoneos", 498 }, 499 "run_unit_tests": False, 500 "run_ssl_tests": False, 501 }, 502) 503both_builders( 504 "linux", 505 LINUX_HOST, 506 category = "linux", 507 short_name = "dbg", 508 properties = { 509 "check_stack": True, 510 "cmake_args": { 511 # Pick one builder to build with the C++ runtime allowed. The default 512 # configuration does not check pure virtuals 513 "BORINGSSL_ALLOW_CXX_RUNTIME": "1", 514 }, 515 }, 516) 517both_builders( 518 "linux_rel", 519 LINUX_HOST, 520 category = "linux", 521 short_name = "rel", 522 properties = { 523 "cmake_args": { 524 "CMAKE_BUILD_TYPE": "Release", 525 }, 526 }, 527) 528both_builders( 529 "linux32", 530 LINUX_HOST, 531 category = "linux|32", 532 short_name = "dbg", 533 properties = { 534 "check_stack": True, 535 "cmake_args": { 536 # 32-bit x86 is cross-compiled on the 64-bit bots. 537 "CMAKE_SYSTEM_NAME": "Linux", 538 "CMAKE_SYSTEM_PROCESSOR": "x86", 539 "CMAKE_ASM_FLAGS": "-m32 -msse2", 540 "CMAKE_CXX_FLAGS": "-m32 -msse2", 541 "CMAKE_C_FLAGS": "-m32 -msse2", 542 }, 543 }, 544) 545both_builders( 546 "linux32_rel", 547 LINUX_HOST, 548 category = "linux|32", 549 short_name = "rel", 550 properties = { 551 "cmake_args": { 552 "CMAKE_BUILD_TYPE": "Release", 553 # 32-bit x86 is cross-compiled on the 64-bit bots. 554 "CMAKE_SYSTEM_NAME": "Linux", 555 "CMAKE_SYSTEM_PROCESSOR": "x86", 556 "CMAKE_ASM_FLAGS": "-m32 -msse2", 557 "CMAKE_C_FLAGS": "-m32 -msse2", 558 "CMAKE_CXX_FLAGS": "-m32 -msse2", 559 }, 560 }, 561) 562both_builders( 563 "linux32_sde", 564 LINUX_HOST, 565 category = "linux|32", 566 short_name = "sde", 567 cq_enabled = False, 568 execution_timeout = SDE_TIMEOUT, 569 properties = { 570 "cmake_args": { 571 "CMAKE_BUILD_TYPE": "RelWithAsserts", 572 # 32-bit x86 is cross-compiled on the 64-bit bots. 573 "CMAKE_SYSTEM_NAME": "Linux", 574 "CMAKE_SYSTEM_PROCESSOR": "x86", 575 "CMAKE_ASM_FLAGS": "-m32 -msse2", 576 "CMAKE_C_FLAGS": "-m32 -msse2", 577 "CMAKE_CXX_FLAGS": "-m32 -msse2", 578 }, 579 "run_ssl_tests": False, 580 "sde": True, 581 }, 582) 583both_builders( 584 "linux32_nosse2_noasm", 585 LINUX_HOST, 586 category = "linux|32", 587 short_name = "nosse2", 588 properties = { 589 "cmake_args": { 590 "OPENSSL_NO_ASM": "1", 591 "OPENSSL_NO_SSE2_FOR_TESTING": "1", 592 # 32-bit x86 is cross-compiled on the 64-bit bots. 593 "CMAKE_SYSTEM_NAME": "Linux", 594 "CMAKE_SYSTEM_PROCESSOR": "x86", 595 "CMAKE_ASM_FLAGS": "-m32 -msse2", 596 "CMAKE_C_FLAGS": "-m32 -msse2", 597 "CMAKE_CXX_FLAGS": "-m32 -msse2", 598 }, 599 }, 600) 601both_builders( 602 "linux_clang_cfi", 603 LINUX_HOST, 604 category = "linux|clang", 605 short_name = "cfi", 606 cq_enabled = False, 607 properties = { 608 "clang": True, 609 "cmake_args": { 610 "CFI": "1", 611 }, 612 }, 613) 614both_builders( 615 "linux_clang_rel", 616 LINUX_HOST, 617 category = "linux|clang", 618 short_name = "rel", 619 properties = { 620 "clang": True, 621 "cmake_args": { 622 "CMAKE_BUILD_TYPE": "Release", 623 }, 624 }, 625) 626both_builders( 627 "linux_clang_rel_msan", 628 LINUX_HOST, 629 category = "linux|clang", 630 short_name = "msan", 631 properties = { 632 "clang": True, 633 "cmake_args": { 634 # TODO(davidben): Should this be RelWithAsserts? 635 "CMAKE_BUILD_TYPE": "Release", 636 "MSAN": "1", 637 "USE_CUSTOM_LIBCXX": "1", 638 }, 639 "gclient_vars": { 640 "checkout_libcxx": True, 641 }, 642 }, 643) 644both_builders( 645 "linux_clang_rel_tsan", 646 LINUX_HOST, 647 category = "linux|clang", 648 short_name = "tsan", 649 cq_enabled = False, 650 properties = { 651 "clang": True, 652 "cmake_args": { 653 # TODO(davidben): Should this be RelWithAsserts? 654 "CMAKE_BUILD_TYPE": "Release", 655 "TSAN": "1", 656 "USE_CUSTOM_LIBCXX": "1", 657 }, 658 "gclient_vars": { 659 "checkout_libcxx": True, 660 }, 661 # SSL tests are all single-threaded, so running them under TSan is a 662 # waste of time. 663 "run_ssl_tests": False, 664 }, 665) 666both_builders( 667 "linux_clang_ubsan", 668 LINUX_HOST, 669 category = "linux|clang", 670 short_name = "ubsan", 671 cq_enabled = True, 672 properties = { 673 "clang": True, 674 "cmake_args": { 675 "CMAKE_BUILD_TYPE": "RelWithAsserts", 676 "UBSAN": "1", 677 }, 678 }, 679) 680both_builders( 681 "linux_fips", 682 LINUX_HOST, 683 category = "linux|fips", 684 short_name = "dbg", 685 properties = { 686 "cmake_args": { 687 "FIPS": "1", 688 }, 689 }, 690) 691both_builders( 692 "linux_fips_rel", 693 LINUX_HOST, 694 category = "linux|fips", 695 short_name = "rel", 696 properties = { 697 "cmake_args": { 698 "CMAKE_BUILD_TYPE": "Release", 699 "FIPS": "1", 700 }, 701 }, 702) 703both_builders( 704 "linux_fips_clang", 705 LINUX_HOST, 706 category = "linux|fips|clang", 707 short_name = "dbg", 708 properties = { 709 "clang": True, 710 "cmake_args": { 711 "FIPS": "1", 712 }, 713 }, 714) 715both_builders( 716 "linux_fips_clang_rel", 717 LINUX_HOST, 718 category = "linux|fips|clang", 719 short_name = "rel", 720 properties = { 721 "clang": True, 722 "cmake_args": { 723 "CMAKE_BUILD_TYPE": "Release", 724 "FIPS": "1", 725 }, 726 }, 727) 728both_builders( 729 "linux_fips_noasm_asan", 730 LINUX_HOST, 731 category = "linux|fips", 732 short_name = "asan", 733 properties = { 734 "clang": True, 735 "cmake_args": { 736 "ASAN": "1", 737 "FIPS": "1", 738 "OPENSSL_NO_ASM": "1", 739 }, 740 }, 741) 742both_builders( 743 "linux_fuzz", 744 LINUX_HOST, 745 category = "linux", 746 short_name = "fuzz", 747 properties = { 748 "clang": True, 749 "cmake_args": { 750 "FUZZ": "1", 751 "LIBFUZZER_FROM_DEPS": "1", 752 }, 753 "gclient_vars": { 754 "checkout_fuzzer": True, 755 }, 756 }, 757) 758both_builders( 759 "linux_noasm_asan", 760 LINUX_HOST, 761 category = "linux", 762 short_name = "asan", 763 properties = { 764 "clang": True, 765 "cmake_args": { 766 "ASAN": "1", 767 "OPENSSL_NO_ASM": "1", 768 }, 769 }, 770) 771 772both_builders( 773 "linux_nothreads", 774 LINUX_HOST, 775 category = "linux", 776 short_name = "not", 777 properties = { 778 "cmake_args": { 779 "CMAKE_C_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1", 780 "CMAKE_CXX_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1", 781 }, 782 }, 783) 784both_builders( 785 "linux_sde", 786 LINUX_HOST, 787 category = "linux", 788 short_name = "sde", 789 cq_enabled = False, 790 execution_timeout = SDE_TIMEOUT, 791 properties = { 792 "cmake_args": { 793 "CMAKE_BUILD_TYPE": "RelWithAsserts", 794 }, 795 "run_ssl_tests": False, 796 "sde": True, 797 }, 798) 799both_builders( 800 "linux_shared", 801 LINUX_HOST, 802 category = "linux", 803 short_name = "sh", 804 properties = { 805 "cmake_args": { 806 "BUILD_SHARED_LIBS": "1", 807 }, 808 # The default Linux build may not depend on the C++ runtime. This is 809 # easy to check when building shared libraries. 810 "check_imported_libraries": True, 811 }, 812) 813both_builders( 814 "linux_small", 815 LINUX_HOST, 816 category = "linux", 817 short_name = "sm", 818 properties = { 819 "cmake_args": { 820 "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", 821 "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", 822 }, 823 }, 824) 825both_builders( 826 "linux_nosse2_noasm", 827 LINUX_HOST, 828 category = "linux", 829 short_name = "nosse2", 830 properties = { 831 "cmake_args": { 832 "OPENSSL_NO_ASM": "1", 833 "OPENSSL_NO_SSE2_FOR_TESTING": "1", 834 }, 835 }, 836) 837both_builders( 838 "linux_bazel", 839 LINUX_HOST, 840 category = "linux", 841 short_name = "bzl", 842 recipe = "boringssl_bazel", 843) 844both_builders("mac", MAC_X86_64_HOST, category = "mac", short_name = "dbg") 845both_builders( 846 "mac_rel", 847 MAC_X86_64_HOST, 848 category = "mac", 849 short_name = "rel", 850 properties = { 851 "cmake_args": { 852 "CMAKE_BUILD_TYPE": "Release", 853 }, 854 }, 855) 856both_builders( 857 "mac_small", 858 MAC_X86_64_HOST, 859 category = "mac", 860 short_name = "sm", 861 properties = { 862 "cmake_args": { 863 "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", 864 "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", 865 }, 866 }, 867) 868both_builders("mac_arm64", MAC_ARM64_HOST, category = "mac", short_name = "arm64") 869both_builders( 870 "mac_arm64_bazel", 871 MAC_ARM64_HOST, 872 category = "mac", 873 short_name = "bzl", 874 recipe = "boringssl_bazel", 875) 876both_builders( 877 "win32", 878 WIN_HOST, 879 category = "win|x86", 880 short_name = "dbg", 881 cq_compile_only = WIN_HOST, # Reduce CQ cycle times. 882 properties = { 883 "msvc_target": "x86", 884 }, 885) 886both_builders( 887 "win32_rel", 888 WIN_HOST, 889 category = "win|x86", 890 short_name = "rel", 891 properties = { 892 "cmake_args": { 893 "CMAKE_BUILD_TYPE": "Release", 894 }, 895 "msvc_target": "x86", 896 }, 897) 898both_builders( 899 "win32_sde", 900 WIN_HOST, 901 category = "win|x86", 902 short_name = "sde", 903 cq_enabled = False, 904 execution_timeout = SDE_TIMEOUT, 905 properties = { 906 "cmake_args": { 907 "CMAKE_BUILD_TYPE": "RelWithAsserts", 908 }, 909 "msvc_target": "x86", 910 "run_ssl_tests": False, 911 "sde": True, 912 }, 913) 914both_builders( 915 "win32_small", 916 WIN_HOST, 917 category = "win|x86", 918 short_name = "sm", 919 properties = { 920 "cmake_args": { 921 "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", 922 "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", 923 }, 924 "msvc_target": "x86", 925 }, 926) 927 928both_builders( 929 "win32_clang", 930 WIN_HOST, 931 category = "win|x86", 932 short_name = "clang", 933 cq_compile_only = WIN_HOST, # Reduce CQ cycle times. 934 properties = { 935 "clang": True, 936 "msvc_target": "x86", 937 "cmake_args": { 938 # Clang doesn't pick up 32-bit x86 from msvc_target. Specify it as a 939 # cross-compile. 940 "CMAKE_SYSTEM_NAME": "Windows", 941 "CMAKE_SYSTEM_PROCESSOR": "x86", 942 "CMAKE_ASM_FLAGS": "-m32 -msse2", 943 "CMAKE_C_FLAGS": "-m32 -msse2", 944 "CMAKE_CXX_FLAGS": "-m32 -msse2", 945 }, 946 }, 947) 948 949both_builders( 950 "win64", 951 WIN_HOST, 952 category = "win|x64", 953 short_name = "dbg", 954 cq_compile_only = WIN_HOST, # Reduce CQ cycle times. 955 properties = { 956 "msvc_target": "x64", 957 }, 958) 959both_builders( 960 "win64_rel", 961 WIN_HOST, 962 category = "win|x64", 963 short_name = "rel", 964 properties = { 965 "cmake_args": { 966 "CMAKE_BUILD_TYPE": "Release", 967 }, 968 "msvc_target": "x64", 969 }, 970) 971both_builders( 972 "win64_sde", 973 WIN_HOST, 974 category = "win|x64", 975 short_name = "sde", 976 cq_enabled = False, 977 execution_timeout = SDE_TIMEOUT, 978 properties = { 979 "cmake_args": { 980 "CMAKE_BUILD_TYPE": "RelWithAsserts", 981 }, 982 "msvc_target": "x64", 983 "run_ssl_tests": False, 984 "sde": True, 985 }, 986) 987both_builders( 988 "win64_small", 989 WIN_HOST, 990 category = "win|x64", 991 short_name = "sm", 992 properties = { 993 "cmake_args": { 994 "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", 995 "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", 996 }, 997 "msvc_target": "x64", 998 }, 999) 1000 1001both_builders( 1002 "win64_clang", 1003 WIN_HOST, 1004 category = "win|x64", 1005 short_name = "clg", 1006 cq_compile_only = WIN_HOST, # Reduce CQ cycle times. 1007 properties = { 1008 "clang": True, 1009 "msvc_target": "x64", 1010 }, 1011) 1012 1013both_builders( 1014 "win_arm64_compile", 1015 WIN_HOST, 1016 category = "win|arm64", 1017 short_name = "clang", 1018 properties = { 1019 "clang": True, 1020 "cmake_args": { 1021 # Clang doesn't pick up arm64 from msvc_target. Specify it as a 1022 # cross-compile. 1023 "CMAKE_SYSTEM_NAME": "Windows", 1024 "CMAKE_SYSTEM_PROCESSOR": "arm64", 1025 "CMAKE_ASM_FLAGS": "--target=arm64-windows", 1026 "CMAKE_C_FLAGS": "--target=arm64-windows", 1027 "CMAKE_CXX_FLAGS": "--target=arm64-windows", 1028 }, 1029 "gclient_vars": { 1030 "checkout_nasm": False, 1031 }, 1032 "msvc_target": "arm64", 1033 "run_unit_tests": False, 1034 "run_ssl_tests": False, 1035 }, 1036) 1037 1038both_builders( 1039 "win_arm64_msvc_compile", 1040 WIN_HOST, 1041 category = "win|arm64", 1042 short_name = "msvc", 1043 properties = { 1044 "cmake_args": { 1045 # This is a cross-compile, so CMake needs to be told the processor. 1046 # MSVC will pick up the architecture from msvc_target. 1047 "CMAKE_SYSTEM_NAME": "Windows", 1048 "CMAKE_SYSTEM_PROCESSOR": "arm64", 1049 # We do not currently support Windows arm64 assembly with MSVC. 1050 "OPENSSL_NO_ASM": "1", 1051 }, 1052 "gclient_vars": { 1053 "checkout_nasm": False, 1054 }, 1055 "msvc_target": "arm64", 1056 "run_unit_tests": False, 1057 "run_ssl_tests": False, 1058 }, 1059) 1060