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)