aboutsummaryrefslogtreecommitdiff
path: root/mod/build-config.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'mod/build-config.hxx')
-rw-r--r--mod/build-config.hxx45
1 files changed, 45 insertions, 0 deletions
diff --git a/mod/build-config.hxx b/mod/build-config.hxx
new file mode 100644
index 0000000..d5e44ce
--- /dev/null
+++ b/mod/build-config.hxx
@@ -0,0 +1,45 @@
+// file : mod/build-config.hxx -*- C++ -*-
+// license : MIT; see accompanying LICENSE file
+
+#ifndef MOD_BUILD_CONFIG_HXX
+#define MOD_BUILD_CONFIG_HXX
+
+#include <map>
+
+#include <libbpkg/manifest.hxx>
+
+#include <libbbot/build-config.hxx>
+
+#include <libbrep/types.hxx>
+#include <libbrep/utility.hxx>
+
+namespace brep
+{
+ // Return true if the specified build configuration is excluded by a package
+ // based on its underlying build class set, build class expressions, and
+ // build constraints, potentially extending the underlying set with the
+ // special classes. Set the exclusion reason if requested.
+ //
+ bool
+ exclude (const small_vector<bpkg::build_class_expr, 1>&,
+ const vector<bpkg::build_constraint>&,
+ const bbot::build_config&,
+ const std::map<string, string>& class_inheritance_map,
+ string* reason = nullptr);
+
+ // Convert dash-separated components (target, build configuration name,
+ // machine name) or a pattern thereof into a path, replacing dashes with
+ // slashes (directory separators), `**` with `*/**/*`, and appending the
+ // trailing slash for a subsequent match using the path_match()
+ // functionality (the idea here is for `linux**` to match `linux-gcc` which
+ // is quite natural to expect). Throw invalid_path if the resulting path is
+ // invalid.
+ //
+ // Note that the match_absent path match flag must be used for the above
+ // `**` transformation to work.
+ //
+ path
+ dash_components_to_path (const string&);
+}
+
+#endif // MOD_BUILD_CONFIG