diff options
author | Steven Knight <knight@baldmt.com> | 2005-09-26 01:26:52 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-09-26 01:26:52 (GMT) |
commit | 6983d042ff273c227c0a4790408a5e8eed013c3d (patch) | |
tree | 7b1f926ff044202c7dcdaf365e12a8a10e3d3b39 /src | |
parent | 84a9db490a2e30a4f2697f71f062569331ea4727 (diff) | |
download | SCons-6983d042ff273c227c0a4790408a5e8eed013c3d.zip SCons-6983d042ff273c227c0a4790408a5e8eed013c3d.tar.gz SCons-6983d042ff273c227c0a4790408a5e8eed013c3d.tar.bz2 |
Check all targets when deciding if a target is up to date. (Patrick Mezard)
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 6 | ||||
-rw-r--r-- | src/engine/SCons/Script/Main.py | 29 |
2 files changed, 22 insertions, 13 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 7922bcc..7656c6b 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -375,6 +375,12 @@ RELEASE 0.97 - XXX - Improve SWIG tests for use on Mac OS X (Darwin). + From Patrick Mezard: + + - Execute build commands for a command-line target if any of the + files built along with the target is out of date or non-existent, + not just if the command-line target itself is out of date. + From Georg Mischler: - Remove the space after the -o option when invoking the Borland diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 67b3308..a5e07b4 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -79,19 +79,22 @@ class BuildTask(SCons.Taskmaster.Task): display('scons: ' + message) def execute(self): - target = self.targets[0] - if target.get_state() == SCons.Node.up_to_date: + for target in self.targets: + if target.get_state() == SCons.Node.up_to_date: + continue + if target.has_builder() and not hasattr(target.builder, 'status'): + if print_time: + start_time = time.time() + SCons.Taskmaster.Task.execute(self) + if print_time: + finish_time = time.time() + global command_time + command_time = command_time+finish_time-start_time + print "Command execution time: %f seconds"%(finish_time-start_time) + break + else: if self.top and target.has_builder(): display("scons: `%s' is up to date." % str(self.node)) - elif target.has_builder() and not hasattr(target.builder, 'status'): - if print_time: - start_time = time.time() - SCons.Taskmaster.Task.execute(self) - if print_time: - finish_time = time.time() - global command_time - command_time = command_time+finish_time-start_time - print "Command execution time: %f seconds"%(finish_time-start_time) def do_failed(self, status=2): global exit_status @@ -1187,7 +1190,7 @@ def _main(args, parser): nodes = filter(None, map(Entry, targets)) - task_class = BuildTask # default action is to build targets + task_class = BuildTask # default action is to build targets opening_message = "Building targets ..." closing_message = "done building targets." if keep_going_on_error: @@ -1277,7 +1280,7 @@ def main(): global exit_status try: - _exec_main() + _exec_main() except SystemExit, s: if s: exit_status = s |