diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-29 17:04:26 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-29 18:26:01 +0100 |
commit | 4d49aae4570ac059212d0a8ff7244b2779e0a546 (patch) | |
tree | 95b4385ad02504a67cf3656399a3f99dc47ed860 /share/qbs/modules/cpp/GenericGCC.qbs | |
parent | ff6483f79d5f89f4a68f20548e6d4f38b004fb94 (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.qbs | 9 |
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])) } } |