aboutsummaryrefslogtreecommitdiff
path: root/build/algorithm.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-03-13 10:38:11 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-03-13 10:38:11 +0200
commit0cee33621a93d3348a1bf19a0c94441b717cbcbc (patch)
tree1f017e61794f705d9c0b872df108170cc4576b77 /build/algorithm.cxx
parentcf6b3e34b59ad120111e0c1ead779bbb3a70c38d (diff)
Add postponed recipe execution support
Diffstat (limited to 'build/algorithm.cxx')
-rw-r--r--build/algorithm.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/build/algorithm.cxx b/build/algorithm.cxx
index cccda49..776ea3e 100644
--- a/build/algorithm.cxx
+++ b/build/algorithm.cxx
@@ -176,6 +176,7 @@ namespace build
switch (target_state ts = t.state)
{
case target_state::unknown:
+ case target_state::postponed:
{
t.state = target_state::failed; // So the rule can just throw.
@@ -196,7 +197,8 @@ namespace build
}
case target_state::unchanged:
case target_state::changed:
- assert (false); // Should have been handled by inline execute().
+ // Should have been handled by inline execute().
+ assert (false);
case target_state::failed:
throw failed ();
}
@@ -214,7 +216,7 @@ namespace build
target& pt (*p.target);
- if (execute (a, pt) != target_state::unchanged)
+ if (execute (a, pt) == target_state::changed)
ts = target_state::changed;
}