WAF: convert code to WAF 1.4 API; the 'waf' script bundle will be updated later, for now has been disabled.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Sat, 26 Apr 2008 21:54:36 +0100
changeset 3001 f7aa2796627f
parent 2990 69ddc1c42130
child 3002 3f851016493d
WAF: convert code to WAF 1.4 API; the 'waf' script bundle will be updated later, for now has been disabled.
src/wscript
waf
wscript
--- a/src/wscript	Mon Apr 21 17:31:01 2008 +0100
+++ b/src/wscript	Sat Apr 26 21:54:36 2008 +0100
@@ -69,33 +69,27 @@
     
 
 def build(bld):
-    Object.register('ns3header', Ns3Header)
+    #Object.register('ns3header', Ns3Header)
     Action.Action('ns3header', func=_ns3_headers_inst, color='BLUE')
-    Object.register('ns3-module-header', Ns3ModuleHeader)
+    #Object.register('ns3-module-header', Ns3ModuleHeader)
     Action.Action('gen-ns3-module-header', func=gen_ns3_module_header, color='BLUE')
     bld.create_ns3_module = types.MethodType(create_ns3_module, bld)
     
     bld.add_subdirs(list(all_modules))
 
     for module in all_modules:
-        modheader = bld.create_obj('ns3-module-header')
+        modheader = bld.create_obj('ns3moduleheader')
         modheader.module = module.split('/')[-1]
 
 
-class Ns3Header(Object.genobj):
+class ns3header_taskgen(Object.task_gen):
     """A set of NS-3 header files"""
-    def __init__(self, env=None):
-        Object.genobj.__init__(self, 'ns3header')
+    def __init__(self, *features):
+        Object.task_gen.__init__(self, *features)
         self.inst_var = 'INCLUDEDIR'
         self.inst_dir = 'ns3'
         self.sub_dir = None # if not None, header files will be published as ns3/sub_dir/file.h
         self.module = None # module name
-        self.env = env
-        if not self.env:
-            self.env = Params.g_build.m_allenvs['default']
-
-    def get_valid_types(self):
-        return ['ns3header']
 
     def apply(self):
         if self.module is None:
@@ -169,17 +163,13 @@
     return 0
 
 
-class Ns3ModuleHeader(Object.genobj):
+class ns3moduleheader_taskgen(Object.task_gen):
     """
     Generates a 'ns3/foo-module.h' header file that includes all
     public ns3 headers of a certain module.
     """
-    def __init__(self, env=None):
-        Object.genobj.__init__(self, 'other')
-        self.install_var = 0
-        self.env = env
-        if not self.env:
-            self.env = Params.g_build.m_allenvs['default'].copy()
+    def __init__(self, *features):
+        Object.task_gen.__init__(self, *features)
         self.module_name = None
 
     def apply(self):
@@ -187,7 +177,7 @@
         ns3_dir_node = Params.g_build.m_srcnode.find_dir("ns3")
         all_headers_inputs = []
         for ns3headers in Object.g_allobjs:
-            if ns3headers.m_type == 'ns3header':
+            if isinstance(ns3headers, ns3header_taskgen):
                 if ns3headers.module != self.module:
                     continue
                 for source in ns3headers.to_list(ns3headers.source):
--- a/waf	Mon Apr 21 17:31:01 2008 +0100
+++ b/waf	Sat Apr 26 21:54:36 2008 +0100
@@ -2,6 +2,9 @@
 # encoding: utf-8
 # Thomas Nagy, 2005-2008
 
+raise RuntimeError("Sorry, this ns-3 branch temporarily requires WAF trunk (or 1.4.1);"
+                   " I will update the WAF script later...")
+
 """
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
--- a/wscript	Mon Apr 21 17:31:01 2008 +0100
+++ b/wscript	Sat Apr 26 21:54:36 2008 +0100
@@ -6,9 +6,11 @@
 import optparse
 import os.path
 
+import pproc as subprocess
+
 import Params
 import Object
-import pproc as subprocess
+import ccroot
 
 Params.g_autoconfig = 1
 
@@ -218,6 +220,7 @@
 
 def create_ns3_program(bld, name, dependencies=('simulator',)):
     program = bld.create_obj('cpp', 'program')
+    program.is_ns3_program = True
     program.name = name
     program.target = program.name
     program.uselib_local = 'ns3'
@@ -351,7 +354,7 @@
                        # --enable-modules=xxx
         pass
     else:
-        prog = program_obj.path.find_build(program_obj.get_target_name()).abspath(env)
+        prog = program_obj.path.find_build(ccroot.get_target_name(program_obj)).abspath(env)
         out = open('doc/introspected-doxygen.h', 'w')
         if subprocess.Popen([prog], stdout=out, env=proc_env).wait():
             raise SystemExit(1)
@@ -359,12 +362,11 @@
 
     run_program('run-tests', get_command_template())
 
-
 def _find_program(program_name, env):
     launch_dir = os.path.abspath(Params.g_cwd_launch)
     found_programs = []
     for obj in Object.g_allobjs:
-        if obj.m_type != 'program' or not obj.target:
+        if not getattr(obj, 'is_ns3_program', False):
             continue
 
         ## filter out programs not in the subtree starting at the launch dir
@@ -430,7 +432,7 @@
             Params.fatal(str(ex))
 
         try:
-            program_node = program_obj.path.find_build(program_obj.get_target_name())
+            program_node = program_obj.path.find_build(ccroot.get_target_name(program_obj))
         except AttributeError:
             Params.fatal("%s does not appear to be a program" % (program_name,))
 
@@ -444,7 +446,7 @@
         except ValueError, ex:
             Params.fatal(str(ex))
         try:
-            program_node = program_obj.path.find_build(program_obj.get_target_name())
+            program_node = program_obj.path.find_build(ccroot.get_target_name(program_obj))
         except AttributeError:
             Params.fatal("%s does not appear to be a program" % (program_name,))