aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/cpp/GenericGCC.qbs
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 /share/qbs/modules/cpp/GenericGCC.qbs
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>
Diffstat (limited to 'share/qbs/modules/cpp/GenericGCC.qbs')
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs9
1 files changed, 5 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]))
}
}