diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-07-06 20:28:22 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-07-10 21:38:45 +0300 |
commit | 4b9be1cb87c4759ca08aa89acd9e9fd7ba5b18be (patch) | |
tree | 6a591f70c02cee552d6b97abc5d8b3958acb168d /mod/build-config.cxx | |
parent | 6a2e318a38ec57c61a6c1b9a11cdf96dffe5a63e (diff) |
Add support for build include/exclude manifest values
Diffstat (limited to 'mod/build-config.cxx')
-rw-r--r-- | mod/build-config.cxx | 27 |
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; + } } |