diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2019-08-24 16:37:29 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2019-08-28 15:01:48 +0300 |
commit | ea24f530048cbce0c5335ca3fd3632c8ce34315a (patch) | |
tree | 3f7153cad1c3e34da5e992fe53db104512d7af71 /libbuild2/bin/rule.hxx | |
parent | d07521c67db21aa02dddf9615dce9f9f3dfe784c (diff) |
Move bin build system module to separate library
Diffstat (limited to 'libbuild2/bin/rule.hxx')
-rw-r--r-- | libbuild2/bin/rule.hxx | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libbuild2/bin/rule.hxx b/libbuild2/bin/rule.hxx new file mode 100644 index 0000000..cfd096d --- /dev/null +++ b/libbuild2/bin/rule.hxx @@ -0,0 +1,65 @@ +// file : libbuild2/bin/rule.hxx -*- C++ -*- +// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef LIBBUILD2_BIN_RULE_HXX +#define LIBBUILD2_BIN_RULE_HXX + +#include <libbuild2/types.hxx> +#include <libbuild2/utility.hxx> + +#include <libbuild2/rule.hxx> + +#include <libbuild2/bin/export.hxx> + +namespace build2 +{ + namespace bin + { + // "Fail rule" for obj{}, [h]bmi{}, and libu{} that issues diagnostics if + // someone tries to build any of these groups directly. + // + class fail_rule: public rule + { + public: + fail_rule () {} + + virtual bool + match (action, target&, const string&) const override; + + virtual recipe + apply (action, target&) const override; + }; + + // Pass-through to group members rule, similar to alias. + // + class LIBBUILD2_BIN_SYMEXPORT lib_rule: public rule + { + public: + lib_rule () {} + + virtual bool + match (action, target&, const string&) const override; + + virtual recipe + apply (action, target&) const override; + + static target_state + perform (action, const target&); + + // Return library types to build according to the bin.lib value (set + // on project's root scope by init()). + // + struct members + { + bool a; // static + bool s; // shared + }; + + static members + build_members (const scope&); + }; + } +} + +#endif // LIBBUILD2_BIN_RULE_HXX |