Build all modules as a single ns3 shared library.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Wed, 08 Aug 2007 21:07:52 +0100
changeset 1220 4933e0890acd
parent 1219 1f514fdaf6d3
child 1221 4991360fa83d
Build all modules as a single ns3 shared library.
src/wscript
utils/wscript
wscript
--- a/src/wscript	Wed Aug 08 23:23:24 2007 +0200
+++ b/src/wscript	Wed Aug 08 21:07:52 2007 +0100
@@ -39,9 +39,9 @@
     conf.sub_config('simulator')
 
     blddir = os.path.abspath(os.path.join(conf.m_blddir, conf.env.variant()))
+    conf.env['NS3_MODULE_PATH'] = [os.path.join(blddir, 'src')]
     for module in all_modules:
         module_path = os.path.join(blddir, 'src', module)
-        conf.env.append_value('NS3_MODULE_PATH', module_path)
         if Params.g_options.enable_rpath:
             conf.env.append_value('RPATH', '-Wl,-rpath=%s' % (module_path,))
 
@@ -49,10 +49,11 @@
     conf.env['NS3_MODULES'] = ['ns3-' + module.split('/')[-1] for module in all_modules]
 
 def create_ns3_module(bld, name, dependencies=()):
-    module = bld.create_obj('cpp', 'shlib')
+    module = bld.create_obj('cpp', 'objects')
     module.name = 'ns3-' + name
     module.target = module.name
-    module.uselib_local = ['ns3-' + dep for dep in dependencies]
+    module.add_objects = ['ns3-' + dep for dep in dependencies]
+    module.env.append_value('CXXFLAGS', module.env['shlib_CXXFLAGS'])
     return module
     
 
@@ -63,6 +64,13 @@
     
     bld.add_subdirs(list(all_modules))
 
+    ## Create a single ns3 library containing all modules
+    lib = bld.create_obj('cpp', 'shlib')
+    lib.name = 'ns3'
+    lib.target = 'ns3'
+    lib.add_objects = list(bld.env_of_name('default')['NS3_MODULES'])
+
+
 class Ns3Header(Object.genobj):
     """A set of NS-3 header files"""
     def __init__(self, env=None):
--- a/utils/wscript	Wed Aug 08 23:23:24 2007 +0200
+++ b/utils/wscript	Wed Aug 08 21:07:52 2007 +0100
@@ -9,7 +9,7 @@
     unit_tests.unit_test    = 1 # runs on 'waf check'
     unit_tests.source = 'run-tests.cc'
     ## link unit test program with all ns3 modules
-    unit_tests.uselib_local = env['NS3_MODULES']
+    unit_tests.uselib_local = 'ns3'
     
     obj = bld.create_ns3_program('bench-simulator', ['simulator'])
     obj.source = 'bench-simulator.cc'
--- a/wscript	Wed Aug 08 23:23:24 2007 +0200
+++ b/wscript	Wed Aug 08 21:07:52 2007 +0100
@@ -140,7 +140,7 @@
     program = bld.create_obj('cpp', 'program')
     program.name = name
     program.target = program.name
-    program.uselib_local = ['ns3-' + dep for dep in dependencies]
+    program.uselib_local = 'ns3'
     return program