aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-08-15 16:27:56 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-09-01 10:44:47 +0000
commite669bb02ca8f76641a94b820cbab6b6699e264c7 (patch)
tree9dd2aac001657111a139962d9074e135d93f34e5 /share
parentae52739f81974ce1f8930e9799d96f2827dc1573 (diff)
Introduce property cpp.variantSuffix
This property existed already, but was only used for Darwin. It is now fully functional and has proper platform-specific default values. [ChangeLog] Debug variants of libraries now get a name suffix on Darwin and Windows when multiplexing over qbs.buildVariants. Overriding is possible via cpp.variantSuffix. Change-Id: I5763f9641ead4f6335ab1f1800b9929bf84279e3 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qbs/imports/qbs/PathTools/path-tools.js13
-rw-r--r--share/qbs/modules/cpp/DarwinGCC.qbs12
-rw-r--r--share/qbs/modules/cpp/darwin.js11
-rw-r--r--share/qbs/modules/cpp/windows-mingw.qbs8
-rw-r--r--share/qbs/modules/cpp/windows-msvc.qbs7
5 files changed, 43 insertions, 8 deletions
diff --git a/share/qbs/imports/qbs/PathTools/path-tools.js b/share/qbs/imports/qbs/PathTools/path-tools.js
index 68c37f568..b2cb63e39 100644
--- a/share/qbs/imports/qbs/PathTools/path-tools.js
+++ b/share/qbs/imports/qbs/PathTools/path-tools.js
@@ -31,14 +31,20 @@
var FileInfo = require("qbs.FileInfo");
function _bundleExecutableTemporaryFilePath(product, variantSuffix) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
return ".tmp/" + FileInfo.fileName(bundleExecutableFilePath(product, variantSuffix));
}
function bundleExecutableFilePath(product, variantSuffix) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
return product.moduleProperty("bundle", "executablePath") + (variantSuffix || "");
}
function applicationFilePath(product, variantSuffix) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
if (product.moduleProperty("bundle", "isBundle"))
return _bundleExecutableTemporaryFilePath(product, variantSuffix);
@@ -48,6 +54,8 @@ function applicationFilePath(product, variantSuffix) {
}
function loadableModuleFilePath(product, variantSuffix) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
if (product.moduleProperty("bundle", "isBundle"))
return _bundleExecutableTemporaryFilePath(product, variantSuffix);
@@ -57,6 +65,8 @@ function loadableModuleFilePath(product, variantSuffix) {
}
function staticLibraryFilePath(product, variantSuffix) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
if (product.moduleProperty("bundle", "isBundle"))
return _bundleExecutableTemporaryFilePath(product, variantSuffix);
@@ -66,6 +76,8 @@ function staticLibraryFilePath(product, variantSuffix) {
}
function dynamicLibraryFilePath(product, variantSuffix, version, maxParts) {
+ if (variantSuffix === undefined)
+ variantSuffix = product.cpp.variantSuffix;
if (product.moduleProperty("bundle", "isBundle"))
return _bundleExecutableTemporaryFilePath(product, variantSuffix);
@@ -123,6 +135,7 @@ function linkerOutputFilePath(fileTag, product, variantSuffix, version, maxParts
function importLibraryFilePath(product) {
return product.moduleProperty("cpp", "dynamicLibraryPrefix")
+ product.targetName
+ + (product.cpp.variantSuffix || "")
+ product.moduleProperty("cpp", "dynamicLibraryImportSuffix");
}
diff --git a/share/qbs/modules/cpp/DarwinGCC.qbs b/share/qbs/modules/cpp/DarwinGCC.qbs
index ec36f960d..33b5093ab 100644
--- a/share/qbs/modules/cpp/DarwinGCC.qbs
+++ b/share/qbs/modules/cpp/DarwinGCC.qbs
@@ -73,11 +73,13 @@ UnixGCC {
loadableModulePrefix: ""
loadableModuleSuffix: ".bundle"
dynamicLibrarySuffix: ".dylib"
- variantSuffix: {
- // "release" corresponds to the "normal" (non-suffixed) variant
- if (qbs.buildVariant !== "release")
- return "_" + qbs.buildVariant;
- return "";
+
+ Properties {
+ condition: product.multiplexByQbsProperties.contains("buildVariants")
+ && qbs.buildVariants && qbs.buildVariants.length > 1
+ && (!product.aggregate || !!product.multiplexConfigurationId)
+ && qbs.buildVariant !== "release"
+ variantSuffix: "_" + qbs.buildVariant
}
separateDebugInformation: true
diff --git a/share/qbs/modules/cpp/darwin.js b/share/qbs/modules/cpp/darwin.js
index 3889de8e1..484076bca 100644
--- a/share/qbs/modules/cpp/darwin.js
+++ b/share/qbs/modules/cpp/darwin.js
@@ -51,7 +51,8 @@ function lipoOutputArtifacts(product, inputs, fileTag, debugSuffix) {
filePath: product.destinationDirectory + "/.sosymbols/"
+ PathTools.dynamicLibraryFilePath(product, variant.suffix),
fileTags: ["dynamiclibrary_copy"],
- qbs: { buildVariant: variant.name, variantSuffix: variant.suffix },
+ qbs: { buildVariant: variant.name },
+ cpp: { variantSuffix: variant.suffix },
alwaysUpdated: false
};
}));
@@ -70,7 +71,9 @@ function lipoOutputArtifacts(product, inputs, fileTag, debugSuffix) {
// Finder/LaunchServices can launch it normally but for simplicity we'll just use the symlink
// approach for all bundle types.
var defaultVariant;
- if (!buildVariants.some(function (x) { return x.name === "release"; })) {
+ if (!buildVariants.some(function (x) { return x.name === "release"; })
+ && product.multiplexByQbsProperties.contains("buildVariants")
+ && product.qbs.buildVariants && product.qbs.buildVariants.length > 1) {
var defaultBuildVariant = product.qbs.defaultBuildVariant;
buildVariants.map(function (variant) {
if (variant.name === defaultBuildVariant)
@@ -103,7 +106,6 @@ function lipoOutputArtifacts(product, inputs, fileTag, debugSuffix) {
fileTags: tags,
qbs: {
buildVariant: variant.name,
- variantSuffix: variant.suffix,
_buildVariantFileName: variant.isSymLink && defaultVariant
? FileInfo.fileName(PathTools.linkerOutputFilePath(
fileTag, product,
@@ -113,6 +115,9 @@ function lipoOutputArtifacts(product, inputs, fileTag, debugSuffix) {
bundle: {
_bundleFilePath: product.destinationDirectory + "/"
+ PathTools.bundleExecutableFilePath(product, variant.suffix)
+ },
+ cpp: {
+ variantSuffix: variant.suffix
}
};
}));
diff --git a/share/qbs/modules/cpp/windows-mingw.qbs b/share/qbs/modules/cpp/windows-mingw.qbs
index 2fe96495e..f09c4dd22 100644
--- a/share/qbs/modules/cpp/windows-mingw.qbs
+++ b/share/qbs/modules/cpp/windows-mingw.qbs
@@ -49,6 +49,14 @@ GenericGCC {
platformDefines: base.concat(WindowsUtils.characterSetDefines(windowsApiCharacterSet))
.concat("WIN32")
+ Properties {
+ condition: product.multiplexByQbsProperties.contains("buildVariants")
+ && qbs.buildVariants && qbs.buildVariants.length > 1
+ && qbs.buildVariant !== "release"
+ && product.type.containsAny(["staticlibrary", "dynamiclibrary"])
+ variantSuffix: "d"
+ }
+
property string windresName: 'windres'
property path windresPath: { return toolchainPathPrefix + windresName }
diff --git a/share/qbs/modules/cpp/windows-msvc.qbs b/share/qbs/modules/cpp/windows-msvc.qbs
index 426978055..5736a071a 100644
--- a/share/qbs/modules/cpp/windows-msvc.qbs
+++ b/share/qbs/modules/cpp/windows-msvc.qbs
@@ -118,6 +118,13 @@ CppModule {
debugInfoSuffix: ".pdb"
property string dynamicLibraryImportSuffix: ".lib"
imageFormat: "pe"
+ Properties {
+ condition: product.multiplexByQbsProperties.contains("buildVariants")
+ && qbs.buildVariants && qbs.buildVariants.length > 1
+ && qbs.buildVariant !== "release"
+ && product.type.containsAny(["staticlibrary", "dynamiclibrary"])
+ variantSuffix: "d"
+ }
property var buildEnv: msvcProbe.buildEnv