aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra/base-images
diff options
context:
space:
mode:
authorGravatar jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com>2019-04-11 09:51:19 -0700
committerGravatar GitHub <noreply@github.com>2019-04-11 09:51:19 -0700
commit97eca89ed944fdb4e3fe575698a057c69814582e (patch)
treef920f6add0b4f9d2646ea8e6b9d6c39b4b9d2379 /infra/base-images
parent3eaad4f3e255936daad746e10a440239150c7185 (diff)
Build clang so that it can compile targets with `-fsanitize=fuzzer` (#2311)
Build clang so that it can compile targets with -fsanitize=fuzzer without adding any runtime dependencies.
Diffstat (limited to 'infra/base-images')
-rwxr-xr-xinfra/base-images/base-clang/checkout_build_install_llvm.sh22
1 files changed, 17 insertions, 5 deletions
diff --git a/infra/base-images/base-clang/checkout_build_install_llvm.sh b/infra/base-images/base-clang/checkout_build_install_llvm.sh
index 4c45cf28..e93f9a8b 100755
--- a/infra/base-images/base-clang/checkout_build_install_llvm.sh
+++ b/infra/base-images/base-clang/checkout_build_install_llvm.sh
@@ -63,9 +63,12 @@ cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project
cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project/libcxx/trunk@$LLVM_REVISION libcxx
cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project/libcxxabi/trunk@$LLVM_REVISION libcxxabi
-# Build & install
-mkdir -p $WORK/llvm
-cd $WORK/llvm
+# Build & install. We build clang in two stages because gcc can't build a
+# static version of libcxxabi
+# (see https://github.com/google/oss-fuzz/issues/2164).
+mkdir -p $WORK/llvm-stage2 $WORK/llvm-stage1
+cd $WORK/llvm-stage1
+
TARGET_TO_BUILD=
case $(uname -m) in
x86_64)
@@ -80,12 +83,21 @@ case $(uname -m) in
;;
esac
cmake -G "Ninja" \
- -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
+ -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DLIBCXXABI_ENABLE_SHARED=OFF \
+ -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
+ $SRC/llvm
+ninja
+
+cd $WORK/llvm-stage2
+export CC=$WORK/llvm-stage1/bin/clang
+export CXX=$WORK/llvm-stage1/bin/clang++
+cmake -G "Ninja" \
+ -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON -DLIBCXXABI_ENABLE_SHARED=OFF \
-DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="$TARGET_TO_BUILD" \
$SRC/llvm
ninja
ninja install
-rm -rf $WORK/llvm
+rm -rf $WORK/llvm-stage1 $WORK/llvm-stage2
mkdir -p $WORK/msan
cd $WORK/msan