WAF: use a separate 'waf task' for installing each public ns3 header to work around a dependency tracking bug in waf causing too many rebuilds when a single header file changes.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Fri, 20 Jul 2007 11:27:34 +0100
changeset 954 a54d59850d03
parent 953 e3b9f87fb76c
child 955 c9be0df711d2
WAF: use a separate 'waf task' for installing each public ns3 header to work around a dependency tracking bug in waf causing too many rebuilds when a single header file changes.
src/wscript
--- a/src/wscript	Fri Jul 20 11:12:43 2007 +0100
+++ b/src/wscript	Fri Jul 20 11:27:34 2007 +0100
@@ -37,7 +37,7 @@
 
 def build(bld):
     Object.register('ns3header', Ns3Header)
-    Action.Action('ns3_headers', func=_ns3_headers_inst, color='BLUE')
+    Action.Action('ns3header', func=_ns3_headers_inst, color='BLUE')
     
     bld.add_subdirs(all_modules)
 
@@ -54,19 +54,15 @@
 
     def apply(self):
         ns3_dir_node = Params.g_build.m_srcnode.find_dir("ns3")
-        inputs = []
-        outputs = []
         for filename in self.to_list(self.source):
             src_node = self.path.find_source(filename)
             if src_node is None:
                 Params.fatal("source ns3 header file %s not found" % (filename,))
             dst_node = ns3_dir_node.find_build(os.path.basename(filename))
             assert dst_node is not None
-            inputs.append(src_node)
-            outputs.append(dst_node)
-        task = self.create_task('ns3_headers', self.env, 1)
-        task.set_inputs(inputs)
-        task.set_outputs(outputs)
+            task = self.create_task('ns3header', self.env, 1)
+            task.set_inputs([src_node])
+            task.set_outputs([dst_node])
 
     def install(self):
         for i in self.m_tasks: