diff options
Diffstat (limited to 'build2/install/rule')
-rw-r--r-- | build2/install/rule | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/build2/install/rule b/build2/install/rule new file mode 100644 index 0000000..aeb7f13 --- /dev/null +++ b/build2/install/rule @@ -0,0 +1,49 @@ +// file : build2/install/rule -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD2_INSTALL_RULE +#define BUILD2_INSTALL_RULE + +#include <build2/rule> +#include <build2/types> +#include <build2/target> +#include <build2/operation> + +namespace build2 +{ + namespace install + { + class alias_rule: public rule + { + public: + virtual match_result + match (action, target&, const std::string&) const; + + virtual recipe + apply (action, target&, const match_result&) const; + }; + + class file_rule: public rule + { + public: + virtual match_result + match (action, target&, const std::string&) const; + + // Return NULL if this prerequisite should be ignored and pointer to its + // target otherwise. The default implementation ignores prerequsites that + // are outside of this target's project. + // + virtual target* + filter (action, target&, prerequisite_member) const; + + virtual recipe + apply (action, target&, const match_result&) const; + + static target_state + perform_install (action, target&); + }; + } +} + +#endif // BUILD2_INSTALL_RULE |