blob: 744d0fd8ba8519d8656e6bc571378ad90478cf82 [file] [log] [blame]
Louis Dionnece556052020-09-23 09:20:03 -04001#!/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
Marek Kurdej05449362021-02-04 21:13:22 +010011set -o pipefail
Arthur O'Dwyer757d5bd2021-04-30 14:43:33 -040012unset LANG
13unset LC_ALL
14unset LC_COLLATE
Louis Dionnece556052020-09-23 09:20:03 -040015
Louis Dionnebb7be752020-11-05 19:02:32 -050016PROGNAME="$(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
Louis Dionne04bf1032020-11-05 19:09:03 -050028--build-dir <DIR> The directory to use for building the library. By default,
29 this is '<llvm-root>/build/<builder>'.
30
Louis Dionnebb7be752020-11-05 19:02:32 -050031--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 ;;
Louis Dionne04bf1032020-11-05 19:09:03 -050048 --build-dir)
49 BUILD_DIR="${2}"
50 shift; shift
51 ;;
Louis Dionnebb7be752020-11-05 19:02:32 -050052 --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)"}"
Louis Dionne04bf1032020-11-05 19:09:03 -050064BUILD_DIR="${BUILD_DIR:=${MONOREPO_ROOT}/build/${BUILDER}}"
Louis Dionne485f4c02021-01-07 17:37:09 -050065INSTALL_DIR="${BUILD_DIR}/install"
Louis Dionnece556052020-09-23 09:20:03 -040066
Louis Dionne6f96e992021-05-07 13:14:57 -040067# 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
Louis Dionne7a8d5362021-03-04 16:01:36 -050073
Louis Dionnebb7be752020-11-05 19:02:32 -050074function clean() {
75 rm -rf "${BUILD_DIR}"
76}
77
Martin Storsjö47cd3462021-04-06 00:17:30 +030078function generate-cmake-base() {
Louis Dionnef9c11b02020-10-23 10:02:14 -040079 echo "--- Generating CMake"
Louis Dionne6f96e992021-05-07 13:14:57 -040080 ${CMAKE} \
Louis Dionne076fd0c2021-10-07 16:19:11 -040081 -S "${MONOREPO_ROOT}/runtimes" \
Louis Dionnef9c11b02020-10-23 10:02:14 -040082 -B "${BUILD_DIR}" \
Louis Dionne7a8d5362021-03-04 16:01:36 -050083 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Louis Dionnef9c11b02020-10-23 10:02:14 -040084 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
85 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
Louis Dionnef9c11b02020-10-23 10:02:14 -040086 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
Martin Storsjö47cd3462021-04-06 00:17:30 +030087 "${@}"
88}
89
90function generate-cmake() {
91 generate-cmake-base \
Louis Dionne076fd0c2021-10-07 16:19:11 -040092 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
Louis Dionnef9c11b02020-10-23 10:02:14 -040093 -DLIBCXX_CXX_ABI=libcxxabi \
Louis Dionne662aaa22020-11-05 10:47:06 -050094 "${@}"
95}
96
Martin Storsjö47cd3462021-04-06 00:17:30 +030097function generate-cmake-libcxx-win() {
98 # TODO: Clang-cl in MSVC configurations don't have access to compiler_rt
99 # builtins helpers for int128 division. See
100 # https://reviews.llvm.org/D91139#2429595 for a comment about longterm
101 # intent for handling the issue. In the meantime, define
102 # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and
103 # when building tests) to allow enabling filesystem for running tests,
104 # even if it uses a non-permanent ABI.
105
106 generate-cmake-base \
Louis Dionne076fd0c2021-10-07 16:19:11 -0400107 -DLLVM_ENABLE_RUNTIMES="libcxx" \
Martin Storsjö47cd3462021-04-06 00:17:30 +0300108 -DCMAKE_C_COMPILER=clang-cl \
109 -DCMAKE_CXX_COMPILER=clang-cl \
110 -DLIBCXX_ENABLE_FILESYSTEM=YES \
111 -DCMAKE_CXX_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
112 -DLIBCXX_TEST_COMPILER_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
113 "${@}"
114}
115
David Tenty823e74d2021-10-13 11:41:47 -0400116function generate-cmake-aix() {
117 generate-cmake-base \
118 -S "${MONOREPO_ROOT}/llvm" \
119 -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" \
120 "${@}"
121}
122
Louis Dionne1f544522021-09-30 15:11:48 -0400123function check-runtimes() {
124 echo "--- Installing libc++, libc++abi and libunwind to a fake location"
125 ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi install-unwind
Louis Dionneeacce542021-03-24 09:50:59 -0400126
Louis Dionnef9c11b02020-10-23 10:02:14 -0400127 echo "+++ Running the libc++ tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700128 ${NINJA} -vC "${BUILD_DIR}" check-cxx
Louis Dionnef9c11b02020-10-23 10:02:14 -0400129
130 echo "+++ Running the libc++abi tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700131 ${NINJA} -vC "${BUILD_DIR}" check-cxxabi
Louis Dionne1f544522021-09-30 15:11:48 -0400132
133 echo "+++ Running the libunwind tests"
134 ${NINJA} -vC "${BUILD_DIR}" check-unwind
Louis Dionnef9c11b02020-10-23 10:02:14 -0400135}
136
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500137# TODO: The goal is to test this against all configurations. We should also move
138# this to the Lit test suite instead of being a separate CMake target.
139function check-abi-list() {
140 echo "+++ Running the libc++ ABI list test"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700141 ${NINJA} -vC "${BUILD_DIR}" check-cxx-abilist || (
Marek Kurdej718b62c2020-12-02 08:57:02 +0100142 echo "+++ Generating the libc++ ABI list after failed check"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700143 ${NINJA} -vC "${BUILD_DIR}" generate-cxx-abilist
Marek Kurdej718b62c2020-12-02 08:57:02 +0100144 false
145 )
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500146}
147
Louis Dionnef9c11b02020-10-23 10:02:14 -0400148function check-cxx-benchmarks() {
149 echo "--- Running the benchmarks"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700150 ${NINJA} -vC "${BUILD_DIR}" check-cxx-benchmarks
Louis Dionnef9c11b02020-10-23 10:02:14 -0400151}
Louis Dionnece556052020-09-23 09:20:03 -0400152
Louis Dionne6bd3e652021-04-01 13:40:04 -0400153# Print the version of a few tools to aid diagnostics in some cases
Louis Dionne6f96e992021-05-07 13:14:57 -0400154${CMAKE} --version
Louis Dionne6bd3e652021-04-01 13:40:04 -0400155${NINJA} --version
156
Louis Dionnece556052020-09-23 09:20:03 -0400157case "${BUILDER}" in
Marek Kurdej05449362021-02-04 21:13:22 +0100158check-format)
159 clean
160 echo "+++ Checking formatting"
161 # We need to set --extensions so that clang-format checks extensionless files.
162 mkdir -p ${BUILD_DIR}
163 git-clang-format \
164 --binary /usr/bin/clang-format --diff \
165 --extensions ',h,hh,hpp,hxx,c,cc,cxx,cpp' HEAD~1 \
166 -- \
167 libcxx/{benchmarks,include,src,test} \
168 libcxxabi/{fuzz,include,src,test} \
169 | tee ${BUILD_DIR}/clang-format.patch
170 # Check if the diff is empty, fail otherwise.
171 ! grep -q '^--- a' ${BUILD_DIR}/clang-format.patch
172;;
Mark de Wever53efa102021-04-04 20:11:48 +0200173check-generated-output)
Mark de Weverb10c97d2021-04-28 19:13:52 +0200174 # `! foo` doesn't work properly with `set -e`, use `! foo || false` instead.
175 # https://stackoverflow.com/questions/57681955/set-e-does-not-respect-logical-not
Mark de Wever53efa102021-04-04 20:11:48 +0200176 clean
Louis Dionne8096e242021-07-15 10:19:39 -0400177 generate-cmake
178
179 # Reject patches that forgot to re-run the generator scripts.
180 echo "+++ Making sure the generator scripts were run"
181 ${NINJA} -vC "${BUILD_DIR}" libcxx-generate-files
Mark de Wever53efa102021-04-04 20:11:48 +0200182 git diff | tee ${BUILD_DIR}/generated_output.patch
Mark de Weverdfd86e32021-07-22 11:17:53 +0200183 git ls-files -o --exclude-standard | tee ${BUILD_DIR}/generated_output.status
Mark de Weverb10c97d2021-04-28 19:13:52 +0200184 ! grep -q '^--- a' ${BUILD_DIR}/generated_output.patch || false
Mark de Weverdfd86e32021-07-22 11:17:53 +0200185 if [ -s ${BUILD_DIR}/generated_output.status ]; then
186 echo "It looks like not all the generator scripts were run,"
187 echo "did you forget to build the libcxx-generate-files target?"
188 echo "Did you add all new files it generated?"
189 false
190 fi
Louis Dionne8096e242021-07-15 10:19:39 -0400191
Mark de Weverb10c97d2021-04-28 19:13:52 +0200192 # Reject patches that introduce non-ASCII characters or hard tabs.
Arthur O'Dwyer757d5bd2021-04-30 14:43:33 -0400193 # Depends on LC_COLLATE set at the top of this script.
Mark de Weverb10c97d2021-04-28 19:13:52 +0200194 ! grep -rn '[^ -~]' libcxx/include/ || false
Louis Dionne8096e242021-07-15 10:19:39 -0400195
196 # Reject patches that introduce dependency cycles in the headers.
Arthur O'Dwyerbba78c32021-04-17 09:56:34 -0400197 python3 libcxx/utils/graph_header_deps.py >/dev/null
Mark de Wever53efa102021-04-04 20:11:48 +0200198;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400199generic-cxx03)
Louis Dionnebb7be752020-11-05 19:02:32 -0500200 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500201 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400202 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
203 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400204 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500205 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400206;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400207generic-cxx11)
Louis Dionnebb7be752020-11-05 19:02:32 -0500208 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500209 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400210 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
211 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400212 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500213 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400214;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400215generic-cxx14)
Louis Dionnebb7be752020-11-05 19:02:32 -0500216 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500217 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400218 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
219 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400220 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500221 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400222;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400223generic-cxx17)
Louis Dionnebb7be752020-11-05 19:02:32 -0500224 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500225 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400226 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
227 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400228 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500229 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400230;;
Marek Kurdej24b4c512021-01-07 12:29:04 +0100231generic-cxx20)
Louis Dionnebb7be752020-11-05 19:02:32 -0500232 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500233 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx20.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400234 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
235 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400236 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500237 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400238;;
Marek Kurdej758067c2021-01-08 18:40:42 +0100239generic-cxx2b)
Marek Kurdej758067c2021-01-08 18:40:42 +0100240 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500241 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2b.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400242 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
243 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400244 check-runtimes
Marek Kurdej758067c2021-01-08 18:40:42 +0100245 check-abi-list
246;;
Louis Dionne732192e2021-06-09 09:41:27 -0400247generic-assertions)
Louis Dionne732192e2021-06-09 09:41:27 -0400248 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400249 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-assertions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400250 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
251 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400252 check-runtimes
Louis Dionne732192e2021-06-09 09:41:27 -0400253 check-abi-list
254;;
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400255generic-debug-iterators)
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400256 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400257 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-debug-iterators.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400258 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
259 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400260 check-runtimes
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400261 check-abi-list
262;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400263generic-noexceptions)
Louis Dionnebb7be752020-11-05 19:02:32 -0500264 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400265 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400266 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
267 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400268 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400269;;
Louis Dionne00005a92021-06-02 17:07:57 -0400270generic-modules)
Louis Dionne00005a92021-06-02 17:07:57 -0400271 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400272 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400273 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
274 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400275 check-runtimes
Louis Dionne00005a92021-06-02 17:07:57 -0400276;;
Louis Dionneeacce542021-03-24 09:50:59 -0400277generic-static)
Louis Dionneeacce542021-03-24 09:50:59 -0400278 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500279 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-static.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400280 -DLIBCXX_TEST_CONFIG="llvm-libc++-static.cfg.in" \
281 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-static.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400282 check-runtimes
Louis Dionneeacce542021-03-24 09:50:59 -0400283;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400284generic-32bit)
Louis Dionnebb7be752020-11-05 19:02:32 -0500285 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400286 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400287 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
288 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400289 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400290;;
Mark de Weverd5352992021-10-23 13:08:01 +0200291generic-clang-12)
292 export CC=clang-12
293 export CXX=clang++-12
Louis Dionne6f4796b2021-07-08 12:26:33 -0400294 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400295 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
296 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400297 check-runtimes
Louis Dionne6f4796b2021-07-08 12:26:33 -0400298;;
Mark de Weverd5352992021-10-23 13:08:01 +0200299generic-clang-13)
300 export CC=clang-13
301 export CXX=clang++-13
Louis Dionne6f4796b2021-07-08 12:26:33 -0400302 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400303 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
304 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400305 check-runtimes
Louis Dionne6f4796b2021-07-08 12:26:33 -0400306;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400307generic-gcc)
Louis Dionne566a51d2021-06-15 15:07:03 -0400308 export CC=gcc-11
309 export CXX=g++-11
Louis Dionnebb7be752020-11-05 19:02:32 -0500310 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400311 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared-gcc.cfg.in" \
312 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400313 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400314;;
Louis Dionne657b4792021-07-15 09:46:36 -0400315generic-gcc-cxx11)
316 export CC=gcc-11
317 export CXX=g++-11
318 clean
Louis Dionne1cb657a2021-10-07 14:54:14 -0400319 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400320 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared-gcc.cfg.in" \
321 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400322 check-runtimes
Louis Dionne657b4792021-07-15 09:46:36 -0400323;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400324generic-asan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500325 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400326 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400327 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
328 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400329 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400330;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400331generic-msan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500332 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400333 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400334 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
335 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400336 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400337;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400338generic-tsan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500339 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400340 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400341 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
342 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400343 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400344;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400345generic-ubsan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500346 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400347 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400348 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
349 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400350 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400351;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400352generic-with_llvm_unwinder)
Louis Dionnebb7be752020-11-05 19:02:32 -0500353 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400354 generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
Louis Dionne16b20d02021-10-12 12:46:21 -0400355 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
356 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400357 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400358;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400359generic-singlethreaded)
Louis Dionnebb7be752020-11-05 19:02:32 -0500360 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400361 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400362 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
363 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400364 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400365;;
Louis Dionneabcfdbc2021-03-23 14:09:52 -0400366generic-no-debug)
Louis Dionnebb7be752020-11-05 19:02:32 -0500367 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400368 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-debug.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400369 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
370 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400371 check-runtimes
Louis Dionne4396f9b2020-10-06 16:46:58 -0400372;;
Louis Dionnedb84e122021-01-18 12:18:18 -0500373generic-no-filesystem)
Louis Dionnedb84e122021-01-18 12:18:18 -0500374 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400375 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-filesystem.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400376 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
377 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400378 check-runtimes
Louis Dionnedb84e122021-01-18 12:18:18 -0500379;;
Louis Dionne3777e682020-10-15 10:32:09 -0400380generic-no-random_device)
Louis Dionnebb7be752020-11-05 19:02:32 -0500381 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400382 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400383 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
384 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400385 check-runtimes
Louis Dionne3777e682020-10-15 10:32:09 -0400386;;
Louis Dionne8d053eb2020-10-09 15:31:05 -0400387generic-no-localization)
Louis Dionnebb7be752020-11-05 19:02:32 -0500388 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400389 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400390 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
391 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400392 check-runtimes
Louis Dionne8d053eb2020-10-09 15:31:05 -0400393;;
Mark de Weverebbd3b62021-05-25 20:11:08 +0200394generic-no-unicode)
Mark de Weverebbd3b62021-05-25 20:11:08 +0200395 clean
Louis Dionne24a32ac2021-10-05 13:37:43 -0400396 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-unicode.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400397 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
398 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400399 check-runtimes
Mark de Weverebbd3b62021-05-25 20:11:08 +0200400;;
Louis Dionne89258142021-08-23 15:32:36 -0400401generic-no-wide-characters)
402 clean
403 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-wide-characters.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400404 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
405 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne89258142021-08-23 15:32:36 -0400406 check-runtimes
407;;
Louis Dionnea93dd782021-10-15 00:21:26 -0400408apple-system)
Louis Dionnebb7be752020-11-05 19:02:32 -0500409 clean
Louis Dionnea93dd782021-10-15 00:21:26 -0400410
411 sdk_root="$(xcrun --sdk macosx --show-sdk-path)"
412 arch="$(uname -m)"
413
414 ${MONOREPO_ROOT}/libcxx/utils/ci/apple-install-libcxx.sh \
415 --llvm-root ${MONOREPO_ROOT} \
416 --build-dir ${BUILD_DIR} \
417 --install-dir ${INSTALL_DIR} \
418 --symbols-dir "${BUILD_DIR}/symbols" \
419 --sdk "macosx" \
420 --architectures "${arch}" \
421 --version "999.99"
422
423 # TODO: It would be better to run the tests against the fake-installed version of libc++ instead
424 xcrun --sdk macosx ninja -vC "${BUILD_DIR}/${arch}" check-cxx check-cxxabi
Louis Dionne89d0eb22020-10-01 08:55:40 -0400425;;
Louis Dionnea93dd782021-10-15 00:21:26 -0400426apple-system-backdeployment-*)
Louis Dionnebb7be752020-11-05 19:02:32 -0500427 clean
Louis Dionne662aaa22020-11-05 10:47:06 -0500428
Louis Dionnebb7be752020-11-05 19:02:32 -0500429 if [[ "${OSX_ROOTS}" == "" ]]; then
430 echo "--- Downloading previous macOS dylibs"
Louis Dionnec7675352021-03-25 14:14:20 -0400431 PREVIOUS_DYLIBS_URL="https://dl.dropboxusercontent.com/s/liu4fmc53qzlfly/libcxx-roots.tar.gz"
Louis Dionnebb7be752020-11-05 19:02:32 -0500432 OSX_ROOTS="${BUILD_DIR}/macos-roots"
433 mkdir -p "${OSX_ROOTS}"
434 curl "${PREVIOUS_DYLIBS_URL}" | tar -xz --strip-components=1 -C "${OSX_ROOTS}"
435 fi
Louis Dionne662aaa22020-11-05 10:47:06 -0500436
Louis Dionnea93dd782021-10-15 00:21:26 -0400437 DEPLOYMENT_TARGET="${BUILDER#apple-system-backdeployment-}"
Louis Dionne84ad13b2020-07-08 16:38:54 -0400438
439 # TODO: On Apple platforms, we never produce libc++abi.1.dylib, always libc++abi.dylib.
440 # Fix that in the build so that the tests stop searching for @rpath/libc++abi.1.dylib.
441 cp "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.dylib" \
442 "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.1.dylib"
443
Louis Dionnea93dd782021-10-15 00:21:26 -0400444 arch="$(uname -m)"
445 PARAMS="target_triple=${arch}-apple-macosx${DEPLOYMENT_TARGET}"
Louis Dionnebb7be752020-11-05 19:02:32 -0500446 PARAMS+=";cxx_runtime_root=${OSX_ROOTS}/macOS/libc++/${DEPLOYMENT_TARGET}"
Louis Dionne84ad13b2020-07-08 16:38:54 -0400447 PARAMS+=";abi_runtime_root=${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}"
Louis Dionnebb7be752020-11-05 19:02:32 -0500448 PARAMS+=";use_system_cxx_lib=True"
Louis Dionnebb7be752020-11-05 19:02:32 -0500449
Louis Dionnebb7be752020-11-05 19:02:32 -0500450 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \
451 -DLIBCXX_TEST_PARAMS="${PARAMS}" \
452 -DLIBCXXABI_TEST_PARAMS="${PARAMS}"
453
Louis Dionne1f544522021-09-30 15:11:48 -0400454 check-runtimes
Louis Dionne662aaa22020-11-05 10:47:06 -0500455;;
Louis Dionnef9c11b02020-10-23 10:02:14 -0400456benchmarks)
Louis Dionnebb7be752020-11-05 19:02:32 -0500457 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400458 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
459 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionnef9c11b02020-10-23 10:02:14 -0400460 check-cxx-benchmarks
Louis Dionne89d0eb22020-10-01 08:55:40 -0400461;;
Louis Dionneaa4e44f2020-11-05 14:34:29 -0500462documentation)
Louis Dionnebb7be752020-11-05 19:02:32 -0500463 clean
464 generate-cmake -DLLVM_ENABLE_SPHINX=ON
465
466 echo "+++ Generating documentation"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700467 ${NINJA} -vC "${BUILD_DIR}" docs-libcxx-html
Louis Dionneaa4e44f2020-11-05 14:34:29 -0500468;;
Louis Dionne64a3f222021-10-20 17:43:55 -0400469bootstrapping-build)
Louis Dionne61b63fd2021-03-16 11:57:42 -0700470 clean
471
472 echo "--- Generating CMake"
Louis Dionne64a3f222021-10-20 17:43:55 -0400473 # TODO: We currently enable modules and assertions in the bootstrapping build
Louis Dionne65faaa72021-06-14 14:36:13 -0400474 # because that provides coverage for some specific Clang failures
475 # we've been seeing recently, however it would be better to instead
476 # run all CI configurations against a Clang that has assertions enabled.
Louis Dionne6f96e992021-05-07 13:14:57 -0400477 ${CMAKE} \
478 -S "${MONOREPO_ROOT}/llvm" \
Louis Dionne61b63fd2021-03-16 11:57:42 -0700479 -B "${BUILD_DIR}" \
Louis Dionne6f96e992021-05-07 13:14:57 -0400480 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Louis Dionne61b63fd2021-03-16 11:57:42 -0700481 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
482 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
483 -DLLVM_ENABLE_PROJECTS="clang" \
484 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
Christopher Di Bellaa49edef2021-06-08 00:09:36 +0000485 -DLLVM_RUNTIME_TARGETS="x86_64-unknown-linux-gnu" \
Louis Dionne65faaa72021-06-14 14:36:13 -0400486 -DLLVM_ENABLE_ASSERTIONS=ON \
Louis Dionne81b7dc22021-05-31 12:44:48 -0400487 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400488 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
489 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne61b63fd2021-03-16 11:57:42 -0700490
491 echo "+++ Running the libc++ and libc++abi tests"
492 ${NINJA} -C "${BUILD_DIR}" check-runtimes
493
494 echo "--- Installing libc++ and libc++abi to a fake location"
Louis Dionne4b1b70d2021-07-06 10:39:01 -0400495 ${NINJA} -C "${BUILD_DIR}" install-runtimes
Louis Dionne61b63fd2021-03-16 11:57:42 -0700496;;
Louis Dionne77fc7de2021-02-26 13:18:21 -0500497legacy-test-config)
Louis Dionne77fc7de2021-02-26 13:18:21 -0500498 clean
Louis Dionne6be44052021-09-29 15:26:05 -0400499 generate-cmake -DLIBCXX_TEST_CONFIG="legacy.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400500 check-runtimes
Louis Dionne77fc7de2021-02-26 13:18:21 -0500501;;
Louis Dionne076fd0c2021-10-07 16:19:11 -0400502legacy-project-build)
503 clean
504
505 echo "--- Generating CMake"
506 ${CMAKE} \
507 -S "${MONOREPO_ROOT}/llvm" \
508 -B "${BUILD_DIR}" \
509 -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \
510 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
511 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
512 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
513 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
514 -DLIBCXX_CXX_ABI=libcxxabi
515 check-runtimes
516;;
Louis Dionne435c36b2020-10-23 16:27:41 -0400517legacy-standalone)
Louis Dionnebb7be752020-11-05 19:02:32 -0500518 clean
519
Louis Dionne435c36b2020-10-23 16:27:41 -0400520 echo "--- Generating CMake"
Louis Dionne6f96e992021-05-07 13:14:57 -0400521 ${CMAKE} \
522 -S "${MONOREPO_ROOT}/libcxx" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400523 -B "${BUILD_DIR}/libcxx" \
Louis Dionne7a8d5362021-03-04 16:01:36 -0500524 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400525 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
526 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
527 -DLLVM_PATH="${MONOREPO_ROOT}/llvm" \
528 -DLIBCXX_CXX_ABI=libcxxabi \
529 -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${MONOREPO_ROOT}/libcxxabi/include" \
530 -DLIBCXX_CXX_ABI_LIBRARY_PATH="${BUILD_DIR}/libcxxabi/lib"
531
Louis Dionne6f96e992021-05-07 13:14:57 -0400532 ${CMAKE} \
533 -S "${MONOREPO_ROOT}/libcxxabi" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400534 -B "${BUILD_DIR}/libcxxabi" \
Louis Dionne7a8d5362021-03-04 16:01:36 -0500535 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400536 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
537 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
538 -DLLVM_PATH="${MONOREPO_ROOT}/llvm" \
539 -DLIBCXXABI_LIBCXX_PATH="${MONOREPO_ROOT}/libcxx" \
Louis Dionne94870d82020-06-26 12:08:59 -0400540 -DLIBCXXABI_LIBCXX_INCLUDES="${BUILD_DIR}/libcxx/include/c++/v1" \
Louis Dionne5be8b092020-10-26 14:25:49 -0400541 -DLIBCXXABI_LIBCXX_LIBRARY_PATH="${BUILD_DIR}/libcxx/lib"
Louis Dionne435c36b2020-10-23 16:27:41 -0400542
Louis Dionne94870d82020-06-26 12:08:59 -0400543 echo "+++ Generating libc++ headers"
544 ${NINJA} -vC "${BUILD_DIR}/libcxx" generate-cxx-headers
545
Louis Dionne435c36b2020-10-23 16:27:41 -0400546 echo "+++ Building libc++abi"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700547 ${NINJA} -vC "${BUILD_DIR}/libcxxabi" cxxabi
Louis Dionne435c36b2020-10-23 16:27:41 -0400548
549 echo "+++ Building libc++"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700550 ${NINJA} -vC "${BUILD_DIR}/libcxx" cxx
Louis Dionne435c36b2020-10-23 16:27:41 -0400551
552 echo "+++ Running the libc++ tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700553 ${NINJA} -vC "${BUILD_DIR}/libcxx" check-cxx
Louis Dionne435c36b2020-10-23 16:27:41 -0400554
555 echo "+++ Running the libc++abi tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700556 ${NINJA} -vC "${BUILD_DIR}/libcxxabi" check-cxxabi
Louis Dionne435c36b2020-10-23 16:27:41 -0400557;;
David Spickett77471a12021-02-08 10:43:21 +0000558aarch64)
559 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400560 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400561 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
562 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400563 check-runtimes
David Spickett77471a12021-02-08 10:43:21 +0000564;;
565aarch64-noexceptions)
566 clean
567 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \
Louis Dionne4b85fc32021-07-15 13:29:47 -0400568 -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
Louis Dionne81b7dc22021-05-31 12:44:48 -0400569 -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
Louis Dionne16b20d02021-10-12 12:46:21 -0400570 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
571 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400572 check-runtimes
David Spickett77471a12021-02-08 10:43:21 +0000573;;
David Spicketta16b8862021-03-02 15:07:19 +0000574# Aka Armv8 32 bit
575armv8)
576 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400577 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Arm.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400578 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
579 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400580 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000581;;
582armv8-noexceptions)
583 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400584 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Thumb-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400585 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
586 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400587 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000588;;
589# Armv7 32 bit. One building Arm only one Thumb only code.
590armv7)
591 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400592 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Arm.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400593 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
594 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400595 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000596;;
597armv7-noexceptions)
598 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400599 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Thumb-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400600 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
601 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400602 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000603;;
Martin Storsjö47cd3462021-04-06 00:17:30 +0300604windows-dll)
Martin Storsjö2ffae012021-03-17 12:10:42 +0200605 clean
Martin Storsjö2ffae012021-03-17 12:10:42 +0200606 # TODO: Currently, building with the experimental library breaks running
607 # tests (the test linking look for the c++experimental library with the
608 # wrong name, and the statically linked c++experimental can't be linked
609 # correctly when libc++ visibility attributes indicate dllimport linkage
610 # anyway), thus just disable the experimental library. Remove this
611 # setting when cmake and the test driver does the right thing automatically.
Martin Storsjö47cd3462021-04-06 00:17:30 +0300612 generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
613 echo "+++ Running the libc++ tests"
614 ${NINJA} -vC "${BUILD_DIR}" check-cxx
615;;
616windows-static)
617 clean
618 generate-cmake-libcxx-win -DLIBCXX_ENABLE_SHARED=OFF
Martin Storsjö2ffae012021-03-17 12:10:42 +0200619 echo "+++ Running the libc++ tests"
620 ${NINJA} -vC "${BUILD_DIR}" check-cxx
621;;
David Tenty823e74d2021-10-13 11:41:47 -0400622aix)
623 export CC=ibm-clang
624 export CXX=ibm-clang++_r
625 clean
626 generate-cmake-aix -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AIX.cmake" \
627 -DLIBCXX_TEST_CONFIG="ibm-libc++-shared.cfg.in" \
628 -DLIBCXXABI_TEST_CONFIG="ibm-libc++abi-shared.cfg.in"
629 # TODO: use check-runtimes once libunwind builds cleanly on AIX.
630 ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi
631 ${NINJA} -vC "${BUILD_DIR}" check-cxx check-cxxabi
632;;
Louis Dionne04915f92021-05-27 16:51:38 -0400633#################################################################
634# Insert vendor-specific internal configurations below.
635#
636# This allows vendors to extend this file with their own internal
637# configurations without running into merge conflicts with upstream.
638#################################################################
639
640#################################################################
Louis Dionnece556052020-09-23 09:20:03 -0400641*)
642 echo "${BUILDER} is not a known configuration"
643 exit 1
644;;
645esac