summaryrefslogtreecommitdiff
path: root/deps/v8/tools/gcov.sh
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/tools/gcov.sh')
-rwxr-xr-xdeps/v8/tools/gcov.sh67
1 files changed, 67 insertions, 0 deletions
diff --git a/deps/v8/tools/gcov.sh b/deps/v8/tools/gcov.sh
new file mode 100755
index 0000000000..90f3974c85
--- /dev/null
+++ b/deps/v8/tools/gcov.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+#
+# Copyright 2017 the V8 project authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Build and collect code coverage data, cummulatively, on specified architectures.
+
+BUILD_TYPE=${BUILD_TYPE:-Release}
+
+declare -A modes=( [Release]=release [Debug]=debug )
+declare -A pairs=( [arm]=ia32 [arm64]=x64 [ia32]=ia32 [x64]=x64 )
+
+if [ -z ${modes[$BUILD_TYPE]} ]
+then
+ echo "BUILD_TYPE must be {<unspecified>|Release|Debug}"
+ echo "Release is default"
+ exit
+fi
+
+mode=${modes[$BUILD_TYPE]}
+
+echo "Using build:" $BUILD_TYPE
+v8_root=$(readlink -f $(dirname $BASH_SOURCE)/../)
+work_dir=$v8_root/cov
+build_dir=$work_dir/$BUILD_TYPE
+
+if [ -z $@ ]
+then
+ echo "Pass at least one target architecture"
+ echo "Supported architectures: x64 ia32 arm arm64"
+ echo ""
+ echo "Example: ./tools/gcov.sh x64 arm"
+ echo ""
+ echo "Optionally, set BUILD_TYPE env variable to"
+ echo "either Debug or Release, to use the corresponding build."
+ echo "By default, BUILD_TYPE is Release."
+ echo ""
+ echo "Example: BUILD_TYPE=Debug ./tools/gcov.sh x64 arm"
+ echo ""
+ exit
+fi
+
+lcov --directory=$build_dir --zerocounters
+
+# Mapping v8 build terminology to gnu compiler terminology:
+# target_arch is the host, and
+# v8_target_arch is the target
+
+for v8_target_arch in "$@"
+do
+ target_arch=${pairs[$v8_target_arch]}
+ if [ -z $target_arch ]
+ then
+ echo "Skipping unknown architecture: " $v8_target_arch
+ else
+ echo "Building" $v8_target_arch
+ GYP_DEFINES="component=static_library use_goma=1 target_arch=$target_arch v8_target_arch=$v8_target_arch coverage=1 clang=0" python $v8_root/gypfiles/gyp_v8.py -G output_dir=$work_dir
+ ninja -C $build_dir -j2000
+ $v8_root/tools/run-tests.py --gcov-coverage --arch=$v8_target_arch --mode=$mode --shell-dir=$build_dir --exhaustive-variants
+ fi
+done
+
+lcov --directory=$build_dir --capture --output-file $work_dir/app.info
+genhtml --output-directory $work_dir/html $work_dir/app.info
+echo "Done"
+echo "Output available at: " $work_dir/html/index.html