blob: 31035a4dd4fae722f47b2036164e26d749b76094 [file] [log] [blame]
Louis Dionne9f21d342020-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
11
12BUILDER="${1}"
Louis Dionne79410dd2020-10-01 08:55:40 -040013MONOREPO_ROOT="$(git rev-parse --show-toplevel)"
14BUILD_DIR="${MONOREPO_ROOT}/build/${BUILDER}"
Louis Dionne1913bb62020-10-21 13:57:05 -040015INSTALL_DIR="${MONOREPO_ROOT}/build/${BUILDER}/install"
Louis Dionne9f21d342020-09-23 09:20:03 -040016
Louis Dionne2f8dd262020-10-23 10:02:14 -040017function generate-cmake() {
18 echo "--- Generating CMake"
19 rm -rf "${BUILD_DIR}"
20 cmake -S "${MONOREPO_ROOT}/llvm" \
21 -B "${BUILD_DIR}" \
22 -GNinja \
23 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
24 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
25 -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \
26 -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
27 -DLIBCXX_CXX_ABI=libcxxabi \
28 ${@}
29}
30
31function check-cxx-cxxabi() {
32 echo "+++ Running the libc++ tests"
33 ninja -C "${BUILD_DIR}" check-cxx
34
35 echo "+++ Running the libc++abi tests"
36 ninja -C "${BUILD_DIR}" check-cxxabi
37
38 echo "--- Installing libc++ and libc++abi to a fake location"
39 ninja -C "${BUILD_DIR}" install-cxx install-cxxabi
40}
41
42function check-cxx-benchmarks() {
43 echo "--- Running the benchmarks"
44 ninja -C "${BUILD_DIR}" check-cxx-benchmarks
45}
Louis Dionne9f21d342020-09-23 09:20:03 -040046
47case "${BUILDER}" in
Louis Dionneba9b1502020-10-01 13:55:39 -040048generic-cxx03)
Louis Dionne9f21d342020-09-23 09:20:03 -040049 export CC=clang
50 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040051 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake"
52 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040053;;
Louis Dionneba9b1502020-10-01 13:55:39 -040054generic-cxx11)
Louis Dionne9f21d342020-09-23 09:20:03 -040055 export CC=clang
56 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040057 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake"
58 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040059;;
Louis Dionneba9b1502020-10-01 13:55:39 -040060generic-cxx14)
Louis Dionne9f21d342020-09-23 09:20:03 -040061 export CC=clang
62 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040063 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake"
64 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040065;;
Louis Dionneba9b1502020-10-01 13:55:39 -040066generic-cxx17)
Louis Dionne9f21d342020-09-23 09:20:03 -040067 export CC=clang
68 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040069 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake"
70 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040071;;
Louis Dionneba9b1502020-10-01 13:55:39 -040072generic-cxx2a)
Louis Dionne9f21d342020-09-23 09:20:03 -040073 export CC=clang
74 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040075 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2a.cmake"
76 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040077;;
Louis Dionneba9b1502020-10-01 13:55:39 -040078generic-noexceptions)
Louis Dionne9f21d342020-09-23 09:20:03 -040079 export CC=clang
80 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040081 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake"
82 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040083;;
Louis Dionneba9b1502020-10-01 13:55:39 -040084generic-32bit)
Louis Dionne9f21d342020-09-23 09:20:03 -040085 export CC=clang
86 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -040087 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake"
88 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040089;;
Louis Dionneba9b1502020-10-01 13:55:39 -040090generic-gcc)
Louis Dionne9f21d342020-09-23 09:20:03 -040091 export CC=gcc
92 export CXX=g++
Louis Dionne3e5f9da2020-09-29 10:49:52 -040093 # FIXME: Re-enable experimental testing on GCC. GCC cares about the order
94 # in which we link -lc++experimental, which causes issues.
Louis Dionne2f8dd262020-10-23 10:02:14 -040095 generate-cmake -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
96 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -040097;;
Louis Dionneba9b1502020-10-01 13:55:39 -040098generic-asan)
Louis Dionne9f21d342020-09-23 09:20:03 -040099 export CC=clang
100 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400101 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake"
102 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400103;;
Louis Dionneba9b1502020-10-01 13:55:39 -0400104generic-msan)
Louis Dionne9f21d342020-09-23 09:20:03 -0400105 export CC=clang
106 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400107 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake"
108 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400109;;
Louis Dionneba9b1502020-10-01 13:55:39 -0400110generic-tsan)
Louis Dionne9f21d342020-09-23 09:20:03 -0400111 export CC=clang
112 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400113 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake"
114 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400115;;
Louis Dionneba9b1502020-10-01 13:55:39 -0400116generic-ubsan)
Louis Dionne9f21d342020-09-23 09:20:03 -0400117 export CC=clang
118 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400119 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake"
120 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400121;;
Louis Dionneba9b1502020-10-01 13:55:39 -0400122generic-with_llvm_unwinder)
Louis Dionne9f21d342020-09-23 09:20:03 -0400123 export CC=clang
124 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400125 generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON
126 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400127;;
Louis Dionneba9b1502020-10-01 13:55:39 -0400128generic-singlethreaded)
Louis Dionne9f21d342020-09-23 09:20:03 -0400129 export CC=clang
130 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400131 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake"
132 check-cxx-cxxabi
Louis Dionne9f21d342020-09-23 09:20:03 -0400133;;
Louis Dionnece1365f2020-10-06 16:46:58 -0400134generic-nodebug)
135 export CC=clang
136 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400137 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-nodebug.cmake"
138 check-cxx-cxxabi
Louis Dionnece1365f2020-10-06 16:46:58 -0400139;;
Louis Dionnee0d01292020-10-15 10:32:09 -0400140generic-no-random_device)
141 export CC=clang
142 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400143 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake"
144 check-cxx-cxxabi
Louis Dionnee0d01292020-10-15 10:32:09 -0400145;;
Louis Dionne79410dd2020-10-01 08:55:40 -0400146x86_64-apple-system)
147 export CC=clang
148 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400149 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake"
150 check-cxx-cxxabi
Louis Dionne79410dd2020-10-01 08:55:40 -0400151;;
152x86_64-apple-system-noexceptions)
153 export CC=clang
154 export CXX=clang++
Louis Dionne2f8dd262020-10-23 10:02:14 -0400155 generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \
156 -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
157 -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF
158 check-cxx-cxxabi
159;;
160benchmarks)
161 export CC=clang
162 export CXX=clang++
163 generate-cmake
164 check-cxx-benchmarks
Louis Dionne79410dd2020-10-01 08:55:40 -0400165;;
Louis Dionned3024a02020-10-23 16:27:41 -0400166unified-standalone)
167 export CC=clang
168 export CXX=clang++
169
170 echo "--- Generating CMake"
171 rm -rf "${BUILD_DIR}"
172 cmake -S "${MONOREPO_ROOT}/libcxx/utils/ci/runtimes" \
173 -B "${BUILD_DIR}" \
174 -GNinja \
175 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
176 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
177 -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi;libunwind"
178
179 check-cxx-cxxabi
180;;
181legacy-standalone)
182 export CC=clang
183 export CXX=clang++
184
185 echo "--- Generating CMake"
186 rm -rf "${BUILD_DIR}"
187 cmake -S "${MONOREPO_ROOT}/libcxx" \
188 -B "${BUILD_DIR}/libcxx" \
189 -GNinja \
190 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
191 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
192 -DLLVM_PATH="${MONOREPO_ROOT}/llvm" \
193 -DLIBCXX_CXX_ABI=libcxxabi \
194 -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${MONOREPO_ROOT}/libcxxabi/include" \
195 -DLIBCXX_CXX_ABI_LIBRARY_PATH="${BUILD_DIR}/libcxxabi/lib"
196
197 cmake -S "${MONOREPO_ROOT}/libcxxabi" \
198 -B "${BUILD_DIR}/libcxxabi" \
199 -GNinja \
200 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
201 -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
202 -DLLVM_PATH="${MONOREPO_ROOT}/llvm" \
203 -DLIBCXXABI_LIBCXX_PATH="${MONOREPO_ROOT}/libcxx" \
Louis Dionneb8884632020-10-26 14:25:49 -0400204 -DLIBCXXABI_LIBCXX_INCLUDES="${MONOREPO_ROOT}/libcxx/include" \
205 -DLIBCXXABI_LIBCXX_LIBRARY_PATH="${BUILD_DIR}/libcxx/lib"
Louis Dionned3024a02020-10-23 16:27:41 -0400206
207 echo "+++ Building libc++abi"
208 ninja -C "${BUILD_DIR}/libcxxabi" cxxabi
209
210 echo "+++ Building libc++"
211 ninja -C "${BUILD_DIR}/libcxx" cxx
212
213 echo "+++ Running the libc++ tests"
214 ninja -C "${BUILD_DIR}/libcxx" check-cxx
215
216 echo "+++ Running the libc++abi tests"
217 ninja -C "${BUILD_DIR}/libcxxabi" check-cxxabi
218;;
Louis Dionne9f21d342020-09-23 09:20:03 -0400219*)
220 echo "${BUILDER} is not a known configuration"
221 exit 1
222;;
223esac