blob: 5c5b1f96485989a1bf86b35c5470081b285df1e1 [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
Louis Dionne1f544522021-09-30 15:11:48 -0400116function check-runtimes() {
117 echo "--- Installing libc++, libc++abi and libunwind to a fake location"
118 ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi install-unwind
Louis Dionneeacce542021-03-24 09:50:59 -0400119
Louis Dionnef9c11b02020-10-23 10:02:14 -0400120 echo "+++ Running the libc++ tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700121 ${NINJA} -vC "${BUILD_DIR}" check-cxx
Louis Dionnef9c11b02020-10-23 10:02:14 -0400122
123 echo "+++ Running the libc++abi tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700124 ${NINJA} -vC "${BUILD_DIR}" check-cxxabi
Louis Dionne1f544522021-09-30 15:11:48 -0400125
126 echo "+++ Running the libunwind tests"
127 ${NINJA} -vC "${BUILD_DIR}" check-unwind
Louis Dionnef9c11b02020-10-23 10:02:14 -0400128}
129
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500130# TODO: The goal is to test this against all configurations. We should also move
131# this to the Lit test suite instead of being a separate CMake target.
132function check-abi-list() {
133 echo "+++ Running the libc++ ABI list test"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700134 ${NINJA} -vC "${BUILD_DIR}" check-cxx-abilist || (
Marek Kurdej718b62c2020-12-02 08:57:02 +0100135 echo "+++ Generating the libc++ ABI list after failed check"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700136 ${NINJA} -vC "${BUILD_DIR}" generate-cxx-abilist
Marek Kurdej718b62c2020-12-02 08:57:02 +0100137 false
138 )
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500139}
140
Louis Dionnef9c11b02020-10-23 10:02:14 -0400141function check-cxx-benchmarks() {
142 echo "--- Running the benchmarks"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700143 ${NINJA} -vC "${BUILD_DIR}" check-cxx-benchmarks
Louis Dionnef9c11b02020-10-23 10:02:14 -0400144}
Louis Dionnece556052020-09-23 09:20:03 -0400145
Louis Dionne6bd3e652021-04-01 13:40:04 -0400146# Print the version of a few tools to aid diagnostics in some cases
Louis Dionne6f96e992021-05-07 13:14:57 -0400147${CMAKE} --version
Louis Dionne6bd3e652021-04-01 13:40:04 -0400148${NINJA} --version
149
Louis Dionnece556052020-09-23 09:20:03 -0400150case "${BUILDER}" in
Marek Kurdej05449362021-02-04 21:13:22 +0100151check-format)
152 clean
153 echo "+++ Checking formatting"
154 # We need to set --extensions so that clang-format checks extensionless files.
155 mkdir -p ${BUILD_DIR}
156 git-clang-format \
157 --binary /usr/bin/clang-format --diff \
158 --extensions ',h,hh,hpp,hxx,c,cc,cxx,cpp' HEAD~1 \
159 -- \
160 libcxx/{benchmarks,include,src,test} \
161 libcxxabi/{fuzz,include,src,test} \
162 | tee ${BUILD_DIR}/clang-format.patch
163 # Check if the diff is empty, fail otherwise.
164 ! grep -q '^--- a' ${BUILD_DIR}/clang-format.patch
165;;
Mark de Wever53efa102021-04-04 20:11:48 +0200166check-generated-output)
Mark de Weverb10c97d2021-04-28 19:13:52 +0200167 # `! foo` doesn't work properly with `set -e`, use `! foo || false` instead.
168 # https://stackoverflow.com/questions/57681955/set-e-does-not-respect-logical-not
Mark de Wever53efa102021-04-04 20:11:48 +0200169 clean
Louis Dionne8096e242021-07-15 10:19:39 -0400170 generate-cmake
171
172 # Reject patches that forgot to re-run the generator scripts.
173 echo "+++ Making sure the generator scripts were run"
174 ${NINJA} -vC "${BUILD_DIR}" libcxx-generate-files
Mark de Wever53efa102021-04-04 20:11:48 +0200175 git diff | tee ${BUILD_DIR}/generated_output.patch
Mark de Weverdfd86e32021-07-22 11:17:53 +0200176 git ls-files -o --exclude-standard | tee ${BUILD_DIR}/generated_output.status
Mark de Weverb10c97d2021-04-28 19:13:52 +0200177 ! grep -q '^--- a' ${BUILD_DIR}/generated_output.patch || false
Mark de Weverdfd86e32021-07-22 11:17:53 +0200178 if [ -s ${BUILD_DIR}/generated_output.status ]; then
179 echo "It looks like not all the generator scripts were run,"
180 echo "did you forget to build the libcxx-generate-files target?"
181 echo "Did you add all new files it generated?"
182 false
183 fi
Louis Dionne8096e242021-07-15 10:19:39 -0400184
Mark de Weverb10c97d2021-04-28 19:13:52 +0200185 # Reject patches that introduce non-ASCII characters or hard tabs.
Arthur O'Dwyer757d5bd2021-04-30 14:43:33 -0400186 # Depends on LC_COLLATE set at the top of this script.
Mark de Weverb10c97d2021-04-28 19:13:52 +0200187 ! grep -rn '[^ -~]' libcxx/include/ || false
Louis Dionne8096e242021-07-15 10:19:39 -0400188
189 # Reject patches that introduce dependency cycles in the headers.
Arthur O'Dwyerbba78c32021-04-17 09:56:34 -0400190 python3 libcxx/utils/graph_header_deps.py >/dev/null
Mark de Wever53efa102021-04-04 20:11:48 +0200191;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400192generic-cxx03)
Louis Dionnebb7be752020-11-05 19:02:32 -0500193 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500194 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400195 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
196 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400197 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500198 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400199;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400200generic-cxx11)
Louis Dionnebb7be752020-11-05 19:02:32 -0500201 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500202 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400203 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
204 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400205 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500206 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400207;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400208generic-cxx14)
Louis Dionnebb7be752020-11-05 19:02:32 -0500209 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500210 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400211 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
212 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400213 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500214 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400215;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400216generic-cxx17)
Louis Dionnebb7be752020-11-05 19:02:32 -0500217 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500218 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400219 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
220 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400221 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500222 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400223;;
Marek Kurdej24b4c512021-01-07 12:29:04 +0100224generic-cxx20)
Louis Dionnebb7be752020-11-05 19:02:32 -0500225 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500226 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx20.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400227 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
228 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400229 check-runtimes
Louis Dionnedfbd00e2020-11-26 15:00:42 -0500230 check-abi-list
Louis Dionnece556052020-09-23 09:20:03 -0400231;;
Marek Kurdej758067c2021-01-08 18:40:42 +0100232generic-cxx2b)
Marek Kurdej758067c2021-01-08 18:40:42 +0100233 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500234 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2b.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400235 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
236 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400237 check-runtimes
Marek Kurdej758067c2021-01-08 18:40:42 +0100238 check-abi-list
239;;
Louis Dionne732192e2021-06-09 09:41:27 -0400240generic-assertions)
Louis Dionne732192e2021-06-09 09:41:27 -0400241 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400242 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-assertions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400243 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
244 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400245 check-runtimes
Louis Dionne732192e2021-06-09 09:41:27 -0400246 check-abi-list
247;;
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400248generic-debug-iterators)
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400249 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400250 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-debug-iterators.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400251 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
252 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400253 check-runtimes
Arthur O'Dwyer64e02472021-04-20 11:27:03 -0400254 check-abi-list
255;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400256generic-noexceptions)
Louis Dionnebb7be752020-11-05 19:02:32 -0500257 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400258 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400259 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
260 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400261 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400262;;
Louis Dionne00005a92021-06-02 17:07:57 -0400263generic-modules)
Louis Dionne00005a92021-06-02 17:07:57 -0400264 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400265 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.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 Dionne00005a92021-06-02 17:07:57 -0400269;;
Louis Dionneeacce542021-03-24 09:50:59 -0400270generic-static)
Louis Dionneeacce542021-03-24 09:50:59 -0400271 clean
Louis Dionne77fc7de2021-02-26 13:18:21 -0500272 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-static.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400273 -DLIBCXX_TEST_CONFIG="llvm-libc++-static.cfg.in" \
274 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-static.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400275 check-runtimes
Louis Dionneeacce542021-03-24 09:50:59 -0400276;;
Mark de Weverd5352992021-10-23 13:08:01 +0200277generic-clang-12)
278 export CC=clang-12
279 export CXX=clang++-12
Louis Dionne6f4796b2021-07-08 12:26:33 -0400280 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400281 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
282 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400283 check-runtimes
Louis Dionne6f4796b2021-07-08 12:26:33 -0400284;;
Mark de Weverd5352992021-10-23 13:08:01 +0200285generic-clang-13)
286 export CC=clang-13
287 export CXX=clang++-13
Louis Dionne6f4796b2021-07-08 12:26:33 -0400288 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400289 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
290 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400291 check-runtimes
Louis Dionne6f4796b2021-07-08 12:26:33 -0400292;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400293generic-gcc)
Louis Dionne566a51d2021-06-15 15:07:03 -0400294 export CC=gcc-11
295 export CXX=g++-11
Louis Dionnebb7be752020-11-05 19:02:32 -0500296 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400297 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared-gcc.cfg.in" \
298 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400299 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400300;;
Louis Dionne657b4792021-07-15 09:46:36 -0400301generic-gcc-cxx11)
302 export CC=gcc-11
303 export CXX=g++-11
304 clean
Louis Dionne1cb657a2021-10-07 14:54:14 -0400305 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400306 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared-gcc.cfg.in" \
307 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400308 check-runtimes
Louis Dionne657b4792021-07-15 09:46:36 -0400309;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400310generic-asan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500311 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400312 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400313 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
314 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400315 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400316;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400317generic-msan)
Louis Dionnebb7be752020-11-05 19:02:32 -0500318 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400319 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400320 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
321 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400322 check-runtimes
Louis Dionnece556052020-09-23 09:20:03 -0400323;;
Louis Dionne6f8038c2020-10-01 13:55:39 -0400324generic-tsan)
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-tsan.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-ubsan)
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-ubsan.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-with_llvm_unwinder)
Louis Dionnebb7be752020-11-05 19:02:32 -0500339 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400340 generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
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-singlethreaded)
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-singlethreaded.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 Dionneabcfdbc2021-03-23 14:09:52 -0400352generic-no-debug)
Louis Dionnebb7be752020-11-05 19:02:32 -0500353 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400354 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-debug.cmake" \
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 Dionne4396f9b2020-10-06 16:46:58 -0400358;;
Louis Dionnedb84e122021-01-18 12:18:18 -0500359generic-no-filesystem)
Louis Dionnedb84e122021-01-18 12:18:18 -0500360 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400361 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-filesystem.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 Dionnedb84e122021-01-18 12:18:18 -0500365;;
Louis Dionne3777e682020-10-15 10:32:09 -0400366generic-no-random_device)
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-random_device.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 Dionne3777e682020-10-15 10:32:09 -0400372;;
Louis Dionne8d053eb2020-10-09 15:31:05 -0400373generic-no-localization)
Louis Dionnebb7be752020-11-05 19:02:32 -0500374 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400375 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-localization.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 Dionne8d053eb2020-10-09 15:31:05 -0400379;;
Mark de Weverebbd3b62021-05-25 20:11:08 +0200380generic-no-unicode)
Mark de Weverebbd3b62021-05-25 20:11:08 +0200381 clean
Louis Dionne24a32ac2021-10-05 13:37:43 -0400382 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-unicode.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
Mark de Weverebbd3b62021-05-25 20:11:08 +0200386;;
Louis Dionne89258142021-08-23 15:32:36 -0400387generic-no-wide-characters)
388 clean
389 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-wide-characters.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 Dionne89258142021-08-23 15:32:36 -0400392 check-runtimes
393;;
Louis Dionnea93dd782021-10-15 00:21:26 -0400394apple-system)
Louis Dionnebb7be752020-11-05 19:02:32 -0500395 clean
Louis Dionnea93dd782021-10-15 00:21:26 -0400396
397 sdk_root="$(xcrun --sdk macosx --show-sdk-path)"
398 arch="$(uname -m)"
399
400 ${MONOREPO_ROOT}/libcxx/utils/ci/apple-install-libcxx.sh \
401 --llvm-root ${MONOREPO_ROOT} \
402 --build-dir ${BUILD_DIR} \
403 --install-dir ${INSTALL_DIR} \
404 --symbols-dir "${BUILD_DIR}/symbols" \
405 --sdk "macosx" \
406 --architectures "${arch}" \
407 --version "999.99"
408
409 # TODO: It would be better to run the tests against the fake-installed version of libc++ instead
410 xcrun --sdk macosx ninja -vC "${BUILD_DIR}/${arch}" check-cxx check-cxxabi
Louis Dionne89d0eb22020-10-01 08:55:40 -0400411;;
Louis Dionnea93dd782021-10-15 00:21:26 -0400412apple-system-backdeployment-*)
Louis Dionnebb7be752020-11-05 19:02:32 -0500413 clean
Louis Dionne662aaa22020-11-05 10:47:06 -0500414
Louis Dionnebb7be752020-11-05 19:02:32 -0500415 if [[ "${OSX_ROOTS}" == "" ]]; then
416 echo "--- Downloading previous macOS dylibs"
Louis Dionnec7675352021-03-25 14:14:20 -0400417 PREVIOUS_DYLIBS_URL="https://dl.dropboxusercontent.com/s/liu4fmc53qzlfly/libcxx-roots.tar.gz"
Louis Dionnebb7be752020-11-05 19:02:32 -0500418 OSX_ROOTS="${BUILD_DIR}/macos-roots"
419 mkdir -p "${OSX_ROOTS}"
420 curl "${PREVIOUS_DYLIBS_URL}" | tar -xz --strip-components=1 -C "${OSX_ROOTS}"
421 fi
Louis Dionne662aaa22020-11-05 10:47:06 -0500422
Louis Dionnea93dd782021-10-15 00:21:26 -0400423 DEPLOYMENT_TARGET="${BUILDER#apple-system-backdeployment-}"
Louis Dionne84ad13b2020-07-08 16:38:54 -0400424
425 # TODO: On Apple platforms, we never produce libc++abi.1.dylib, always libc++abi.dylib.
426 # Fix that in the build so that the tests stop searching for @rpath/libc++abi.1.dylib.
427 cp "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.dylib" \
428 "${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}/libc++abi.1.dylib"
429
Louis Dionnea93dd782021-10-15 00:21:26 -0400430 arch="$(uname -m)"
431 PARAMS="target_triple=${arch}-apple-macosx${DEPLOYMENT_TARGET}"
Louis Dionnebb7be752020-11-05 19:02:32 -0500432 PARAMS+=";cxx_runtime_root=${OSX_ROOTS}/macOS/libc++/${DEPLOYMENT_TARGET}"
Louis Dionne84ad13b2020-07-08 16:38:54 -0400433 PARAMS+=";abi_runtime_root=${OSX_ROOTS}/macOS/libc++abi/${DEPLOYMENT_TARGET}"
Louis Dionnebb7be752020-11-05 19:02:32 -0500434 PARAMS+=";use_system_cxx_lib=True"
Louis Dionnebb7be752020-11-05 19:02:32 -0500435
Louis Dionnebb7be752020-11-05 19:02:32 -0500436 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \
437 -DLIBCXX_TEST_PARAMS="${PARAMS}" \
438 -DLIBCXXABI_TEST_PARAMS="${PARAMS}"
439
Louis Dionne1f544522021-09-30 15:11:48 -0400440 check-runtimes
Louis Dionne662aaa22020-11-05 10:47:06 -0500441;;
Louis Dionnef9c11b02020-10-23 10:02:14 -0400442benchmarks)
Louis Dionnebb7be752020-11-05 19:02:32 -0500443 clean
Louis Dionne16b20d02021-10-12 12:46:21 -0400444 generate-cmake -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
445 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionnef9c11b02020-10-23 10:02:14 -0400446 check-cxx-benchmarks
Louis Dionne89d0eb22020-10-01 08:55:40 -0400447;;
Louis Dionneaa4e44f2020-11-05 14:34:29 -0500448documentation)
Louis Dionnebb7be752020-11-05 19:02:32 -0500449 clean
450 generate-cmake -DLLVM_ENABLE_SPHINX=ON
451
452 echo "+++ Generating documentation"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700453 ${NINJA} -vC "${BUILD_DIR}" docs-libcxx-html
Louis Dionneaa4e44f2020-11-05 14:34:29 -0500454;;
Louis Dionne64a3f222021-10-20 17:43:55 -0400455bootstrapping-build)
Louis Dionne61b63fd2021-03-16 11:57:42 -0700456 clean
457
458 echo "--- Generating CMake"
Louis Dionne64a3f222021-10-20 17:43:55 -0400459 # TODO: We currently enable modules and assertions in the bootstrapping build
Louis Dionne65faaa72021-06-14 14:36:13 -0400460 # because that provides coverage for some specific Clang failures
461 # we've been seeing recently, however it would be better to instead
462 # run all CI configurations against a Clang that has assertions enabled.
Louis Dionne6f96e992021-05-07 13:14:57 -0400463 ${CMAKE} \
464 -S "${MONOREPO_ROOT}/llvm" \
Louis Dionne61b63fd2021-03-16 11:57:42 -0700465 -B "${BUILD_DIR}" \
Louis Dionne6f96e992021-05-07 13:14:57 -0400466 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Mark de Wever6ede28e2021-12-08 17:58:51 +0100467 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
Louis Dionne61b63fd2021-03-16 11:57:42 -0700468 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
469 -DLLVM_ENABLE_PROJECTS="clang" \
470 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
Louis Dionne0b523d12021-11-11 11:55:20 -0500471 -DLLVM_RUNTIME_TARGETS="$(c++ --print-target-triple)" \
Matheus Izvekov3f0e0e12021-11-16 00:32:48 +0100472 -DLLVM_TARGETS_TO_BUILD="host" \
Louis Dionne0b523d12021-11-11 11:55:20 -0500473 -DRUNTIMES_BUILD_ALLOW_DARWIN=ON \
Louis Dionne65faaa72021-06-14 14:36:13 -0400474 -DLLVM_ENABLE_ASSERTIONS=ON \
Louis Dionne81b7dc22021-05-31 12:44:48 -0400475 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-modules.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400476 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
477 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne61b63fd2021-03-16 11:57:42 -0700478
479 echo "+++ Running the libc++ and libc++abi tests"
480 ${NINJA} -C "${BUILD_DIR}" check-runtimes
481
482 echo "--- Installing libc++ and libc++abi to a fake location"
Louis Dionne4b1b70d2021-07-06 10:39:01 -0400483 ${NINJA} -C "${BUILD_DIR}" install-runtimes
Louis Dionne61b63fd2021-03-16 11:57:42 -0700484;;
Louis Dionne77fc7de2021-02-26 13:18:21 -0500485legacy-test-config)
Louis Dionne77fc7de2021-02-26 13:18:21 -0500486 clean
Louis Dionne6be44052021-09-29 15:26:05 -0400487 generate-cmake -DLIBCXX_TEST_CONFIG="legacy.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400488 check-runtimes
Louis Dionne77fc7de2021-02-26 13:18:21 -0500489;;
Louis Dionne076fd0c2021-10-07 16:19:11 -0400490legacy-project-build)
491 clean
492
493 echo "--- Generating CMake"
494 ${CMAKE} \
495 -S "${MONOREPO_ROOT}/llvm" \
496 -B "${BUILD_DIR}" \
497 -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \
498 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
499 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
500 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
501 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
502 -DLIBCXX_CXX_ABI=libcxxabi
503 check-runtimes
504;;
Louis Dionne435c36b2020-10-23 16:27:41 -0400505legacy-standalone)
Louis Dionnebb7be752020-11-05 19:02:32 -0500506 clean
507
Louis Dionne435c36b2020-10-23 16:27:41 -0400508 echo "--- Generating CMake"
Louis Dionne6f96e992021-05-07 13:14:57 -0400509 ${CMAKE} \
510 -S "${MONOREPO_ROOT}/libcxx" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400511 -B "${BUILD_DIR}/libcxx" \
Louis Dionne7a8d5362021-03-04 16:01:36 -0500512 -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400513 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
514 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
515 -DLLVM_PATH="${MONOREPO_ROOT}/llvm" \
516 -DLIBCXX_CXX_ABI=libcxxabi \
Louis Dionne65175252021-11-09 14:44:19 -0500517 -DLIBCXX_INCLUDE_BENCHMARKS=OFF \
Louis Dionne435c36b2020-10-23 16:27:41 -0400518 -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${MONOREPO_ROOT}/libcxxabi/include" \
519 -DLIBCXX_CXX_ABI_LIBRARY_PATH="${BUILD_DIR}/libcxxabi/lib"
520
Louis Dionne6f96e992021-05-07 13:14:57 -0400521 ${CMAKE} \
522 -S "${MONOREPO_ROOT}/libcxxabi" \
Louis Dionne435c36b2020-10-23 16:27:41 -0400523 -B "${BUILD_DIR}/libcxxabi" \
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 -DLIBCXXABI_LIBCXX_PATH="${MONOREPO_ROOT}/libcxx" \
Louis Dionne94870d82020-06-26 12:08:59 -0400529 -DLIBCXXABI_LIBCXX_INCLUDES="${BUILD_DIR}/libcxx/include/c++/v1" \
Louis Dionne5be8b092020-10-26 14:25:49 -0400530 -DLIBCXXABI_LIBCXX_LIBRARY_PATH="${BUILD_DIR}/libcxx/lib"
Louis Dionne435c36b2020-10-23 16:27:41 -0400531
Louis Dionne94870d82020-06-26 12:08:59 -0400532 echo "+++ Generating libc++ headers"
533 ${NINJA} -vC "${BUILD_DIR}/libcxx" generate-cxx-headers
534
Louis Dionne435c36b2020-10-23 16:27:41 -0400535 echo "+++ Building libc++abi"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700536 ${NINJA} -vC "${BUILD_DIR}/libcxxabi" cxxabi
Louis Dionne435c36b2020-10-23 16:27:41 -0400537
538 echo "+++ Building libc++"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700539 ${NINJA} -vC "${BUILD_DIR}/libcxx" cxx
Louis Dionne435c36b2020-10-23 16:27:41 -0400540
541 echo "+++ Running the libc++ tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700542 ${NINJA} -vC "${BUILD_DIR}/libcxx" check-cxx
Louis Dionne435c36b2020-10-23 16:27:41 -0400543
544 echo "+++ Running the libc++abi tests"
Louis Dionne1fcb0412021-03-19 16:26:15 -0700545 ${NINJA} -vC "${BUILD_DIR}/libcxxabi" check-cxxabi
Louis Dionne435c36b2020-10-23 16:27:41 -0400546;;
David Spickett77471a12021-02-08 10:43:21 +0000547aarch64)
548 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400549 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400550 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
551 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400552 check-runtimes
David Spickett77471a12021-02-08 10:43:21 +0000553;;
554aarch64-noexceptions)
555 clean
556 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AArch64.cmake" \
Louis Dionne4b85fc32021-07-15 13:29:47 -0400557 -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
Louis Dionne81b7dc22021-05-31 12:44:48 -0400558 -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
Louis Dionne16b20d02021-10-12 12:46:21 -0400559 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
560 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400561 check-runtimes
David Spickett77471a12021-02-08 10:43:21 +0000562;;
David Spicketta16b8862021-03-02 15:07:19 +0000563# Aka Armv8 32 bit
564armv8)
565 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400566 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Arm.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400567 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
568 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400569 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000570;;
571armv8-noexceptions)
572 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400573 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv8Thumb-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400574 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
575 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400576 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000577;;
578# Armv7 32 bit. One building Arm only one Thumb only code.
579armv7)
580 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400581 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Arm.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400582 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
583 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400584 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000585;;
586armv7-noexceptions)
587 clean
Louis Dionne81b7dc22021-05-31 12:44:48 -0400588 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Thumb-noexceptions.cmake" \
Louis Dionne16b20d02021-10-12 12:46:21 -0400589 -DLIBCXX_TEST_CONFIG="llvm-libc++-shared.cfg.in" \
590 -DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
Louis Dionne1f544522021-09-30 15:11:48 -0400591 check-runtimes
David Spicketta16b8862021-03-02 15:07:19 +0000592;;
Martin Storsjöe2081542021-10-01 23:08:57 +0300593clang-cl-dll)
Martin Storsjö2ffae012021-03-17 12:10:42 +0200594 clean
Martin Storsjö2ffae012021-03-17 12:10:42 +0200595 # TODO: Currently, building with the experimental library breaks running
596 # tests (the test linking look for the c++experimental library with the
597 # wrong name, and the statically linked c++experimental can't be linked
598 # correctly when libc++ visibility attributes indicate dllimport linkage
599 # anyway), thus just disable the experimental library. Remove this
600 # setting when cmake and the test driver does the right thing automatically.
Martin Storsjö47cd3462021-04-06 00:17:30 +0300601 generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
602 echo "+++ Running the libc++ tests"
603 ${NINJA} -vC "${BUILD_DIR}" check-cxx
604;;
Martin Storsjöe2081542021-10-01 23:08:57 +0300605clang-cl-static)
Martin Storsjö47cd3462021-04-06 00:17:30 +0300606 clean
607 generate-cmake-libcxx-win -DLIBCXX_ENABLE_SHARED=OFF
Martin Storsjö2ffae012021-03-17 12:10:42 +0200608 echo "+++ Running the libc++ tests"
609 ${NINJA} -vC "${BUILD_DIR}" check-cxx
610;;
Martin Storsjöe2081542021-10-01 23:08:57 +0300611mingw-dll)
612 clean
613 # Explicitly specify the compiler with a triple prefix. The CI
614 # environment has got two installations of Clang; the default one
615 # defaults to MSVC mode, while there's an installation of llvm-mingw
616 # further back in PATH. By calling the compiler with an explicit
617 # triple prefix, we use the one that is bundled with a mingw sysroot.
618 generate-cmake \
619 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang \
620 -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++ \
621 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake"
622 echo "+++ Running the libc++ tests"
623 ${NINJA} -vC "${BUILD_DIR}" check-cxx
624;;
625mingw-static)
626 clean
627 generate-cmake \
628 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang \
629 -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++ \
630 -C "${MONOREPO_ROOT}/libcxx/cmake/caches/MinGW.cmake" \
631 -DLIBCXX_ENABLE_SHARED=OFF \
632 -DLIBUNWIND_ENABLE_SHARED=OFF
633 echo "+++ Running the libc++ tests"
634 ${NINJA} -vC "${BUILD_DIR}" check-cxx
635;;
David Tenty823e74d2021-10-13 11:41:47 -0400636aix)
637 export CC=ibm-clang
638 export CXX=ibm-clang++_r
639 clean
David Tenty51f4f2e2021-11-09 12:44:44 -0500640 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/AIX.cmake" \
David Tenty823e74d2021-10-13 11:41:47 -0400641 -DLIBCXX_TEST_CONFIG="ibm-libc++-shared.cfg.in" \
David Tenty51f4f2e2021-11-09 12:44:44 -0500642 -DLIBCXXABI_TEST_CONFIG="ibm-libc++abi-shared.cfg.in" \
643 -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"
David Tenty823e74d2021-10-13 11:41:47 -0400644 # TODO: use check-runtimes once libunwind builds cleanly on AIX.
645 ${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi
646 ${NINJA} -vC "${BUILD_DIR}" check-cxx check-cxxabi
647;;
Louis Dionne04915f92021-05-27 16:51:38 -0400648#################################################################
649# Insert vendor-specific internal configurations below.
650#
651# This allows vendors to extend this file with their own internal
652# configurations without running into merge conflicts with upstream.
653#################################################################
654
655#################################################################
Louis Dionnece556052020-09-23 09:20:03 -0400656*)
657 echo "${BUILDER} is not a known configuration"
658 exit 1
659;;
660esac