mirror of
https://github.com/shadps4-emu/ext-cryptopp.git
synced 2024-11-26 19:30:21 +00:00
150 lines
3.8 KiB
Bash
Executable File
150 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
if ! command -v gcov > /dev/null; then
|
|
echo "Please install gcov"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v lcov > /dev/null; then
|
|
echo "Please install lcov"
|
|
exit 1
|
|
fi
|
|
|
|
# Default make jobs
|
|
MAKE_JOBS=${MAKE_JOBS:-4}
|
|
|
|
# Default temp directory
|
|
if [ -z "${TMPDIR}" ];
|
|
then
|
|
if [ -d "${HOME}/tmp" ]; then
|
|
TMPDIR="${HOME}/tmp"
|
|
else
|
|
TMPDIR="/tmp"
|
|
fi
|
|
fi
|
|
|
|
DEBUG_CXXFLAGS="-DDEBUG -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
|
NOASM_CXXFLAGS="-DNDEBUG -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
|
RELEASE_CXXFLAGS="-DNDEBUG -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
|
|
|
# Clean old artifacts
|
|
rm -rf TestCoverage/ >/dev/null
|
|
make distclean >/dev/null
|
|
|
|
echo "**************************************************"
|
|
echo "***** Baseline build *****"
|
|
echo "**************************************************"
|
|
|
|
# The man page says to run a baseline, but the cryptest_base recipe
|
|
# breaks things. Zeroing the counters seems to be the best we can do.
|
|
if lcov --base-directory . --directory . --zerocounters;
|
|
then
|
|
echo
|
|
echo "Baseline zero counters ok"
|
|
echo
|
|
else
|
|
echo
|
|
echo "Baseline zero counters failed"
|
|
echo
|
|
fi
|
|
|
|
#make clean > /dev/null
|
|
#if ! make -j "${MAKE_JOBS}";
|
|
#then
|
|
# echo "Baseline build failed"
|
|
# exit 1
|
|
#fi
|
|
|
|
# Run test programs
|
|
#./cryptest.exe v
|
|
#./cryptest.exe tv all
|
|
|
|
# Create a baseline
|
|
#lcov --base-directory . --directory . -i -c -o cryptest_base.info
|
|
|
|
echo "**************************************************"
|
|
echo "***** Debug build *****"
|
|
echo "**************************************************"
|
|
|
|
make clean > /dev/null
|
|
if ! CXXFLAGS="${DEBUG_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
|
then
|
|
echo "Debug build failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Run test programs
|
|
./cryptest.exe v
|
|
./cryptest.exe tv all
|
|
|
|
# Gather data
|
|
lcov --base-directory . --directory . -c -o cryptest_debug.info
|
|
|
|
echo "**************************************************"
|
|
echo "***** No ASM build *****"
|
|
echo "**************************************************"
|
|
|
|
make clean > /dev/null
|
|
if ! CXXFLAGS="${NOASM_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
|
then
|
|
echo "No ASM build failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Run test programs
|
|
./cryptest.exe v
|
|
./cryptest.exe tv all
|
|
|
|
# Gather data
|
|
lcov --base-directory . --directory . -c -o cryptest_noasm.info
|
|
|
|
echo "**************************************************"
|
|
echo "***** Release build *****"
|
|
echo "**************************************************"
|
|
|
|
make clean > /dev/null
|
|
if ! CXXFLAGS="${RELEASE_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
|
then
|
|
echo "Release build failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Run test programs
|
|
./cryptest.exe v
|
|
./cryptest.exe tv all
|
|
./cryptest.exe b 0.5
|
|
|
|
# Gather data
|
|
lcov --base-directory . --directory . -c -o cryptest_release.info
|
|
|
|
echo "**************************************************"
|
|
echo "***** HTML processing *****"
|
|
echo "**************************************************"
|
|
|
|
if [ ! -e cryptest_debug.info ]; then
|
|
echo "WARN: cryptest_debug.info does not exist"
|
|
fi
|
|
if [ ! -e cryptest_noasm.info ]; then
|
|
echo "WARN: cryptest_noasm.info does not exist"
|
|
fi
|
|
if [ ! -e cryptest_release.info ]; then
|
|
echo "WARN: cryptest_release.info does not exist"
|
|
fi
|
|
|
|
# The man page says to run a baseline, but the cryptest_base recipe
|
|
# breaks things. Zeroing the counters seems to be the best we can do.
|
|
# --add-tracefile cryptest_base.info
|
|
|
|
lcov --add-tracefile cryptest_debug.info \
|
|
--add-tracefile cryptest_noasm.info \
|
|
--add-tracefile cryptest_release.info \
|
|
--output-file cryptest_all.info
|
|
|
|
lcov --remove cryptest_all.info \
|
|
'/usr/*' '*/adhoc*.*' '*/dlltest*.*' '*/fipstest*.*' '*/fips140*.*' '*/test*.*' \
|
|
--output-file cryptest.info
|
|
|
|
genhtml -o TestCoverage/ -t "Crypto++ test coverage" --num-spaces 4 cryptest.info
|
|
|
|
exit 0
|