1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#!/bin/bash
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# Build Skia with one of Clang's many sanitizers.
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# $ tools/xsan_build {address,thread,undefined,etc.} [any other flags to pass to make...]
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# This script assumes the use of Clang >=3.2.
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# For more information, see:
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#   http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)set -e
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)sanitizer=$1
15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)shift
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)args="$@"
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)export CC="$(which clang)"
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)export CXX="$(which clang++)"
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)if [[ -z "${CC}" ]] || [[ -z "${CXX}" ]]; then
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  echo "Couldn't find Clang on this machine!"
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  exit 1
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)fi
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)echo "CC=$CC"
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)echo "CXX=$CXX"
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)$CC --version
29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)export GYP_DEFINES="skia_sanitizer=$sanitizer ${GYP_DEFINES}"
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)make ${args}
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)