summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Taskmaster.py
diff options
context:
space:
mode:
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: