| #!/usr/bin/env bash | |
| set -e | |
| # Checkout LLVM sources | |
| git clone --filter=blob:none --depth=1 --branch llvmorg-19.1.6 --no-checkout https://github.com/llvm/llvm-project.git llvm-project | |
| cd llvm-project | |
| git sparse-checkout set --cone | |
| git checkout llvmorg-19.1.6 | |
| git sparse-checkout set cmake llvm/cmake runtimes libcxx libcxxabi | |
| cd .. | |
| ## Setup libc++ options | |
| if [ -z "$BUILD_32_BITS" ]; then | |
| export BUILD_32_BITS=OFF && echo disabling 32 bit build | |
| fi | |
| ## Build and install libc++ (Use unstable ABI for better sanitizer coverage) | |
| mkdir llvm-build && cd llvm-build | |
| cmake -GNinja \ | |
| -DCMAKE_C_COMPILER=${CC} \ | |
| -DCMAKE_CXX_COMPILER=${CXX} \ | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
| -DCMAKE_INSTALL_PREFIX=/usr \ | |
| -DLIBCXX_ABI_UNSTABLE=OFF \ | |
| -DLLVM_USE_SANITIZER=${LIBCXX_SANITIZER} \ | |
| -DLLVM_BUILD_32_BITS=${BUILD_32_BITS} \ | |
| -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ | |
| -DLLVM_INCLUDE_TESTS=OFF \ | |
| -DLIBCXX_INCLUDE_TESTS=OFF \ | |
| -DLIBCXX_INCLUDE_BENCHMARKS=OFF \ | |
| -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi' \ | |
| ../llvm-project/runtimes/ | |
| cmake --build . -- cxx cxxabi | |
| cd .. |