valentina/qbs/modules/ccache/ccache.qbs
2023-01-10 13:27:56 +02:00

66 lines
2.2 KiB
QML

import qbs.Process
import qbs.Utilities
// Don't forget to edit ccache config:
// ccache --set-config=sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime
Module {
readonly property bool ccachePresent: ccacheProbe.present
readonly property bool pchSupport: ccachePCHProbe.pchSupport
// change to shell tool which supports key "-c" to excecute command line
property string shellTool: "bash"
// ccache doesn't provide key to get only version number
readonly property string command: "ccache --version | head -n 1 | grep -oE '[0-9]((\.)[0-9]){0,2}'"
Probe {
id: ccacheProbe
property bool present
property string tool: shellTool
property string toolCommand: command
configure: {
var detector = new Process();
try {
if (detector.exec(tool, ["-c", toolCommand]) === 0) {
var version = detector.readStdOut().trim(); // we can read only one time
present = Utilities.versionCompare(version, "0.0.0") >= 0;
console.info("Found ccache version " + version + ".");
}
} finally {
detector.close();
}
}
}
Probe {
id: ccachePCHProbe
condition: ccachePresent === true
property string tool: shellTool
property string toolCommand: command
property bool pchSupport
configure: {
var detector = new Process();
try {
if (detector.exec(tool, ["-c", toolCommand]) === 0) {
var version = detector.readStdOut().trim(); // we can read only one time
pchSupport = Utilities.versionCompare(version, "3.1.0") >= 0;
if (!pchSupport && Utilities.versionCompare(version, "3.1.0") < 0){
console.info("ccache is tool old, version >= 3.1.0 required to work with precompiled headers.");
pchSupport = false;
}
if (pchSupport)
console.info("ccache supports compilation with precompiled headers.")
}
} finally {
detector.close();
}
}
}
}