#!/bin/sh

###############################################################################
#
# This builds xz with special CFLAGS for measuring code coverage and
# uses lcov and genhtml to create coverage reports.
#
# The current directory is used as the build directory so out-of-tree
# builds are possible. The coverage reports are written to the directory
# "coverage" under the current directory.
#
# Any options passed to this script are passed to "make" so to get
# faster builds use, for example, "-j4" as an argument to this script.
#
# Author: Jia Tan
#
# This file has been put into the public domain.
# You can do whatever you want with this file.
#
###############################################################################

set -e

COVERAGE_DIR="coverage"

# Test if lcov is installed
if ! command -v lcov > /dev/null
then
	echo "Error: lcov not installed"
	exit 1
fi

# Test if genhtml is installed
if ! command -v genhtml > /dev/null
then
	echo "Error: genhtml not installed"
	exit 1
fi

top_srcdir=$(cd -- "$(dirname -- "$0")" && cd .. && pwd)

# Run the autogen.sh script if the configure script has not been generated
if ! test -f "$top_srcdir/configure"
then
	( cd "$top_srcdir" && ./autogen.sh )
fi

# Execute the configure script if the Makefile is not present
if ! test -f "Makefile"
then
	"$top_srcdir/configure" \
		--disable-xzdec \
		--disable-lzmadec \
		--disable-lzmainfo \
		--disable-shared \
		--enable-silent-rules \
		CFLAGS="$CFLAGS --coverage --no-inline -O0"
fi

# Run the tests
make "$@" check

# Re-create the coverage directory
rm -rf "$COVERAGE_DIR"
mkdir -p "$COVERAGE_DIR/liblzma"
mkdir -p "$COVERAGE_DIR/xz"

# Run lcov with src/liblzma as the input directory and write the
# results out to the coverage directory
lcov -c -d "src/liblzma" -o "$COVERAGE_DIR/liblzma/liblzma.cov"
lcov -c -d "src/xz" -o "$COVERAGE_DIR/xz/xz.cov"

# Generate the reports
genhtml "$COVERAGE_DIR/liblzma/liblzma.cov" -o "$COVERAGE_DIR/liblzma"
genhtml "$COVERAGE_DIR/xz/xz.cov" -o "$COVERAGE_DIR/xz"

echo "Success! See:"
echo "file://$PWD/$COVERAGE_DIR/liblzma/index.html"
echo "file://$PWD/$COVERAGE_DIR/xz/index.html"
