aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/adhoc-rule-buildscript.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/adhoc-rule-buildscript.hxx')
-rw-r--r--libbuild2/adhoc-rule-buildscript.hxx59
1 files changed, 55 insertions, 4 deletions
diff --git a/libbuild2/adhoc-rule-buildscript.hxx b/libbuild2/adhoc-rule-buildscript.hxx
index 748a4c4..336dceb 100644
--- a/libbuild2/adhoc-rule-buildscript.hxx
+++ b/libbuild2/adhoc-rule-buildscript.hxx
@@ -25,6 +25,9 @@ namespace build2
virtual bool
reverse_fallback (action, const target_type&) const override;
+ virtual bool
+ match (action, target&, const string&, match_extra&) const override;
+
virtual recipe
apply (action, target&, match_extra&) const override;
@@ -33,7 +36,41 @@ namespace build2
const optional<timestamp>&) const override;
target_state
- perform_update_file (action, const target&) const;
+ perform_update_file_or_group (action, const target&) const;
+
+ struct match_data;
+ struct match_data_byproduct;
+
+ target_state
+ perform_update_file_or_group_dyndep (
+ action, const target&, match_data&) const;
+
+ target_state
+ perform_update_file_or_group_dyndep_byproduct (
+ action, const target&, match_data_byproduct&) const;
+
+ optional<target_state>
+ execute_update_prerequisites (action, const target&, timestamp) const;
+
+ bool
+ execute_update_file (const scope&,
+ action a, const file&,
+ build::script::environment&,
+ build::script::default_runner&,
+ bool deferred_failure = false) const;
+
+ bool
+ execute_update_group (const scope&,
+ action a, const group&,
+ build::script::environment&,
+ build::script::default_runner&,
+ bool deferred_failure = false) const;
+
+ static target_state
+ perform_clean_file (action, const target&);
+
+ static target_state
+ perform_clean_group (action, const target&);
target_state
default_action (action, const target&, const optional<timestamp>&) const;
@@ -42,7 +79,10 @@ namespace build2
: adhoc_rule (move (n), l, b) {}
virtual bool
- recipe_text (const scope&, string&&, attributes&) override;
+ recipe_text (const scope&,
+ const target_type&,
+ string&&,
+ attributes&) override;
virtual void
dump_attributes (ostream&) const override;
@@ -50,11 +90,22 @@ namespace build2
virtual void
dump_text (ostream&, string&) const override;
+ void
+ print_custom_diag (const scope&, names&&, const location&) const;
+
public:
using script_type = build::script::script;
- script_type script;
- string checksum; // Script text hash.
+ // The prerequisite_target::include bits that indicate update=unmatch and
+ // an ad hoc version of that.
+ //
+ static const uintptr_t include_unmatch = 0x100;
+ static const uintptr_t include_unmatch_adhoc = 0x200;
+
+
+ script_type script;
+ string checksum; // Script text hash.
+ const target_type* ttype; // First target/pattern type.
};
}