80 lines
2.1 KiB
Bash
Executable File
80 lines
2.1 KiB
Bash
Executable File
#!/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"
|