diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-05-22 11:31:12 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-05-23 10:13:07 +0000 |
commit | bc8254e5423d775f162ff0b89cf2229ecd4d08a8 (patch) | |
tree | 9fcdb124c20db6c66c264c6f11cfd7263e818b91 | |
parent | 4e3f44504e09c4a38298e3eeed84083c577363b2 (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.js | 22 |
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); |