1c0abf9e6Sopenharmony_ci#!/usr/bin/env bash
2c0abf9e6Sopenharmony_ci
3c0abf9e6Sopenharmony_ciset -e
4c0abf9e6Sopenharmony_ci
5c0abf9e6Sopenharmony_ciif [[ $# -lt 2 ]]; then
6c0abf9e6Sopenharmony_ci    echo "Usage: ./generate-gcov-report.sh <rel-target-dir> <srcdir> [<srcdir> ... ]"
7c0abf9e6Sopenharmony_ci    exit 1
8c0abf9e6Sopenharmony_cifi
9c0abf9e6Sopenharmony_ci
10c0abf9e6Sopenharmony_citarget_dir=$1
11c0abf9e6Sopenharmony_cishift
12c0abf9e6Sopenharmony_cisource_dirs=$*
13c0abf9e6Sopenharmony_ci
14c0abf9e6Sopenharmony_ciif [[ "${target_dir:0:1}" != '/' ]]; then
15c0abf9e6Sopenharmony_ci    target_dir="$PWD/$target_dir"
16c0abf9e6Sopenharmony_cifi
17c0abf9e6Sopenharmony_cisummary_file="$target_dir/summary.txt"
18c0abf9e6Sopenharmony_ci
19c0abf9e6Sopenharmony_cimkdir -p "$target_dir"
20c0abf9e6Sopenharmony_cirm -f "$target_dir"/*.gcov
21c0abf9e6Sopenharmony_ci
22c0abf9e6Sopenharmony_cifor dir in $source_dirs; do
23c0abf9e6Sopenharmony_ci	pushd "$dir" > /dev/null
24c0abf9e6Sopenharmony_ci	for file in *.c; do
25c0abf9e6Sopenharmony_ci		find ./ -name "*${file/\.c/.gcda}" -exec gcov {} \; > /dev/null
26c0abf9e6Sopenharmony_ci	done
27c0abf9e6Sopenharmony_ci	find ./ -name "*.gcov" \! -path "*/`basename "$target_dir"`/*" -exec mv {} "$target_dir" \;
28c0abf9e6Sopenharmony_ci	popd > /dev/null
29c0abf9e6Sopenharmony_cidone
30c0abf9e6Sopenharmony_ci
31c0abf9e6Sopenharmony_ciecho "========== coverage report ========" > "$summary_file"
32c0abf9e6Sopenharmony_cifor file in "$target_dir"/*.gcov; do
33c0abf9e6Sopenharmony_ci	total=`grep -v " -:" "$file" | wc -l`
34c0abf9e6Sopenharmony_ci	missing=`grep "#####" "$file" | wc -l`
35c0abf9e6Sopenharmony_ci	hit=$((total - missing));
36c0abf9e6Sopenharmony_ci	percent=$((($hit * 100)/$total))
37c0abf9e6Sopenharmony_ci	fname=`basename "$file"`
38c0abf9e6Sopenharmony_ci	printf "%-32s total lines: %4s not tested: %4s (%3s%%)\n" "$fname" "$total" "$missing" "$percent">> "$summary_file"
39c0abf9e6Sopenharmony_cidone
40c0abf9e6Sopenharmony_ciecho "========== =============== ========" >> "$summary_file"
41