aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/sourceparagraph.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/toolsrc/src/vcpkg/sourceparagraph.cpp b/toolsrc/src/vcpkg/sourceparagraph.cpp
index 2a9480538..0b4baf189 100644
--- a/toolsrc/src/vcpkg/sourceparagraph.cpp
+++ b/toolsrc/src/vcpkg/sourceparagraph.cpp
@@ -202,7 +202,15 @@ namespace vcpkg
std::vector<std::string> ret;
for (auto&& dep : deps)
{
- if (dep.qualifier.empty() || t.canonical_name().find(dep.qualifier) != std::string::npos)
+ auto qualifiers = Strings::split(dep.qualifier, "&");
+ if (std::all_of(qualifiers.begin(), qualifiers.end(), [&](const std::string& qualifier) {
+ if (qualifier.empty()) return true;
+ if (qualifier[0] == '!')
+ {
+ return t.canonical_name().find(qualifier.substr(1)) == std::string::npos;
+ }
+ return t.canonical_name().find(qualifier) != std::string::npos;
+ }))
{
ret.emplace_back(dep.name());
}