skia2/tools/xsan_build
mtklein 0da8537555 MSAN: build libc++ with MSAN, link to it.
The errors that we see should now change to the unexplainable,
rather than the explainable errors at head.

We suspect that the original reason to blacklist was this,
not building libc++ with MSAN.  So unblacklist everything to start fresh.

BUG=skia:4903,skia:4900

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1694353004

Review URL: https://codereview.chromium.org/1694353004
2016-02-16 14:03:15 -08:00

59 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Build Skia with one of Clang's many sanitizers.
#
# $ tools/xsan_build {address,thread,undefined,etc.} [any other flags to pass to make...]
#
# This script assumes the use of Clang >=3.2.
#
# For more information, see:
# http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
set -e
set -x
here=$(cd `dirname $0`; echo `pwd`)
cores=48
echo "Bootstrapping CMake"
pushd $here/../third_party/externals/cmake
./bootstrap --parallel=$cores
make -j $cores cmake
popd
cmake=$here/../third_party/externals/cmake/bin/cmake
echo "Building Clang"
pushd $here/../third_party/externals/llvm
mkdir -p out/
cd out/
rm -f CMakeCache.txt # Force CMake to re-configure, in case DEPS has changed.
$cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ..
ninja
popd
export CC=$here/../third_party/externals/llvm/out/bin/clang
export CXX=$here/../third_party/externals/llvm/out/bin/clang++
$CC --version
if [[ "$1" == "memory" ]]; then
echo "Building libc++ with MSAN"
pushd $here/../third_party/externals/llvm
mkdir -p msan_out/
cd msan_out/
rm -f CMakeCache.txt # Force CMake to re-configure, in case DEPS has changed.
$cmake -DLLVM_USE_SANITIZER=MemoryWithOrigins -DCMAKE_BUILD_TYPE=Release -G Ninja ..
ninja cxx cxxabi # No need to build all of LLVM+Clang with MSAN, just libc++.
popd
msan_out=$here/../third_party/externals/llvm/msan_out
export GYP_DEFINES="skia_gpu=0 skia_no_fontconfig=1 skia_freetype_static=1 ${GYP_DEFINES}"
export CXXFLAGS="-stdlib=libc++ -I$msan_out/include ${CXX_FLAGS}"
export LDFLAGS="-stdlib=libc++ -L$msan_out/lib -Wl,-rpath,$msan_out/lib ${LDFLAGS}"
fi
export GYP_DEFINES="skia_sanitizer=$1 ${GYP_DEFINES}"
shift
make $@