New module to generate external binary resources.
This commit is contained in:
parent
89aab8cb92
commit
47db665c21
61
qbs/modules/ebr/ebr.qbs
Normal file
61
qbs/modules/ebr/ebr.qbs
Normal file
|
@ -0,0 +1,61 @@
|
|||
import "rcc.js" as Rcc
|
||||
|
||||
Module {
|
||||
|
||||
additionalProductTypes: "ebr.rcc"
|
||||
|
||||
property bool enableCompression: true
|
||||
property int thresholdLevel: 70
|
||||
property string compressAlgorithm: "zstd"
|
||||
property int compressLevel: -1
|
||||
|
||||
Rule {
|
||||
inputs: ["ebr.external_qrc"]
|
||||
outputFileTags: ["ebr.rcc"]
|
||||
outputArtifacts: {
|
||||
var artifact = {
|
||||
filePath: input.completeBaseName + ".rcc",
|
||||
fileTags: ["ebr.rcc"]
|
||||
};
|
||||
return [artifact];
|
||||
}
|
||||
prepare: {
|
||||
var args = ["-binary", input.filePath, "-o", output.filePath];
|
||||
var enableCompression = input.moduleProperty("ebr", "enableCompression");
|
||||
if (enableCompression) {
|
||||
var compressAlgorithm = input.moduleProperty("ebr", "compressAlgorithm");
|
||||
if (product.Qt.core.versionMajor >= 5 && product.Qt.core.versionMinor >= 13) {
|
||||
// Since Qt 5.13 we have option to select compress algorithm
|
||||
if (compressAlgorithm !== "zstd")
|
||||
args.push("-compress-algo", compressAlgorithm);
|
||||
} else {
|
||||
if (compressAlgorithm !== "zlib")
|
||||
compressAlgorithm = "zlib";
|
||||
}
|
||||
|
||||
var thresholdLevel = input.moduleProperty("ebr", "thresholdLevel");
|
||||
if (thresholdLevel !== 70)
|
||||
args.push("-threshold", thresholdLevel);
|
||||
|
||||
var compressLevel = input.moduleProperty("ebr", "compressLevel");
|
||||
if (compressLevel !== -1) {
|
||||
// rcc will silently ignore incorrect values
|
||||
if (compressAlgorithm === "zstd")
|
||||
compressLevel = Rcc.bound(0, compressLevel, 19);
|
||||
else if (compressAlgorithm === "zlib")
|
||||
compressLevel = Rcc.bound(1, compressLevel, 9);
|
||||
}
|
||||
|
||||
if (compressLevel !== -1)
|
||||
args.push("-compress", compressLevel);
|
||||
} else {
|
||||
args.push("-no-compress");
|
||||
}
|
||||
|
||||
var cmd = new Command(Rcc.fullPath(product), args);
|
||||
cmd.description = "rcc (external) "+ input.fileName;
|
||||
cmd.highlight = 'filegen';
|
||||
return cmd;
|
||||
}
|
||||
}
|
||||
}
|
13
qbs/modules/ebr/rcc.js
Normal file
13
qbs/modules/ebr/rcc.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
var Utilities = require("qbs.Utilities");
|
||||
|
||||
function fullPath(product)
|
||||
{
|
||||
if (Utilities.versionCompare(product.Qt.core.version, "6.1") < 0)
|
||||
return product.Qt.core.binPath + '/' + product.Qt.core.rccName;
|
||||
return product.Qt.core.libExecPath + '/' + product.Qt.core.rccName;
|
||||
}
|
||||
|
||||
function bound(min, val, max)
|
||||
{
|
||||
return Math.max(min, Math.min(max, val));
|
||||
}
|
|
@ -7,6 +7,7 @@ VTestApp {
|
|||
Depends { name: "IFCLib" }
|
||||
Depends { name: "VDXFLib" }
|
||||
Depends { name: "VFormatLib" }
|
||||
Depends { name: "ebr" }
|
||||
|
||||
name: "ValentinaTest"
|
||||
buildconfig.appTarget: qbs.targetOS.contains("macos") ? "ValentinaTest" : "valentinaTest"
|
||||
|
@ -63,4 +64,10 @@ VTestApp {
|
|||
"tst_vabstractpiece.h",
|
||||
"tst_vtooluniondetails.h",
|
||||
]
|
||||
|
||||
Group {
|
||||
name: "Test data"
|
||||
files: "share/test_data.qrc"
|
||||
fileTags: "ebr.external_qrc"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user