1#!/usr/bin/env bash 2#===----------------------------------------------------------------------===## 3# 4# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5# See https://llvm.org/LICENSE.txt for license information. 6# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7# 8#===----------------------------------------------------------------------===## 9 10set -ex 11set -o pipefail 12unset LANG 13unset LC_ALL 14unset LC_COLLATE 15 16PROGNAME="$(basename "${0}")" 17 18function usage() { 19cat <<EOF 20Usage: 21${PROGNAME} [options] <BUILDER> 22 23[-h|--help] Display this help and exit. 24 25--llvm-root <DIR> Path to the root of the LLVM monorepo. By default, we try 26 to figure it out based on the current working directory. 27 28--build-dir <DIR> The directory to use for building the library. By default, 29 this is '<llvm-root>/build/<builder>'. 30 31--osx-roots <DIR> Path to pre-downloaded macOS dylibs. By default, we download 32 them from Green Dragon. This is only relevant at all when 33 running back-deployment testing if one wants to override 34 the old dylibs we use to run the tests with different ones. 35EOF 36} 37 38while [[ $# -gt 0 ]]; do 39 case ${1} in 40 -h|--help) 41 usage 42 exit 0 43 ;; 44 --llvm-root) 45 MONOREPO_ROOT="${2}" 46 shift; shift 47 ;; 48 --build-dir) 49 BUILD_DIR="${2}" 50 shift; shift 51 ;; 52 --osx-roots) 53 OSX_ROOTS="${2}" 54 shift; shift 55 ;; 56 *) 57 BUILDER="${1}" 58 shift 59 ;; 60 esac 61done 62 63MONOREPO_ROOT="${MONOREPO_ROOT:="$(git rev-parse --show-toplevel)"}" 64BUILD_DIR="${BUILD_DIR:=${MONOREPO_ROOT}/build/${BUILDER}}" 65INSTALL_DIR="${BUILD_DIR}/install" 66 67# If we can find Ninja/CMake provided by Xcode, use those since we know their 68# version will generally work with the Clang shipped in Xcode (e.g. if Clang 69# knows about -std=c++20, the CMake bundled in Xcode will probably know about 70# that flag too). 71if xcrun --find ninja &>/dev/null; then NINJA="$(xcrun --find ninja)"; else NINJA="ninja"; fi 72if xcrun --find cmake &>/dev/null; then CMAKE="$(xcrun --find cmake)"; else CMAKE="cmake"; fi 73 74function clean() { 75 rm -rf "${BUILD_DIR}" 76} 77 78function generate-cmake-base() { 79 echo "--- Generating CMake" 80 ${CMAKE} \ 81 -S "${MONOREPO_ROOT}/runtimes" \ 82 -B "${BUILD_DIR}" \ 83 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \ 84 -DCMAKE_BUILD_TYPE=RelWithDebInfo \ 85 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \ 86 -DLIBCXX_ENABLE_WERROR=YES \ 87 -DLIBCXXABI_ENABLE_WERROR=YES \ 88 -DLIBUNWIND_ENABLE_WERROR=YES \ 89 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml --timeout=1500 --time-tests" \ 90 "${@}" 91} 92 93function generate-cmake() { 94 generate-cmake-base \ 95 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ 96 -DLIBCXX_CXX_ABI=libcxxabi \ 97 "${@}" 98} 99 100function generate-cmake-libcxx-win() { 101 # TODO: Clang-cl in MSVC configurations don't have access to compiler_rt 102 # builtins helpers for int128 division. See 103 # https://reviews.llvm.org/D91139#2429595 for a comment about longterm 104 # intent for handling the issue. In the meantime, define 105 # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and 106 # when building tests) to allow enabling filesystem for running tests, 107 # even if it uses a non-permanent ABI. 108 109 generate-cmake-base \ 110 -DLLVM_ENABLE_RUNTIMES="libcxx" \ 111 -DCMAKE_C_COMPILER=clang-cl \ 112 -DCMAKE_CXX_COMPILER=clang-cl \ 113 -DLIBCXX_ENABLE_FILESYSTEM=YES \ 114 -DLIBCXX_EXTRA_SITE_DEFINES="_LIBCPP_HAS_NO_INT128" \ 115 "${@}" 116} 117 118function check-runtimes() { 119 echo "--- Installing libc++, libc++abi and libunwind to a fake location" 120 ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi install-unwind 121 122 echo "+++ Running the libc++ tests" 123 ${NINJA} -vC "${BUILD_DIR}" check-cxx 124 125 echo "+++ Running the libc++abi tests" 126 ${NINJA} -vC "${BUILD_DIR}" check-cxxabi 127 128 echo "+++ Running the libunwind tests" 129 ${NINJA} -vC "${BUILD_DIR}" check-unwind 130} 131 132# TODO: The goal is to test this against all configurations. We should also move 133# this to the Lit test suite instead of being a separate CMake target. 134function check-abi-list() { 135 echo "+++ Running the libc++ ABI list test" 136 ${NINJA} -vC "${BUILD_DIR}" check-cxx-abilist || ( 137 echo "+++ Generating the libc++ ABI list after failed check" 138 ${NINJA} -vC "${BUILD_DIR}" generate-cxx-abilist 139 false 140 ) 141} 142 143function check-cxx-benchmarks() { 144 echo "--- Running the benchmarks" 145 ${NINJA} -vC "${BUILD_DIR}" check-cxx-benchmarks 146} 147 148# Print the version of a few tools to aid diagnostics in some cases 149${CMAKE} --version 150${NINJA} --version 151 152case "${BUILDER}" in 153check-format) 154 clean 155 echo "+++ Checking formatting" 156 # We need to set --extensions so that clang-format checks extensionless files. 157 mkdir -p ${BUILD_DIR} 158 git-clang-format \ 159 --binary /usr/bin/clang-format --diff \ 160 --extensions ',h,hh,hpp,hxx,c,cc,cxx,cpp' HEAD~1 \ 161 -- \ 162 libcxx/{benchmarks,include,src,test} \ 163 libcxxabi/{fuzz,include,src,test} \ 164 | tee ${BUILD_DIR}/clang-format.patch 165 # Check if the diff is empty, fail otherwise. 166 ! grep -q '^--- a' ${BUILD_DIR}/clang-format.patch 167;; 168check-generated-output) 169 # `! foo` doesn't work properly with `set -e`, use `! foo || false` instead. 170 # https://stackoverflow.com/questions/57681955/set-e-does-not-respect-logical-not 171 clean 172 generate-cmake 173 174 # Reject patches that forgot to re-run the generator scripts. 175 echo "+++ Making sure the generator scripts were run" 176 ${NINJA} -vC "${BUILD_DIR}" libcxx-generate-files 177 git diff | tee ${BUILD_DIR}/generated_output.patch 178 git ls-files -o --exclude-standard | tee ${BUILD_DIR}/generated_output.status 179 ! grep -q '^--- a' ${BUILD_DIR}/generated_output.patch || false 180 if [ -s ${BUILD_DIR}/generated_output.status ]; then 181 echo "It looks like not all the generator scripts were run," 182 echo "did you forget to build the libcxx-generate-files target?" 183 echo "Did you add all new files it generated?" 184 false 185 fi 186 187 # Reject patches that introduce non-ASCII characters or hard tabs. 188 # Depends on LC_COLLATE set at the top of this script. 189 ! grep -rn '[^ -~]' libcxx/include/ || false 190 191 # Reject patches that introduce dependency cycles in the headers. 192 python3 libcxx/utils/graph_header_deps.py >/dev/null 193;; 194generic-cxx03) 195 clean 196 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake" 197 check-runtimes 198 check-abi-list 199;; 200generic-cxx11) 201 clean 202 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" 203 check-runtimes 204 check-abi-list 205;; 206generic-cxx14) 207 clean 208 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake" 209 check-runtimes 210 check-abi-list 211;; 212generic-cxx17) 213 clean 214 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake" 215 check-runtimes 216 check-abi-list 217;; 218generic-cxx20) 219 clean 220 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx20.cmake" 221 check-runtimes 222 check-abi-list 223;; 224generic-cxx2b) 225 clean 226 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2b.cmake" 227 check-runtimes 228 check-abi-list 229;; 230generic-assertions) 231 clean 232 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-assertions.cmake" 233 check-runtimes 234 check-abi-list 235;; 236generic-debug-mode) 237 clean 238 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-debug-mode.cmake" 239 check-runtimes 240 check-abi-list 241;; 242generic-noexceptions) 243 clean 244 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake" 245 check-runtimes 246 check-abi-list 247;; 248generic-modules) 249 clean 250 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.cmake" 251 check-runtimes 252 check-abi-list 253;; 254generic-static) 255 clean 256 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-static.cmake" 257 check-runtimes 258;; 259generic-merged) 260 clean 261 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-merged.cmake" \ 262 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \ 263 -DLIBCXXABI_TEST_CONFIG="llvm-libc++abi-merged.cfg.in" \ 264 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-merged.cfg.in" 265 check-runtimes 266;; 267generic-clang-13) 268 export CC=clang-13 269 export CXX=clang++-13 270 clean 271 generate-cmake 272 check-runtimes 273 check-abi-list 274;; 275generic-clang-14) 276 export CC=clang-14 277 export CXX=clang++-14 278 clean 279 generate-cmake 280 check-runtimes 281 check-abi-list 282;; 283generic-gcc) 284 export CC=gcc-12 285 export CXX=g++-12 286 clean 287 generate-cmake -DLIBCXX_ENABLE_WERROR=NO \ 288 -DLIBCXXABI_ENABLE_WERROR=NO \ 289 -DLIBUNWIND_ENABLE_WERROR=NO 290 check-runtimes 291;; 292generic-gcc-cxx11) 293 export CC=gcc-12 294 export CXX=g++-12 295 clean 296 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \ 297 -DLIBCXX_ENABLE_WERROR=NO \ 298 -DLIBCXXABI_ENABLE_WERROR=NO \ 299 -DLIBUNWIND_ENABLE_WERROR=NO 300 check-runtimes 301;; 302generic-asan) 303 clean 304 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake" 305 check-runtimes 306;; 307generic-msan) 308 clean 309 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake" 310 check-runtimes 311;; 312generic-tsan) 313 clean 314 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake" 315 check-runtimes 316;; 317generic-ubsan) 318 clean 319 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake" 320 check-runtimes 321;; 322generic-with_llvm_unwinder) 323 clean 324 generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON 325 check-runtimes 326;; 327generic-no-threads) 328 clean 329 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-threads.cmake" 330 check-runtimes 331;; 332generic-no-filesystem) 333 clean 334 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-filesystem.cmake" 335 check-runtimes 336;; 337generic-no-random_device) 338 clean 339 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake" 340 check-runtimes 341;; 342generic-no-localization) 343 clean 344 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.cmake" 345 check-runtimes 346;; 347generic-no-unicode) 348 clean 349 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-unicode.cmake" 350 check-runtimes 351;; 352generic-no-wide-characters) 353 clean 354 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-wide-characters.cmake" 355 check-runtimes 356;; 357generic-no-experimental) 358 clean 359 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-experimental.cmake" 360 check-runtimes 361 check-abi-list 362;; 363generic-abi-unstable) 364 clean 365 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-abi-unstable.cmake" 366 check-runtimes 367;; 368apple-system) 369 clean 370 371 arch="$(uname -m)" 372 xcrun --sdk macosx \ 373 ${MONOREPO_ROOT}/libcxx/utils/ci/apple-install-libcxx.sh \ 374 --llvm-root ${MONOREPO_ROOT} \ 375 --build-dir ${BUILD_DIR} \ 376 --install-dir ${INSTALL_DIR} \ 377 --symbols-dir "${BUILD_DIR}/symbols" \ 378 --architectures "${arch}" \ 379 --version "999.99" 380 381 # TODO: It would be better to run the tests against the fake-installed version of libc++ instead 382 xcrun --sdk macosx ninja -vC "${BUILD_DIR}/${arch}" check-cxx check-cxxabi check-cxx-abilist 383;; 384apple-system-backdeployment-*) 385 clean 386 387 if [[ "${OSX_ROOTS}" == "" ]]; then 388 echo "--- Downloading previous macOS dylibs" 389 PREVIOUS_DYLIBS_URL="https://dl.dropboxusercontent.com/s/gmcfxwgl9f9n6pu/libcxx-roots.tar.gz" 390 OSX_ROOTS="${BUILD_DIR}/macos-roots" 391 mkdir -p "${OSX_ROOTS}" 392 curl "${PREVIOUS_DYLIBS_URL}" | tar -xz --strip-components=1 -C "${OSX_ROOTS}" 393 fi 394 395 DEPLOYMENT_TARGET="${BUILDER#apple-system-backdeployment-}" 396 397 # TODO: On Apple platforms, we never produce libc++abi.1.dylib or libunwind.1.dylib, 398 # only libc++abi.dylib and libunwind.dylib. Fix that in the build so that the 399 # tests stop searching for @rpath/libc++abi.1.dylib and @rpath/libunwind.1.dylib. 400 cp "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.dylib" \ 401 "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.1.dylib" 402 cp "${OSX_ROOTS}/macOS/libunwind/${DEPLOYMENT_TARGET}/libunwind.dylib" \ 403 "${OSX_ROOTS}/macOS/libunwind/${DEPLOYMENT_TARGET}/libunwind.1.dylib" 404 405 arch="$(uname -m)" 406 PARAMS="target_triple=${arch}-apple-macosx${DEPLOYMENT_TARGET}" 407 PARAMS+=";cxx_runtime_root=${OSX_ROOTS}/macOS/libc++/${DEPLOYMENT_TARGET}" 408 PARAMS+=";abi_runtime_root=${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}" 409 PARAMS+=";unwind_runtime_root=${OSX_ROOTS}/macOS/libunwind/${DEPLOYMENT_TARGET}" 410 PARAMS+=";use_system_cxx_lib=True" 411 412 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \ 413 -DLIBCXX_TEST_CONFIG="apple-libc++-backdeployment.cfg.in" \ 414 -DLIBCXXABI_TEST_CONFIG="apple-libc++abi-backdeployment.cfg.in" \ 415 -DLIBUNWIND_TEST_CONFIG="apple-libunwind-backdeployment.cfg.in" \ 416 -DLIBCXX_TEST_PARAMS="${PARAMS}" \ 417 -DLIBCXXABI_TEST_PARAMS="${PARAMS}" \ 418 -DLIBUNWIND_TEST_PARAMS="${PARAMS}" 419 420 check-runtimes 421;; 422benchmarks) 423 clean 424 generate-cmake 425 check-cxx-benchmarks 426;; 427documentation) 428 clean 429 generate-cmake -DLLVM_ENABLE_SPHINX=ON 430 431 echo "+++ Generating documentation" 432 ${NINJA} -vC "${BUILD_DIR}" docs-libcxx-html 433;; 434bootstrapping-build) 435 clean 436 437 echo "--- Generating CMake" 438 ${CMAKE} \ 439 -S "${MONOREPO_ROOT}/llvm" \ 440 -B "${BUILD_DIR}" \ 441 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \ 442 -DCMAKE_BUILD_TYPE=RelWithDebInfo \ 443 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \ 444 -DLLVM_ENABLE_PROJECTS="clang" \ 445 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ 446 -DLLVM_RUNTIME_TARGETS="$(c++ --print-target-triple)" \ 447 -DLLVM_TARGETS_TO_BUILD="host" \ 448 -DRUNTIMES_BUILD_ALLOW_DARWIN=ON \ 449 -DLLVM_ENABLE_ASSERTIONS=ON 450 451 echo "+++ Running the libc++ and libc++abi tests" 452 ${NINJA} -C "${BUILD_DIR}" check-runtimes 453 454 echo "--- Installing libc++ and libc++abi to a fake location" 455 ${NINJA} -C "${BUILD_DIR}" install-runtimes 456;; 457legacy-test-config) 458 clean 459 generate-cmake -DLIBCXX_TEST_CONFIG="legacy.cfg.in" \ 460 -DLIBCXXABI_TEST_CONFIG="${MONOREPO_ROOT}/libcxxabi/test/lit.site.cfg.in" \ 461 -DLIBUNWIND_TEST_CONFIG="${MONOREPO_ROOT}/libunwind/test/lit.site.cfg.in" 462 check-runtimes 463;; 464legacy-project-build) 465 clean 466 467 echo "--- Generating CMake" 468 ${CMAKE} \ 469 -S "${MONOREPO_ROOT}/llvm" \ 470 -B "${BUILD_DIR}" \ 471 -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \ 472 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \ 473 -DCMAKE_BUILD_TYPE=RelWithDebInfo \ 474 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \ 475 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml --timeout=1500" \ 476 -DLIBCXX_CXX_ABI=libcxxabi 477 check-runtimes 478;; 479aarch64) 480 clean 481 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" 482 check-runtimes 483;; 484aarch64-noexceptions) 485 clean 486 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \ 487 -DLIBCXX_ENABLE_EXCEPTIONS=OFF \ 488 -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF 489 check-runtimes 490;; 491# Aka Armv8 32 bit 492armv8) 493 clean 494 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Arm.cmake" 495 check-runtimes 496;; 497armv8-noexceptions) 498 clean 499 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Thumb-noexceptions.cmake" 500 check-runtimes 501;; 502# Armv7 32 bit. One building Arm only one Thumb only code. 503armv7) 504 clean 505 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Arm.cmake" 506 check-runtimes 507;; 508armv7-noexceptions) 509 clean 510 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Thumb-noexceptions.cmake" 511 check-runtimes 512;; 513clang-cl-dll) 514 clean 515 # TODO: Currently, building with the experimental library breaks running 516 # tests (the test linking look for the c++experimental library with the 517 # wrong name, and the statically linked c++experimental can't be linked 518 # correctly when libc++ visibility attributes indicate dllimport linkage 519 # anyway), thus just disable the experimental library. Remove this 520 # setting when cmake and the test driver does the right thing automatically. 521 generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF 522 echo "+++ Running the libc++ tests" 523 ${NINJA} -vC "${BUILD_DIR}" check-cxx 524;; 525clang-cl-static) 526 clean 527 generate-cmake-libcxx-win -DLIBCXX_ENABLE_SHARED=OFF 528 echo "+++ Running the libc++ tests" 529 ${NINJA} -vC "${BUILD_DIR}" check-cxx 530;; 531mingw-dll) 532 clean 533 # Explicitly specify the compiler with a triple prefix. The CI 534 # environment has got two installations of Clang; the default one 535 # defaults to MSVC mode, while there's an installation of llvm-mingw 536 # further back in PATH. By calling the compiler with an explicit 537 # triple prefix, we use the one that is bundled with a mingw sysroot. 538 generate-cmake \ 539 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang \ 540 -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++ \ 541 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" 542 echo "+++ Running the libc++ tests" 543 ${NINJA} -vC "${BUILD_DIR}" check-cxx 544;; 545mingw-static) 546 clean 547 generate-cmake \ 548 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang \ 549 -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++ \ 550 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" \ 551 -DLIBCXX_ENABLE_SHARED=OFF \ 552 -DLIBUNWIND_ENABLE_SHARED=OFF 553 echo "+++ Running the libc++ tests" 554 ${NINJA} -vC "${BUILD_DIR}" check-cxx 555;; 556mingw-dll-i686) 557 clean 558 generate-cmake \ 559 -DCMAKE_C_COMPILER=i686-w64-mingw32-clang \ 560 -DCMAKE_CXX_COMPILER=i686-w64-mingw32-clang++ \ 561 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" 562 echo "+++ Running the libc++ tests" 563 ${NINJA} -vC "${BUILD_DIR}" check-cxx 564;; 565aix) 566 export CC=clang 567 export CXX=clang++ 568 clean 569 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AIX.cmake" \ 570 -DLIBCXX_TEST_CONFIG="ibm-libc++-shared.cfg.in" \ 571 -DLIBCXXABI_TEST_CONFIG="ibm-libc++abi-shared.cfg.in" \ 572 -DLIBUNWIND_TEST_CONFIG="ibm-libunwind-shared.cfg.in" 573 check-abi-list 574 check-runtimes 575;; 576################################################################# 577# Insert vendor-specific internal configurations below. 578# 579# This allows vendors to extend this file with their own internal 580# configurations without running into merge conflicts with upstream. 581################################################################# 582 583################################################################# 584*) 585 echo "${BUILDER} is not a known configuration" 586 exit 1 587;; 588esac 589