From 10596d7eb5edb6dbeeedccfd1fa2df81141adda4 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 5 Jun 2018 15:15:11 +0200 Subject: Fix library order --- backend/ninja/Ninja.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'backend/ninja/Ninja.cpp') diff --git a/backend/ninja/Ninja.cpp b/backend/ninja/Ninja.cpp index 45fb9cb..ec6a237 100644 --- a/backend/ninja/Ninja.cpp +++ b/backend/ninja/Ninja.cpp @@ -428,26 +428,24 @@ namespace backend allLinkerFlags += " "; allLinkerFlags += binaryDependency; } + + vector linkerFlags; - string staticLinkerFlags; auto parentProjStaticLinkerFlagCallbackFunc = staticLinkerFlagCallbackFunc; if (!staticLinkerFlagCallbackFunc || libraryType == LibraryType::DYNAMIC) { - staticLinkerFlagCallbackFunc = [&staticLinkerFlags](const string &linkerFlag) + staticLinkerFlagCallbackFunc = [&linkerFlags](const string &linkerFlag) { - staticLinkerFlags += " "; - staticLinkerFlags += linkerFlag; + linkerFlags.push_back(linkerFlag); }; } - string dynamicLinkerFlags; auto parentProjDynamicLinkerFlagCallbackFunc = dynamicLinkerFlagCallback; if(!dynamicLinkerFlagCallback || libraryType != LibraryType::STATIC) { - dynamicLinkerFlagCallback = [&dynamicLinkerFlags](const string &linkerFlag) + dynamicLinkerFlagCallback = [&linkerFlags](const string &linkerFlag) { - dynamicLinkerFlags += " "; - dynamicLinkerFlags += linkerFlag; + linkerFlags.push_back(linkerFlag); }; } @@ -462,11 +460,15 @@ namespace backend if(!buildSubProjectResult) return buildSubProjectResult; - Result linkerFlags = getLinkerFlags(config, staticLinkerFlagCallbackFunc, dynamicLinkerFlagCallback, globalIncludeDirCallback, cflagsCallbackFunc); - if (linkerFlags.isErr()) - return Result::Err(linkerFlags.getErrMsg()); + Result linkerFlagsResult = getLinkerFlags(config, staticLinkerFlagCallbackFunc, dynamicLinkerFlagCallback, globalIncludeDirCallback, cflagsCallbackFunc); + if (linkerFlagsResult.isErr()) + return Result::Err(linkerFlagsResult.getErrMsg()); - allLinkerFlags += staticLinkerFlags + dynamicLinkerFlags; + for(vector::reverse_iterator it = linkerFlags.rbegin(), end = linkerFlags.rend(); it != end; ++it) + { + allLinkerFlags += " "; + allLinkerFlags += *it; + } result += dependencyExportIncludeDirs; result += "\n\n"; -- cgit v1.2.3