aboutsummaryrefslogtreecommitdiff
path: root/build/config/operation.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-07-20 17:35:47 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-07-20 17:35:47 +0200
commitcb8399da1f0b1c5f28e443c98bfc3cb4e12b8cbf (patch)
tree434f2137e8ccac53bf6ec8a62bab501363d898f4 /build/config/operation.cxx
parentf0aca8db08518ab7f66a8c86200616fed8bcc8d4 (diff)
Implement pre/post operation support
Also, extend execution mode/postponed logic to propagate the postponed target state. At the top, we now re-try postponed targets. This results in the expected behavior when, for example, cleaning two targets with one depending on the other.
Diffstat (limited to 'build/config/operation.cxx')
-rw-r--r--build/config/operation.cxx16
1 files changed, 10 insertions, 6 deletions
diff --git a/build/config/operation.cxx b/build/config/operation.cxx
index 48d4d19..a79ddbf 100644
--- a/build/config/operation.cxx
+++ b/build/config/operation.cxx
@@ -215,6 +215,7 @@ namespace build
nullptr, // meta-operation pre
&configure_operation_pre,
&load, // normal load
+ &search, // normal search
&match, // normal match
&configure_execute,
nullptr, // operation post
@@ -244,17 +245,19 @@ namespace build
}
static void
- disfigure_match (action,
- scope& root,
- const target_key&,
- const location&,
- action_targets& ts)
+ disfigure_search (scope& root,
+ const target_key&,
+ const location&,
+ action_targets& ts)
{
- tracer trace ("disfigure_match");
+ tracer trace ("disfigure_search");
level5 ([&]{trace << "collecting " << root.path ();});
ts.push_back (&root);
}
+ static void
+ disfigure_match (action, action_targets&) {}
+
static bool
disfigure_project (action a, scope& root)
{
@@ -403,6 +406,7 @@ namespace build
nullptr, // meta-operation pre
&disfigure_operation_pre,
&disfigure_load,
+ &disfigure_search,
&disfigure_match,
&disfigure_execute,
nullptr, // operation post