diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2021-05-04 12:32:07 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2021-05-04 12:32:07 +0200 |
commit | 9d45f82f821f0663a7c21c69c26d93fa0613d48a (patch) | |
tree | 19e221c41cc0f43bf3621a8f1a2a21b62470851d /libbuild2/cc/pkgconfig.cxx | |
parent | 8bae6cd94035cd5999ff2d767d91e176939ba203 (diff) |
Handle duplicate suppression of multi-element libraries (-l foo)
See GitHub issue #114 for context.
Diffstat (limited to 'libbuild2/cc/pkgconfig.cxx')
-rw-r--r-- | libbuild2/cc/pkgconfig.cxx | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libbuild2/cc/pkgconfig.cxx b/libbuild2/cc/pkgconfig.cxx index d44b0ec..671a51a 100644 --- a/libbuild2/cc/pkgconfig.cxx +++ b/libbuild2/cc/pkgconfig.cxx @@ -1635,11 +1635,11 @@ namespace build2 bool priv (false); auto imp = [&priv] (const target&, bool la) {return priv && la;}; - auto lib = [&save_library_target, - &save_library_name] (const target* const* lc, - const string& p, - lflags, - bool) + auto lib = [&save_library_target, &save_library_name] ( + const target* const* lc, + const small_vector<reference_wrapper<const string>, 2>& ns, + lflags, + bool) { const file* l (lc != nullptr ? &(*lc)->as<file> () : nullptr); @@ -1649,7 +1649,12 @@ namespace build2 save_library_target (*l); } else - save_library_name (p); // Something "system'y", save as is. + { + // Something "system'y", save as is. + // + for (const string& n: ns) + save_library_name (n); + } }; auto opt = [] (const target&, const string&, bool, bool) |