diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-04-13 13:55:00 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-04-13 13:55:00 +0200 |
commit | 894813b993963de006d0a8aa7480b0403daaa87a (patch) | |
tree | bfc4f5a57da17089f93da5035e1d156b5adebd54 /libbuild2/cli/rule.hxx | |
parent | e9a3804c2ea5972dd84a7d4759d4ea965c2490fb (diff) |
Move cli module to libbuild2-cli library
This is a temporary measure (until we unboundle this module) needed for
in-process configure support in bpkg.
Diffstat (limited to 'libbuild2/cli/rule.hxx')
-rw-r--r-- | libbuild2/cli/rule.hxx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libbuild2/cli/rule.hxx b/libbuild2/cli/rule.hxx new file mode 100644 index 0000000..0132b44 --- /dev/null +++ b/libbuild2/cli/rule.hxx @@ -0,0 +1,46 @@ +// file : libbuild2/cli/rule.hxx -*- C++ -*- +// license : MIT; see accompanying LICENSE file + +#ifndef LIBBUILD2_CLI_RULE_HXX +#define LIBBUILD2_CLI_RULE_HXX + +#include <libbuild2/types.hxx> +#include <libbuild2/utility.hxx> + +#include <libbuild2/rule.hxx> + +#include <libbuild2/cli/export.hxx> + +namespace build2 +{ + namespace cli + { + // Cached data shared between rules and the module. + // + struct data + { + const exe& ctgt; // CLI compiler target. + const string& csum; // CLI compiler checksum. + }; + + // @@ Redo as two separate rules? + // + class LIBBUILD2_CLI_SYMEXPORT compile_rule: public simple_rule, + private virtual data + { + public: + compile_rule (data&& d): data (move (d)) {} + + virtual bool + match (action, target&) const override; + + virtual recipe + apply (action, target&) const override; + + target_state + perform_update (action, const target&) const; + }; + } +} + +#endif // LIBBUILD2_CLI_RULE_HXX |