blob: 4c22b5eb712dfb918d6246ffb891dd7d728a31fc (
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
|
import qbs.FileInfo
import qbs.Utilities
Module {
Depends {
condition: project.withCode
name: "cpp"
}
property bool enableAddressSanitizer: false
property bool enableUbSanitizer: false
property bool enableThreadSanitizer: false
property bool enableUnitTests: false
property bool enableProjectFileUpdates: true
property bool enableRPath: true
property bool installApiHeaders: true
property bool enableBundledQt: false
property bool staticBuild: false
property string libDirName: "lib"
property string appInstallDir: "bin"
property string libInstallDir: qbs.targetOS.contains("windows") ? "bin" : libDirName
property string importLibInstallDir: libDirName
property string libexecInstallDir: qbs.targetOS.contains("windows") ? appInstallDir
: "libexec/qbs"
property string systemSettingsDir
property bool installManPage: qbs.targetOS.contains("unix")
property bool installHtml: true
property bool installQch: false
property bool generatePkgConfigFiles: installApiHeaders && qbs.targetOS.contains("unix")
&& !qbs.targetOS.contains("darwin")
property bool generateQbsModules: installApiHeaders
property string docInstallDir: "share/doc/qbs/html"
property string pkgConfigInstallDir: FileInfo.joinPaths(libDirName, "pkgconfig")
property string qbsModulesBaseDir: FileInfo.joinPaths(libDirName, "qbs", "modules")
property string relativeLibexecPath: "../" + libexecInstallDir
property string relativePluginsPath: "../" + libDirName
property string relativeSearchPath: ".."
property stringList libRPaths: {
if (enableRPath && project.withCode && cpp.rpathOrigin && product.targetInstallDir) {
return [FileInfo.joinPaths(cpp.rpathOrigin, FileInfo.relativePath(
FileInfo.joinPaths('/', product.targetInstallDir),
FileInfo.joinPaths('/', libDirName)))];
}
return [];
}
property string resourcesInstallDir: ""
property string pluginsInstallDir: libDirName + "/qbs/plugins"
property string qmlTypeDescriptionsInstallDir: FileInfo.joinPaths(resourcesInstallDir,
"share/qbs/qml-type-descriptions")
property bool dumpJsLeaks: qbs.buildVariant === "debug"
Properties {
condition: project.withCode && qbs.toolchain.contains("gcc")
cpp.cxxFlags: {
var flags = ["-Wno-missing-field-initializers"];
if (enableAddressSanitizer)
flags.push("-fno-omit-frame-pointer");
function isClang() { return qbs.toolchain.contains("clang"); }
function versionAtLeast(v) {
return Utilities.versionCompare(cpp.compilerVersion, v) >= 0;
};
if (isClang())
flags.push("-Wno-constant-logical-operand");
if ((!isClang() && versionAtLeast("9"))
|| (isClang() && !qbs.hostOS.contains("darwin") && versionAtLeast("10"))) {
flags.push("-Wno-deprecated-copy");
}
return flags;
}
cpp.driverFlags: {
var flags = [];
if (enableAddressSanitizer)
flags.push("-fsanitize=address");
if (enableUbSanitizer) {
flags.push("-fsanitize=undefined");
flags.push("-fno-sanitize=vptr");
}
if (enableThreadSanitizer)
flags.push("-fsanitize=thread");
return flags;
}
}
Properties {
condition: project.withCode && qbs.toolchain.contains("msvc") && product.Qt
&& Utilities.versionCompare(product.Qt.core.version, "6.3") >= 0
&& Utilities.versionCompare(cpp.compilerVersion, "19.10") >= 0
&& Utilities.versionCompare(qbs.version, "1.23") < 0
cpp.cxxFlags: "/permissive-"
}
}
|