Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 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 | |
| 10 | set -ex |
| 11 | |
| 12 | BUILDER="${1}" |
Louis Dionne | 79410dd | 2020-10-01 08:55:40 -0400 | [diff] [blame] | 13 | MONOREPO_ROOT="$(git rev-parse --show-toplevel)" |
| 14 | BUILD_DIR="${MONOREPO_ROOT}/build/${BUILDER}" |
Louis Dionne | 1913bb6 | 2020-10-21 13:57:05 -0400 | [diff] [blame] | 15 | INSTALL_DIR="${MONOREPO_ROOT}/build/${BUILDER}/install" |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 16 | |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 17 | function 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 | |
| 31 | function 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 | |
| 42 | function check-cxx-benchmarks() { |
| 43 | echo "--- Running the benchmarks" |
| 44 | ninja -C "${BUILD_DIR}" check-cxx-benchmarks |
| 45 | } |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 46 | |
| 47 | case "${BUILDER}" in |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 48 | generic-cxx03) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 49 | export CC=clang |
| 50 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 51 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake" |
| 52 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 53 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 54 | generic-cxx11) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 55 | export CC=clang |
| 56 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 57 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake" |
| 58 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 59 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 60 | generic-cxx14) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 61 | export CC=clang |
| 62 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 63 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake" |
| 64 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 65 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 66 | generic-cxx17) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 67 | export CC=clang |
| 68 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 69 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake" |
| 70 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 71 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 72 | generic-cxx2a) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 73 | export CC=clang |
| 74 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 75 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2a.cmake" |
| 76 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 77 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 78 | generic-noexceptions) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 79 | export CC=clang |
| 80 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 81 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake" |
| 82 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 83 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 84 | generic-32bit) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 85 | export CC=clang |
| 86 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 87 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake" |
| 88 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 89 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 90 | generic-gcc) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 91 | export CC=gcc |
| 92 | export CXX=g++ |
Louis Dionne | 3e5f9da | 2020-09-29 10:49:52 -0400 | [diff] [blame] | 93 | # FIXME: Re-enable experimental testing on GCC. GCC cares about the order |
| 94 | # in which we link -lc++experimental, which causes issues. |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 95 | generate-cmake -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF |
| 96 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 97 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 98 | generic-asan) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 99 | export CC=clang |
| 100 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 101 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake" |
| 102 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 103 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 104 | generic-msan) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 105 | export CC=clang |
| 106 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 107 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake" |
| 108 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 109 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 110 | generic-tsan) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 111 | export CC=clang |
| 112 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 113 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake" |
| 114 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 115 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 116 | generic-ubsan) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 117 | export CC=clang |
| 118 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 119 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake" |
| 120 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 121 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 122 | generic-with_llvm_unwinder) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 123 | export CC=clang |
| 124 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 125 | generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON |
| 126 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 127 | ;; |
Louis Dionne | ba9b150 | 2020-10-01 13:55:39 -0400 | [diff] [blame] | 128 | generic-singlethreaded) |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 129 | export CC=clang |
| 130 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 131 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake" |
| 132 | check-cxx-cxxabi |
Louis Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 133 | ;; |
Louis Dionne | ce1365f | 2020-10-06 16:46:58 -0400 | [diff] [blame] | 134 | generic-nodebug) |
| 135 | export CC=clang |
| 136 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 137 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-nodebug.cmake" |
| 138 | check-cxx-cxxabi |
Louis Dionne | ce1365f | 2020-10-06 16:46:58 -0400 | [diff] [blame] | 139 | ;; |
Louis Dionne | e0d0129 | 2020-10-15 10:32:09 -0400 | [diff] [blame] | 140 | generic-no-random_device) |
| 141 | export CC=clang |
| 142 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 143 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake" |
| 144 | check-cxx-cxxabi |
Louis Dionne | e0d0129 | 2020-10-15 10:32:09 -0400 | [diff] [blame] | 145 | ;; |
Louis Dionne | 79410dd | 2020-10-01 08:55:40 -0400 | [diff] [blame] | 146 | x86_64-apple-system) |
| 147 | export CC=clang |
| 148 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 149 | generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" |
| 150 | check-cxx-cxxabi |
Louis Dionne | 79410dd | 2020-10-01 08:55:40 -0400 | [diff] [blame] | 151 | ;; |
| 152 | x86_64-apple-system-noexceptions) |
| 153 | export CC=clang |
| 154 | export CXX=clang++ |
Louis Dionne | 2f8dd26 | 2020-10-23 10:02:14 -0400 | [diff] [blame] | 155 | 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 | ;; |
| 160 | benchmarks) |
| 161 | export CC=clang |
| 162 | export CXX=clang++ |
| 163 | generate-cmake |
| 164 | check-cxx-benchmarks |
Louis Dionne | 79410dd | 2020-10-01 08:55:40 -0400 | [diff] [blame] | 165 | ;; |
Louis Dionne | d3024a0 | 2020-10-23 16:27:41 -0400 | [diff] [blame] | 166 | unified-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 | ;; |
| 181 | legacy-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 Dionne | b888463 | 2020-10-26 14:25:49 -0400 | [diff] [blame] | 204 | -DLIBCXXABI_LIBCXX_INCLUDES="${MONOREPO_ROOT}/libcxx/include" \ |
| 205 | -DLIBCXXABI_LIBCXX_LIBRARY_PATH="${BUILD_DIR}/libcxx/lib" |
Louis Dionne | d3024a0 | 2020-10-23 16:27:41 -0400 | [diff] [blame] | 206 | |
| 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 Dionne | 9f21d34 | 2020-09-23 09:20:03 -0400 | [diff] [blame] | 219 | *) |
| 220 | echo "${BUILDER} is not a known configuration" |
| 221 | exit 1 |
| 222 | ;; |
| 223 | esac |