Files
where-are-my-friends/nix/coverage-html.nix
T

78 lines
1.4 KiB
Nix

{
lib,
src,
stdenv,
cmocka,
libllvm,
pkg-config,
}:
stdenv.mkDerivation {
pname = "where-are-my-friends-coverage-html";
version = "0.1.0";
inherit src;
makeFlags = [
"prefix=$(out)"
"CC=${stdenv.cc.targetPrefix}cc"
];
hardeningDisable = [ "fortify" ];
env = {
CMOCKA_MESSAGE_OUTPUT = "XML";
LLVM_PROFILE_FILE = "output/prof/wamf-%p-%m.profraw";
};
nativeBuildInputs = [
libllvm
pkg-config
];
buildInputs = [ cmocka ];
buildPhase = ''
runHook preBuild
mkdir -p "$(dirname "$LLVM_PROFILE_FILE")"
make check
llvm-profdata merge -sparse output/prof/wamf-*.profraw -o wamf.profdata
LLVM_COV_ARGS=(
-format=html
-output-dir=coverage-html
-instr-profile=wamf.profdata
-object=output/test/test
# -show-line-counts-or-regions
# -show-expansions
# -show-instantiations
-use-color
-Xdemangler=c++filt
-ignore-filename-regex='.*(test/).*'
-compilation-dir=.
)
llvm-cov show "''${LLVM_COV_ARGS[@]}"
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p "$(dirname "$out")"
cp -r coverage-html "$out"
runHook postInstall
'';
doCheck = false;
meta = {
description = "RCON -> Bluemap player position API converter";
homepage = "https://git.pvv.ntnu.no/Projects/where-are-my-friends";
platforms = lib.platforms.unix;
mainProgram = "wamf";
};
}