diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-03-19 06:39:00 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-03-19 06:41:14 +0100 |
commit | b44ff4ec7d2c2458aab04b5daf79134e5d284f6e (patch) | |
tree | bf9aeda4e95c333f0da049d3b194ed994a20ec21 /backend/ninja | |
parent | 2a8f23ff8aa29514d8e003ecce1808aa242af292 (diff) |
Fix compile error when having dependency on static library that has
dependency on dynamic libraries
Static libraries need to be defined before dynamic libraries when
building executable, otherwise you get linking error
Diffstat (limited to 'backend/ninja')
-rw-r--r-- | backend/ninja/Ninja.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/backend/ninja/Ninja.cpp b/backend/ninja/Ninja.cpp index 044fb64..fb081de 100644 --- a/backend/ninja/Ninja.cpp +++ b/backend/ninja/Ninja.cpp @@ -411,23 +411,25 @@ namespace backend allLinkerFlags += " "; allLinkerFlags += binaryDependency; } - + + string staticLinkerFlags; if (!staticLinkerFlagCallbackFunc || libraryType == LibraryType::DYNAMIC) { - staticLinkerFlagCallbackFunc = [&allLinkerFlags](const string &linkerFlag) + staticLinkerFlagCallbackFunc = [&staticLinkerFlags](const string &linkerFlag) { - allLinkerFlags += " "; - allLinkerFlags += linkerFlag; + staticLinkerFlags += " "; + staticLinkerFlags += linkerFlag; }; } + string dynamicLinkerFlags; // TODO: Do same for cmake if (!sourceFiles.empty()) { - dynamicLinkerFlagCallback = [&allLinkerFlags](const string &linkerFlag) + dynamicLinkerFlagCallback = [&dynamicLinkerFlags](const string &linkerFlag) { - allLinkerFlags += " "; - allLinkerFlags += linkerFlag; + dynamicLinkerFlags += " "; + dynamicLinkerFlags += linkerFlag; }; } @@ -441,6 +443,8 @@ namespace backend Result<bool> linkerFlags = getLinkerFlags(config, staticLinkerFlagCallbackFunc, dynamicLinkerFlagCallback, globalIncludeDirCallback, cflagsCallbackFunc); if (linkerFlags.isErr()) return Result<bool>::Err(linkerFlags.getErrMsg()); + + allLinkerFlags += staticLinkerFlags + dynamicLinkerFlags; result += dependencyExportIncludeDirs; result += "\n\n"; |