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 (compressAlgorithm !== "zstd") args.push("-compress-algo", compressAlgorithm); 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; } } }