blob: 76f54807ab650ea89d6d8b512e8c7ba9ede5e2ba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
import qbs.TextFile
Project {
property int projectJobCount
property int productJobCount
property int moduleJobCount
JobLimit {
condition: projectJobCount !== -1
jobPool: "singleton"
jobCount: projectJobCount
}
JobLimit {
condition: projectJobCount !== -1
jobPool: "singleton"
jobCount: 100
}
CppApplication {
name: "tool"
consoleApplication: true
cpp.cxxLanguageVersion: "c++14"
Properties {
condition: qbs.targetOS.includes("macos")
cpp.minimumMacosVersion: "10.9"
}
files: "main.cpp"
Group {
fileTagsFilter: "application"
fileTags: "tool_tag"
}
Export {
Rule {
alwaysRun: true
inputs: "tool_in"
explicitlyDependsOnFromDependencies: "tool_tag"
Artifact { filePath: input.completeBaseName + ".out"; fileTags: "tool_out" }
prepare: {
var cmd = new Command(explicitlyDependsOn.tool_tag[0].filePath,
[output.filePath]);
cmd.workingDirectory = product.buildDirectory;
cmd.description = "running tool";
cmd.jobPool = "singleton";
return cmd;
}
}
JobLimit {
condition: project.moduleJobCount !== -1
jobPool: "singleton"
jobCount: project.moduleJobCount
}
JobLimit {
condition: project.moduleJobCount !== -1
jobPool: "singleton"
jobCount: 200
}
}
}
Product {
name: "p"
type: "tool_out"
Depends { name: "tool" }
Rule {
multiplex: true
outputFileTags: "tool_in"
outputArtifacts: {
var artifacts = [];
for (var i = 0; i < 5; ++i)
artifacts.push({filePath: "file" + i + ".in", fileTags: "tool_in"});
return artifacts;
}
prepare: {
var commands = [];
for (var i = 0; i < outputs.tool_in.length; ++i) {
var cmd = new JavaScriptCommand();
var output = outputs.tool_in[i];
cmd.output = output.filePath;
cmd.description = "generating " + output.fileName;
cmd.sourceCode = function() {
var f = new TextFile(output, TextFile.WriteOnly);
f.close();
}
commands.push(cmd);
};
return commands;
}
}
JobLimit {
condition: project.productJobCount !== -1
jobPool: "singleton"
jobCount: project.productJobCount
}
JobLimit {
condition: project.productJobCount !== -1
jobPool: "singleton"
jobCount: 300
}
}
}
|