blob: 8fd173801ff6374e4930faf5fa5e5ff39f91ed1b [file] [log] [blame]
#!/usr/bin/env bash
LLVM_COV=""
verlte() {
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
}
verlt() {
[ "$1" = "$2" ] && return 1 || verlte $1 $2
}
check_llvm_cov() {
if [ -z `which $1` ];
then
return
else
p=$(which $1)
verinfo=`${p} --version`
first_word=$(echo ${verinfo} | awk "{ print \$1 }")
gcov_ver=$(echo ${verinfo} | awk "{ print \$4 }")
llvm_cov_ver=$(echo ${verinfo} | awk "{ print \$5 }")
if [ "$first_word" = "gcov" ]; then
echo "gcov detected, ver = " ${gcov_ver}
verlt "${gcov_ver}" "8.0.0" && LLVM_COV=$1 || LLVM_COV=""
return
elif [ "$first_word" = "LLVM" ]; then
echo "llvm-cov detected, ver = " ${llvm_cov_ver}
verlte "11.0.0" "${gcov_ver}" && LLVM_COV="$1 gcov" || LLVM_COV=""
return
else
echo "neither llvm-cov or gcov ... skipping"
return
fi
fi
}
# search priority
for c in "llvm-cov-11" "gcov-7" "llvm-cov" "gcov"
do
check_llvm_cov $c
if [[ ! -z "${LLVM_COV}" ]];
then
break
fi
done
if [[ -z "${LLVM_COV}" ]];
then
echo "You need gcov < 8.0, or llvm-cov >= 11.0 to analyze Rust generated gcno/gcda files! See Readme.md for more details."
exit 1
fi
${LLVM_COV} $*