From ea24f530048cbce0c5335ca3fd3632c8ce34315a Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 24 Aug 2019 16:37:29 +0300 Subject: Move bin build system module to separate library --- libbuild2/bin/rule.hxx | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 libbuild2/bin/rule.hxx (limited to 'libbuild2/bin/rule.hxx') 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 +#include + +#include + +#include + +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 -- cgit v1.1