diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-03-14 15:24:09 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-03-14 16:31:51 +0100 |
commit | ae6392f90d7a1de97262d934e0150cc53ea32451 (patch) | |
tree | 1bef1e06dd379c2dd425421286fdc22c9e75b227 /share/qbs/modules/cpp | |
parent | fe1048e5b31504d525482c6fcf0298afdea6bda9 (diff) |
fix library dependency order
Autotest from the bug report added.
Task-number: QBS-524
Change-Id: I2ef3485db749424339a2ea96900e49fa5d1363d4
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'share/qbs/modules/cpp')
-rw-r--r-- | share/qbs/modules/cpp/GenericGCC.qbs | 6 | ||||
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 17 |
2 files changed, 14 insertions, 9 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs index ee5904454..342a6b70c 100644 --- a/share/qbs/modules/cpp/GenericGCC.qbs +++ b/share/qbs/modules/cpp/GenericGCC.qbs @@ -231,9 +231,9 @@ CppModule { var result = [] for (var i in inputs.staticlibrary) { var lib = inputs.staticlibrary[i] - result.push(lib.filePath) - var impliedLibs = ModUtils.moduleProperties(lib, 'staticLibraries') - result = Gcc.concatLibs(result, impliedLibs); + result = Gcc.concatLibs(result, [lib.filePath, + ModUtils.moduleProperties(lib, + 'staticLibraries')]); } return result } diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js index ace391b38..6fd5c49de 100644 --- a/share/qbs/modules/cpp/gcc.js +++ b/share/qbs/modules/cpp/gcc.js @@ -355,14 +355,19 @@ function concatLibs(libs, deplibs) { var r = []; var s = {}; - function f(e) + + function addLibs(lst) { - if (!s[e]) { - s[e] = true; - r.unshift(e); + for (var i = lst.length; --i >= 0;) { + var lib = lst[i]; + if (!s[lib]) { + s[lib] = true; + r.unshift(lib); + } } } - deplibs.forEach(f); - libs.forEach(f); + + addLibs(deplibs); + addLibs(libs); return r; } |