aboutsummaryrefslogtreecommitdiff
path: root/bbot/build-config
diff options
context:
space:
mode:
Diffstat (limited to 'bbot/build-config')
-rw-r--r--bbot/build-config54
1 files changed, 54 insertions, 0 deletions
diff --git a/bbot/build-config b/bbot/build-config
new file mode 100644
index 0000000..0a3ecb3
--- /dev/null
+++ b/bbot/build-config
@@ -0,0 +1,54 @@
+// file : bbot/build-config -*- C++ -*-
+// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#ifndef BBOT_BUILD_CONFIG
+#define BBOT_BUILD_CONFIG
+
+#include <string>
+#include <vector>
+#include <iosfwd>
+
+#include <butl/path>
+#include <butl/optional>
+#include <butl/tab-parser>
+#include <butl/target-triplet>
+
+#include <bbot/export>
+
+#include <bbot/variable>
+
+namespace bbot
+{
+ // Build configuration matching specific machine names. Used by bbot
+ // controllers.
+ //
+ struct build_config
+ {
+ std::string machine_pattern; // Machine name pattern.
+ std::string name; // Configuration name.
+
+ butl::optional<butl::target_triplet> target;
+
+ variables vars;
+ };
+
+ using build_configs = std::vector<build_config>;
+
+ // Parse buildtab stream or file. Throw tab_parsing on parsing error,
+ // ios::failure on the underlying OS error.
+ //
+ // buildtab consists of lines in the following format:
+ //
+ // <machine-name-pattern> <config-name> [<target>] [<config-vars>]
+ //
+ using butl::tab_parsing;
+
+ LIBBBOT_EXPORT build_configs
+ parse_buildtab (std::istream&, const std::string& name);
+
+ LIBBBOT_EXPORT build_configs
+ parse_buildtab (const butl::path&);
+}
+
+#endif // BBOT_BUILD_CONFIG