aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-03-06 09:55:22 -0800
committerRobert Schumacher <roschuma@microsoft.com>2018-03-09 19:18:08 -0800
commitac8b9a13e40082d24afa1fc06757d25136a35b20 (patch)
tree128860f2a5f12b0f452e9b347ad7085e93cf991f /toolsrc/src
parente4372468a04c886ff3e69b8946bc57d6e7dcfd40 (diff)
downloadvcpkg-ac8b9a13e40082d24afa1fc06757d25136a35b20.tar.gz
vcpkg-ac8b9a13e40082d24afa1fc06757d25136a35b20.zip
[vcpkg] Enable qualifiers to use ! for inversion
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());
}