aboutsummaryrefslogtreecommitdiff
path: root/mod/build-config.cxx
diff options
context:
space:
mode:
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;
+ }
}