aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-05-22 11:31:12 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-05-23 10:13:07 +0000
commitbc8254e5423d775f162ff0b89cf2229ecd4d08a8 (patch)
tree9fcdb124c20db6c66c264c6f11cfd7263e818b91
parent4e3f44504e09c4a38298e3eeed84083c577363b2 (diff)
Qt Support: Fix dependency de-duplication
This functionality broke completely in c4e60ed828, which went unnoticed because it turned into a no-op rather than causing an error. As a result, Qt libraries tended to appear more than once on the linker command line. Task-number: QBS-1441 Change-Id: Ic2634b4501f0360a1adb13aa847e34e9d38674f7 Reviewed-by: Ola Røer Thorsen <ola@silentwings.no> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--share/qbs/module-providers/Qt/setup-qt.js22
1 files changed, 12 insertions, 10 deletions
diff --git a/share/qbs/module-providers/Qt/setup-qt.js b/share/qbs/module-providers/Qt/setup-qt.js
index b3044d72e..318a141c9 100644
--- a/share/qbs/module-providers/Qt/setup-qt.js
+++ b/share/qbs/module-providers/Qt/setup-qt.js
@@ -417,8 +417,10 @@ function makeQtModuleInfo(name, qbsName, deps) {
moduleInfo.name = "";
moduleInfo.qbsName = qbsName; // Lower-case version without "qt" prefix.
moduleInfo.dependencies = deps || []; // qbs names.
- if (moduleInfo.qbsName !== "core" && !moduleInfo.dependencies.contains("core"))
+ if (moduleInfo.qbsName && moduleInfo.qbsName !== "core"
+ && !moduleInfo.dependencies.contains("core")) {
moduleInfo.dependencies.unshift("core");
+ }
moduleInfo.isPrivate = qbsName && qbsName.endsWith("-private");
moduleInfo.hasLibrary = !moduleInfo.isPrivate;
moduleInfo.isStaticLibrary = false;
@@ -921,7 +923,7 @@ function extractPaths(rhs, filePath) {
function removeDuplicatedDependencyLibs(modules) {
var revDeps = {};
- var currentPath;
+ var currentPath = [];
var getLibraries;
var getLibFilePath;
@@ -935,9 +937,9 @@ function removeDuplicatedDependencyLibs(modules) {
var depmod = moduleByName[module.dependencies[j]];
if (!depmod)
continue;
- if (!revDeps[depmod])
- revDeps[depmod] = [];
- revDeps[depmod].push(module);
+ if (!revDeps[depmod.qbsName])
+ revDeps[depmod.qbsName] = [];
+ revDeps[depmod.qbsName].push(module);
}
}
}
@@ -946,7 +948,7 @@ function removeDuplicatedDependencyLibs(modules) {
var result = [];
for (i = 0; i < modules.length; ++i) {
var module = modules[i]
- if (module.dependencies.lenegth === 0)
+ if (module.dependencies.length === 0)
result.push(module);
}
return result;
@@ -956,7 +958,6 @@ function removeDuplicatedDependencyLibs(modules) {
if (currentPath.contains(module))
return;
currentPath.push(module);
-
var moduleLibraryLists = getLibraries(module);
for (var i = 0; i < moduleLibraryLists.length; ++i) {
var modLibList = moduleLibraryLists[i];
@@ -973,10 +974,11 @@ function removeDuplicatedDependencyLibs(modules) {
libs = libs.concat(moduleLibraryLists[i]);
libs.sort();
- for (i = 0; i < (revDeps[module] || []).length; ++i)
- traverse(revDeps[module][i], libs);
+ var deps = revDeps[module.qbsName];
+ for (i = 0; i < (deps || []).length; ++i)
+ traverse(deps[i], libs);
- m_currentPath.pop();
+ currentPath.pop();
}
setupReverseDependencies(modules);