diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2018-03-06 09:55:22 -0800 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2018-03-09 19:18:08 -0800 |
| commit | ac8b9a13e40082d24afa1fc06757d25136a35b20 (patch) | |
| tree | 128860f2a5f12b0f452e9b347ad7085e93cf991f | |
| parent | e4372468a04c886ff3e69b8946bc57d6e7dcfd40 (diff) | |
| download | vcpkg-ac8b9a13e40082d24afa1fc06757d25136a35b20.tar.gz vcpkg-ac8b9a13e40082d24afa1fc06757d25136a35b20.zip | |
[vcpkg] Enable qualifiers to use ! for inversion
| -rw-r--r-- | toolsrc/src/vcpkg/sourceparagraph.cpp | 10 |
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()); } |
