diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-08-15 16:27:56 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-09-01 10:44:47 +0000 |
commit | e669bb02ca8f76641a94b820cbab6b6699e264c7 (patch) | |
tree | 9dd2aac001657111a139962d9074e135d93f34e5 /share | |
parent | ae52739f81974ce1f8930e9799d96f2827dc1573 (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.js | 13 | ||||
-rw-r--r-- | share/qbs/modules/cpp/DarwinGCC.qbs | 12 | ||||
-rw-r--r-- | share/qbs/modules/cpp/darwin.js | 11 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-mingw.qbs | 8 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-msvc.qbs | 7 |
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 |