aboutsummaryrefslogtreecommitdiff
path: root/mod/build-config.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-07-06 20:28:22 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-07-10 21:38:45 +0300
commit4b9be1cb87c4759ca08aa89acd9e9fd7ba5b18be (patch)
tree6a591f70c02cee552d6b97abc5d8b3958acb168d /mod/build-config.cxx
parent6a2e318a38ec57c61a6c1b9a11cdf96dffe5a63e (diff)
Add support for build include/exclude manifest values
Diffstat (limited to 'mod/build-config.cxx')
-rw-r--r--mod/build-config.cxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/mod/build-config.cxx b/mod/build-config.cxx
index 6b59e54..fed2ee9 100644
--- a/mod/build-config.cxx
+++ b/mod/build-config.cxx
@@ -146,4 +146,31 @@ namespace brep
"&cf=" + mime_url_encode (b.configuration) +
"&tc=" + b.toolchain_version.string () + "&reason=";
}
+
+ bool
+ match (const string& config_pattern, const optional<string>& target_pattern,
+ const build_config& c)
+ {
+ return path_match (config_pattern, c.name) &&
+ (!target_pattern ||
+ (c.target && path_match (*target_pattern, c.target->string ())));
+ }
+
+ bool
+ exclude (const build_package& p, const build_config& c)
+ {
+ for (const auto& bc: p.constraints)
+ {
+ if (!bc.exclusion && match (bc.config, bc.target, c))
+ return false;
+ }
+
+ for (const auto& bc: p.constraints)
+ {
+ if (bc.exclusion && match (bc.config, bc.target, c))
+ return true;
+ }
+
+ return false;
+ }
}