101 lines
4.0 KiB
Bash
101 lines
4.0 KiB
Bash
#! /bin/bash
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright Contributors to the OpenEXR Project.
|
|
|
|
# This script can be used to generate a local test coverage report
|
|
# using the clang / llvm toolset for doing so
|
|
# It should hopefully be obvious how to adjust, but should work
|
|
# on most linux distros
|
|
|
|
buildtype=Debug
|
|
builddir=build.coverage
|
|
|
|
haveninja=`which ninja`
|
|
|
|
#imathoverride="-DOPENEXR_FORCE_INTERNAL_IMATH=ON -DIMATH_REPO=/home/user/Development/Imath"
|
|
|
|
# also turn on most of the warnings because we should look at that
|
|
# as well...
|
|
cwarns="-fstack-protector-all -Weverything -Wno-reserved-identifier -Wno-covered-switch-default -Wno-cast-align -Wno-overlength-strings -fprofile-arcs -fprofile-instr-generate -fcoverage-mapping"
|
|
cxxwarns="-fstack-protector-all -Wno-sign-conversion -Wno-float-equal -Wno-padded -Wno-zero-as-null-pointer-constant -Wno-old-style-cast -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-missing-braces -fprofile-instr-generate -fcoverage-mapping"
|
|
|
|
genargs=""
|
|
if [[ "$haveninja" != "" ]]; then
|
|
genargs="-G Ninja"
|
|
fi
|
|
|
|
if [[ ! -e "${builddir}" ]]; then
|
|
export CC=/usr/bin/clang
|
|
export CXX=/usr/bin/clang++
|
|
|
|
cmake -B ${builddir} -S . ${genargs} ${imathoverride} -DCMAKE_C_FLAGS="${cwarns}" -DCMAKE_CXX_FLAGS="${cxxwarns}" -DCMAKE_BUILD_TYPE=${buildtype} || exit 1
|
|
fi
|
|
|
|
if [[ "$haveninja" != "" ]]; then
|
|
ninja -C ${builddir} || exit 1
|
|
else
|
|
nproc=`cat /proc/cpuinfo|grep processor|wc -l`
|
|
make -j${nproc} -C ${builddir} || exit 1
|
|
fi
|
|
|
|
# archive previous runs????
|
|
rm -rf coverage
|
|
|
|
/usr/bin/env LLVM_PROFILE_FILE=coverage/core.profraw build.coverage/bin/OpenEXRCoreTest || exit 1
|
|
/usr/bin/env LLVM_PROFILE_FILE=coverage/exr.profraw build.coverage/bin/OpenEXRTest || exit 1
|
|
/usr/bin/env LLVM_PROFILE_FILE=coverage/util.profraw build.coverage/bin/OpenEXRUtilTest || exit 1
|
|
|
|
llvm-profdata merge -sparse -o coverage/exr.profdata coverage/core.profraw coverage/exr.profraw coverage/util.profraw
|
|
|
|
llvm-cov show \
|
|
build.coverage/bin/OpenEXRCoreTest \
|
|
-object build.coverage/src/lib/OpenEXRCore/libOpenEXRCore-3_2_d.so \
|
|
-instr-profile=coverage/exr.profdata \
|
|
-show-regions \
|
|
-show-expansions \
|
|
--output-dir=coverage/core_only \
|
|
--format="html" \
|
|
-ignore-filename-regex='src/test/.*' \
|
|
-ignore-filename-regex='build.coverage/.*' \
|
|
-ignore-filename-regex='src/lib/OpenEXR/Imf*'
|
|
|
|
llvm-cov show \
|
|
build.coverage/bin/OpenEXRTest \
|
|
-object build.coverage/src/lib/OpenEXR/libOpenEXR-3_2_d.so \
|
|
-instr-profile=coverage/exr.profdata \
|
|
-show-regions \
|
|
-show-expansions \
|
|
--output-dir=coverage/exr_only \
|
|
--format="html" \
|
|
-ignore-filename-regex='src/test/.*' \
|
|
-ignore-filename-regex='build.coverage/.*' \
|
|
-ignore-filename-regex='src/lib/OpenEXRCore/*'
|
|
|
|
llvm-cov show \
|
|
build.coverage/bin/OpenEXRUtilTest \
|
|
-object build.coverage/src/lib/OpenEXRUtil/libOpenEXRUtil-3_2_d.so \
|
|
-instr-profile=coverage/exr.profdata \
|
|
-show-regions \
|
|
-show-expansions \
|
|
--output-dir=coverage/util_only \
|
|
--format="html" \
|
|
-ignore-filename-regex='src/test/.*' \
|
|
-ignore-filename-regex='build.coverage/.*' \
|
|
-ignore-filename-regex='src/lib/OpenEXR/Imf*' \
|
|
-ignore-filename-regex='src/lib/OpenEXRCore/*'
|
|
|
|
llvm-cov show \
|
|
build.coverage/bin/OpenEXRCoreTest \
|
|
-object build.coverage/bin/OpenEXRTest \
|
|
-object build.coverage/bin/OpenEXRUtilTest \
|
|
-object build.coverage/src/lib/OpenEXRCore/libOpenEXRCore-3_2_d.so \
|
|
-object build.coverage/src/lib/OpenEXR/libOpenEXR-3_2_d.so \
|
|
-object build.coverage/src/lib/OpenEXRUtil/libOpenEXRUtil-3_2_d.so \
|
|
-instr-profile=coverage/exr.profdata \
|
|
-show-regions \
|
|
-show-expansions \
|
|
--output-dir=coverage/combined \
|
|
--format="html" \
|
|
-ignore-filename-regex='src/test/.*' \
|
|
-ignore-filename-regex='build.coverage/.*'
|