summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Taskmaster.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-05-08 22:56:08 (GMT)
committerSteven Knight <knight@baldmt.com>2004-05-08 22:56:08 (GMT)
commitf424fc07e9aed44d3f5df0a14d4b44081c806ff1 (patch)
tree8830c93a12c2f2919c66c0f92ec736f9b85bceda /src/engine/SCons/Taskmaster.py
parentb155ebc4a869e0669ee2f7124531e0b5950c7528 (diff)
downloadSCons-f424fc07e9aed44d3f5df0a14d4b44081c806ff1.zip
SCons-f424fc07e9aed44d3f5df0a14d4b44081c806ff1.tar.gz
SCons-f424fc07e9aed44d3f5df0a14d4b44081c806ff1.tar.bz2
Cleaner Task interface when using the -c option.
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r--src/engine/SCons/Taskmaster.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index ffdc065..e5b3548 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -167,8 +167,25 @@ class Task:
self.tm.executed(self.node)
- def make_ready(self):
- """Make a task ready for execution."""
+ def make_ready_all(self):
+ """Mark all targets in a task ready for execution.
+
+ This is used when the interface needs every target Node to be
+ visited--the canonical example being the "scons -c" option.
+ """
+ self.out_of_date = self.targets[:]
+ state = SCons.Node.executing
+ for t in self.targets:
+ for side_effect in t.side_effects:
+ side_effect.set_state(state)
+ t.set_state(state)
+
+ def make_ready_current(self):
+ """Mark all targets in a task ready for execution if any target
+ is not current.
+
+ This is the default behavior for building only what's necessary.
+ """
self.out_of_date = []
calc = self.tm.calc
if calc:
@@ -190,6 +207,8 @@ class Task:
for t in self.targets:
t.set_state(state)
+ make_ready = make_ready_current
+
def postprocess(self):
"""Post process a task after it's been executed."""
for t in self.targets: