aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/bin/utility.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/bin/utility.hxx')
-rw-r--r--libbuild2/bin/utility.hxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/libbuild2/bin/utility.hxx b/libbuild2/bin/utility.hxx
new file mode 100644
index 0000000..cc2b727
--- /dev/null
+++ b/libbuild2/bin/utility.hxx
@@ -0,0 +1,47 @@
+// file : libbuild2/bin/utility.hxx -*- C++ -*-
+// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#ifndef LIBBUILD2_BIN_UTILITY_HXX
+#define LIBBUILD2_BIN_UTILITY_HXX
+
+#include <libbuild2/types.hxx>
+#include <libbuild2/utility.hxx>
+
+#include <libbuild2/scope.hxx>
+#include <libbuild2/variable.hxx>
+
+namespace build2
+{
+ namespace bin
+ {
+ // Lookup the bin.pattern value and split it into the pattern and the
+ // search paths.
+ //
+ struct pattern_paths
+ {
+ const char* pattern = nullptr;
+ const char* paths = nullptr;
+ };
+
+ inline pattern_paths
+ lookup_pattern (const scope& rs)
+ {
+ pattern_paths r;
+
+ // Theoretically, we could have both the pattern and the search paths,
+ // for example, the pattern can come first followed by the paths.
+ //
+ if (const string* v = cast_null<string> (rs["bin.pattern"]))
+ {
+ (path::traits_type::is_separator (v->back ())
+ ? r.paths
+ : r.pattern) = v->c_str ();
+ }
+
+ return r;
+ }
+ }
+}
+
+#endif // LIBBUILD2_BIN_UTILITY_HXX