aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-10-29 17:04:26 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2013-10-29 18:26:01 +0100
commit4d49aae4570ac059212d0a8ff7244b2779e0a546 (patch)
tree95b4385ad02504a67cf3656399a3f99dc47ed860
parentff6483f79d5f89f4a68f20548e6d4f38b004fb94 (diff)
Remove duplicates when transitively adding library dependencies.
When not doing that, the number of redundant linker arguments can reach enormous values rather quickly. For instance, the size of Qt Creator's build graph on Linux goes down by 10 per cent due to this change. Task-number: QBS-435 Change-Id: I772fc6a6c90696b5d0a3e0ebd65315cf0773552f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs9
-rw-r--r--share/qbs/modules/utils.js11
2 files changed, 16 insertions, 4 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs
index 9445919e4..d07c6e69d 100644
--- a/share/qbs/modules/cpp/GenericGCC.qbs
+++ b/share/qbs/modules/cpp/GenericGCC.qbs
@@ -69,9 +69,9 @@ CppModule {
var result = []
for (var i in inputs.dynamiclibrary) {
var lib = inputs.dynamiclibrary[i]
- result.push(lib.fileName)
var impliedLibs = ModUtils.moduleProperties(lib, 'transitiveSOs')
- result = result.concat(impliedLibs)
+ var libsToAdd = impliedLibs.concat([lib.fileName]);
+ result = ModUtils.uniqueConcat(result, libsToAdd);
}
return result
}
@@ -251,8 +251,9 @@ CppModule {
if (product.moduleProperty("qbs", "targetOS").contains('linux')) {
var transitiveSOs = ModUtils.modulePropertiesFromArtifacts(product, inputs.dynamiclibrary, 'cpp', 'transitiveSOs')
- for (i in transitiveSOs) {
- args.push("-Wl,-rpath-link=" + FileInfo.path(transitiveSOs[i]))
+ var uniqueSOs = ModUtils.uniqueConcat([], transitiveSOs)
+ for (i in uniqueSOs) {
+ args.push("-Wl,-rpath-link=" + FileInfo.path(uniqueSOs[i]))
}
}
diff --git a/share/qbs/modules/utils.js b/share/qbs/modules/utils.js
index 8ee1f399a..9d187d01f 100644
--- a/share/qbs/modules/utils.js
+++ b/share/qbs/modules/utils.js
@@ -136,6 +136,17 @@ function dumpObject(obj, description)
traverseObject(obj, dumpProperty)
}
+function uniqueConcat(array1, array2)
+{
+ var result = array1;
+ for (i in array2) {
+ var elem = array2[i];
+ if (result.indexOf(elem) === -1)
+ result.push(elem);
+ }
+ return result;
+}
+
//////////////////////////////////////////////////////////
// The EnvironmentVariable class