diff options
author | Konstantin Varlamov <var-const@users.noreply.github.com> | 2018-04-23 14:11:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-23 14:11:27 -0400 |
commit | 758b29aec4c2a76bd85f521ba652ceedd11313f1 (patch) | |
tree | c67e4ff4eb649278f50094a05f33f22b304099e8 /scripts/build.sh | |
parent | e4384c3e809556e75907df74cd116307f397472f (diff) |
Firestore Travis: add test runs using sanitizers (#1128)
Also move most of `before_install` actions from Travis config into scripts to reduce duplication.
Diffstat (limited to 'scripts/build.sh')
-rwxr-xr-x | scripts/build.sh | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/scripts/build.sh b/scripts/build.sh index 8060ca0..ef10059 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -36,6 +36,13 @@ platform can be one of: method can be one of: xcodebuild (default) cmake + +Optionally, reads the environment variable SANITIZERS. If set, it is expected to +be a string containing a space-separated list with some of the following +elements: + asan + tsan + ubsan EOF exit 1 fi @@ -53,6 +60,9 @@ if [[ $# -gt 2 ]]; then fi echo "Building $product for $platform using $method" +if [[ -n "${SANITIZERS:-}" ]]; then + echo "Using sanitizers: $SANITIZERS" +fi # Runs xcodebuild with the given flags, piping output to xcpretty # If xcodebuild fails with known error codes, retries once. @@ -103,6 +113,51 @@ xcb_flags+=( CODE_SIGNING_REQUIRED=NO ) +# TODO(varconst): --warn-unused-vars - right now, it makes the log overflow on +# Travis. +cmake_options=( + -Wdeprecated + --warn-uninitialized +) + +if [[ -n "${SANITIZERS:-}" ]]; then + for sanitizer in $SANITIZERS; do + case "$sanitizer" in + asan) + xcb_flags+=( + -enableAddressSanitizer YES + ) + cmake_options+=( + -DWITH_ASAN=ON + ) + ;; + + tsan) + xcb_flags+=( + -enableThreadSanitizer YES + ) + cmake_options+=( + -DWITH_TSAN=ON + ) + ;; + + ubsan) + xcb_flags+=( + -enableUndefinedBehaviorSanitizer YES + ) + cmake_options+=( + -DWITH_UBSAN=ON + ) + ;; + + *) + echo "Unknown sanitizer '$sanitizer'" 1>&2 + exit 1 + ;; + esac + done +fi + case "$product-$method-$platform" in Firebase-xcodebuild-*) RunXcodebuild \ @@ -167,7 +222,7 @@ case "$product-$method-$platform" in Firestore-cmake-macOS) test -d build || mkdir build echo "Preparing cmake build ..." - (cd build; cmake ..) + (cd build; cmake "${cmake_options[@]}" ..) echo "Building cmake build ..." cpus=$(sysctl -n hw.ncpu) |