aboutsummaryrefslogtreecommitdiff
path: root/.github/libcxx-setup.sh
diff options
context:
space:
mode:
Diffstat (limited to '.github/libcxx-setup.sh')
-rwxr-xr-x.github/libcxx-setup.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/.github/libcxx-setup.sh b/.github/libcxx-setup.sh
new file mode 100755
index 0000000..8773b9c
--- /dev/null
+++ b/.github/libcxx-setup.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+set -e
+
+# Checkout LLVM sources
+git clone --depth=1 https://github.com/llvm/llvm-project.git llvm-project
+
+## 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 -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} \
+ -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' \
+ -G "Unix Makefiles" \
+ ../llvm-project/runtimes/
+make -j cxx cxxabi unwind
+cd ..