46 lines
1.4 KiB
QML
46 lines
1.4 KiB
QML
import qbs.FileInfo
|
|
import qbs.Utilities
|
|
|
|
Module {
|
|
condition: (qbs.debugInformation && qbs.toolchain.contains("gcc") && !qbs.toolchain.contains("clang")) ||
|
|
qbs.toolchain.contains("clang")
|
|
Depends { name: "cpp" }
|
|
additionalProductTypes: ["gcno"]
|
|
|
|
cpp.driverFlags: {
|
|
var flags = [];
|
|
|
|
if (product.buildconfig.enableUnitTests && product.buildconfig.enableTestCoverage) {
|
|
if (qbs.toolchain.contains("clang"))
|
|
flags.push("-fprofile-instr-generate", "-fcoverage-mapping");
|
|
else
|
|
flags.push("--coverage");
|
|
}
|
|
|
|
return flags;
|
|
}
|
|
|
|
Properties {
|
|
condition: qbs.toolchain.contains("gcc") && !qbs.toolchain.contains("clang")
|
|
cpp.staticLibraries: ["gcov"]
|
|
}
|
|
|
|
Rule { // Fake rule for '*.gcno' generation.
|
|
condition: qbs.debugInformation && qbs.toolchain.contains("gcc") && !qbs.toolchain.contains("clang")
|
|
inputs: ["cpp", "c"]
|
|
outputFileTags: ["gcno"]
|
|
outputArtifacts: {
|
|
return [{
|
|
fileTags: ["gcno"],
|
|
filePath: FileInfo.joinPaths(Utilities.getHash(input.baseDir),
|
|
input.fileName + ".gcno")
|
|
}];
|
|
}
|
|
prepare: {
|
|
var cmd = new JavaScriptCommand();
|
|
cmd.description = "generating " + output.fileName;
|
|
return [cmd];
|
|
}
|
|
}
|
|
}
|