aboutsummaryrefslogtreecommitdiff
path: root/build/target.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-03-13 14:34:24 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-03-13 14:34:24 +0200
commitca41ca8f9a6b21588248e5fee1a013363f3f52a8 (patch)
tree6e791ddac1c6f794273a9701c0c7f1bc9ec3d000 /build/target.cxx
parent0cee33621a93d3348a1bf19a0c94441b717cbcbc (diff)
Add support for "first" and "last" execution modes
Diffstat (limited to 'build/target.cxx')
-rw-r--r--build/target.cxx17
1 files changed, 12 insertions, 5 deletions
diff --git a/build/target.cxx b/build/target.cxx
index 15d57ca..347a382 100644
--- a/build/target.cxx
+++ b/build/target.cxx
@@ -16,11 +16,6 @@ namespace build
{
// recipe
//
- const recipe empty_recipe;
- const recipe noop_recipe (&noop_recipe_function);
- const recipe default_recipe (
- static_cast<recipe_function*> (&execute_prerequisites));
-
target_state
noop_recipe_function (action, target&)
{
@@ -28,6 +23,18 @@ namespace build
return target_state::unchanged;
}
+ static target_state
+ default_recipe_function (action a, target& t)
+ {
+ return current_mode == execution_mode::first
+ ? execute_prerequisites (a, t)
+ : reverse_execute_prerequisites (a, t);
+ }
+
+ const recipe empty_recipe;
+ const recipe noop_recipe (&noop_recipe_function);
+ const recipe default_recipe (&default_recipe_function);
+
// target
//
ostream&