aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/pkgconfig.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-05-04 12:32:07 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-05-04 12:32:07 +0200
commit9d45f82f821f0663a7c21c69c26d93fa0613d48a (patch)
tree19e221c41cc0f43bf3621a8f1a2a21b62470851d /libbuild2/cc/pkgconfig.cxx
parent8bae6cd94035cd5999ff2d767d91e176939ba203 (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.cxx17
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)