=== modified file 'wafadmin/Build.py'--- wafadmin/Build.py 2008-12-13 05:23:28 +0000+++ wafadmin/Build.py 2008-12-13 19:48:06 +0000@@ -589,6 +589,7 @@ debug('build: delayed operation TaskGen.flush() called')+ posted_objects = [] if Options.options.compile_targets: debug('task_gen: posting objects listed in compile_targets')@@ -610,6 +611,7 @@ for target_obj in target_objects.values(): for x in target_obj: x.post()+ posted_objects.append(x) else: debug('task_gen: posting objects (normal)') ln = self.launch_node()@@ -620,6 +622,9 @@ for obj in self.all_task_gen: if not obj.path.is_child_of(ln): continue obj.post()+ posted_objects.append(obj)+ self._apply_automatic_deps(posted_objects)+ def env_of_name(self, name): if not name:@@ -801,3 +806,21 @@ f.write(s) f.flush()+ def _apply_automatic_deps(self, posted_objects):+ print "apply_automatic_deps", posted_objects+ generating_tasks = {} # map out_node -> task that generates the node+ for taskgen in posted_objects:+ for task in taskgen.tasks:+ for node in task.outputs:+ assert node.id not in generating_tasks+ generating_tasks[node.id] = task+ + for taskgen in posted_objects:+ for task in taskgen.tasks:+ for node in task.inputs:+ try:+ preceding_task = generating_tasks[node.id]+ except KeyError:+ continue+ print "task %r generates node %r needed by task %r" % (preceding_task, node, task)+ task.set_run_after(preceding_task)