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
|
import qbs 1.0
import qbs.File
import qbs.FileInfo
import qbs.ModUtils
import 'darwin-tools.js' as DarwinTools
import 'bundle-tools.js' as BundleTools
DarwinGCC {
condition: qbs.hostOS.contains('osx') && qbs.targetOS.contains('ios') && qbs.toolchain.contains('gcc')
visibility: "hidden"
optimization: {
if (qbs.buildVariant === "debug")
return "none";
return qbs.targetOS.contains('ios-simulator') ? "fast" : "small"
}
platformCommonCompilerFlags: base.concat(["-fvisibility-inlines-hidden", "-g", "-gdwarf-2", "-fPIE"])
commonCompilerFlags: ["-fpascal-strings", "-fexceptions", "-fasm-blocks", "-fstrict-aliasing"]
linkerFlags: base.concat(["-dead_strip", "-headerpad_max_install_names"])
Rule {
condition: !product.moduleProperty("qbs", "targetOS").contains("ios-simulator")
multiplex: true
inputs: ["qbs"]
Artifact {
fileName: product.destinationDirectory + "/"
+ BundleTools.contentsFolderPath(product)
+ "/ResourceRules.plist"
fileTags: ["resourcerules"]
}
prepare: {
var cmd = new JavaScriptCommand();
cmd.description = "generating ResourceRules";
cmd.highlight = "codegen";
cmd.sysroot = product.moduleProperty("qbs","sysroot");
cmd.sourceCode = function() {
File.copy(sysroot + "/ResourceRules.plist", outputs.resourcerules[0].fileName);
}
return cmd;
}
}
Rule {
condition: product.moduleProperty("cpp", "buildIpa")
multiplex: true
inputs: ["application", "infoplist", "pkginfo", "resourcerules", "compiled_nib"]
Artifact {
fileName: product.destinationDirectory + "/" + product.targetName + ".ipa"
fileTags: ["ipa"]
}
prepare: {
var signingIdentity = product.moduleProperty("cpp", "signingIdentity");
if (!signingIdentity)
throw "The name of a valid signing identity must be set using " +
"cpp.signingIdentity in order to build an IPA package.";
var provisioningProfile = product.moduleProperty("cpp", "provisioningProfile");
if (!provisioningProfile)
throw "The path to a provisioning profile must be set using " +
"cpp.provisioningProfile in order to build an IPA package.";
var args = ["-sdk", product.moduleProperty("cpp", "xcodeSdkName"), "PackageApplication",
"-v", product.buildDirectory + "/" + BundleTools.wrapperName(product),
"-o", outputs.ipa[0].fileName, "--sign", signingIdentity,
"--embed", provisioningProfile];
var command = "/usr/bin/xcrun";
var cmd = new Command(command, args)
cmd.description = "creating ipa, signing with " + signingIdentity;
cmd.highlight = "codegen";
cmd.workingDirectory = product.buildDirectory;
return cmd;
}
}
}
|