--- a/examples/routing/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/examples/routing/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -32,3 +32,5 @@
obj = bld.create_ns3_program('simple-routing-ping6',
['csma', 'internet'])
obj.source = 'simple-routing-ping6.cc'
+
+ bld.register_ns3_script('simple-routing-ping.py', ['csma', 'internet'])
--- a/examples/tutorial/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/examples/tutorial/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -6,6 +6,8 @@
obj = bld.create_ns3_program('first', ['core', 'point-to-point', 'internet', 'applications'])
obj.source = 'first.cc'
+
+ bld.register_ns3_script('first.py', ['core', 'point-to-point', 'internet', 'applications'])
obj = bld.create_ns3_program('second', ['core', 'point-to-point', 'csma', 'internet', 'applications'])
obj.source = 'second.cc'
--- a/examples/wireless/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/examples/wireless/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -5,6 +5,9 @@
'internet', 'csma', 'olsr'])
obj.source = 'mixed-wireless.cc'
+ bld.register_ns3_script('mixed-wireless.py', ['core', 'mobility', 'wifi', 'applications', 'point-to-point',
+ 'internet', 'csma', 'olsr'])
+
obj = bld.create_ns3_program('wifi-adhoc', ['core', 'mobility', 'wifi', 'applications', 'tools'])
obj.source = 'wifi-adhoc.cc'
@@ -14,6 +17,8 @@
obj = bld.create_ns3_program('wifi-ap', ['core', 'mobility', 'wifi', 'applications', 'config-store', 'tools'])
obj.source = 'wifi-ap.cc'
+ bld.register_ns3_script('wifi-ap.py', ['core', 'mobility', 'wifi', 'applications', 'config-store', 'tools'])
+
obj = bld.create_ns3_program('wifi-wired-bridging', ['internet', 'mobility', 'wifi', 'csma', 'bridge', 'applications'])
obj.source = 'wifi-wired-bridging.cc'
--- a/src/bridge/examples/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/src/bridge/examples/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -5,6 +5,8 @@
obj = bld.create_ns3_program('csma-bridge', ['bridge', 'csma', 'internet'])
obj.source = 'csma-bridge.cc'
+ bld.register_ns3_script('csma-bridge.py', ['bridge', 'csma', 'internet'])
+
obj = bld.create_ns3_program('csma-bridge-one-hop', ['bridge', 'csma', 'internet'])
obj.source = 'csma-bridge-one-hop.cc'
--- a/src/core/examples/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/src/core/examples/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -10,6 +10,8 @@
obj = bld.create_ns3_program('sample-simulator', ['core'])
obj.source = 'sample-simulator.cc'
+ bld.register_ns3_script('sample-simulator.py', ['core'])
+
obj = bld.create_ns3_program('main-ptr', ['core'] )
obj.source = 'main-ptr.cc'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/flow-monitor/examples/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -0,0 +1,4 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+ bld.register_ns3_script('wifi-olsr-flowmon.py', ['flow-monitor', 'internet', 'tools', 'config-store', 'wifi', 'olsr', 'applications', 'mobility'])
--- a/src/flow-monitor/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/src/flow-monitor/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -29,4 +29,7 @@
]]
headers.source.append("helper/flow-monitor-helper.h")
+ if bld.env['ENABLE_EXAMPLES']:
+ bld.add_subdirs('examples')
+
bld.ns3_python_bindings()
--- a/src/tap-bridge/examples/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/src/tap-bridge/examples/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -7,7 +7,9 @@
obj.source = 'tap-csma.cc'
obj = bld.create_ns3_program('tap-csma-virtual-machine', ['csma', 'tap-bridge', 'internet'])
obj.source = 'tap-csma-virtual-machine.cc'
+ bld.register_ns3_script('tap-csma-virtual-machine.py', ['csma', 'tap-bridge', 'internet'])
obj = bld.create_ns3_program('tap-wifi-virtual-machine', ['csma', 'tap-bridge', 'internet', 'wifi', 'mobility'])
obj.source = 'tap-wifi-virtual-machine.cc'
+ bld.register_ns3_script('tap-wifi-virtual-machine.py', ['csma', 'tap-bridge', 'internet', 'wifi', 'mobility'])
obj = bld.create_ns3_program('tap-wifi-dumbbell', ['wifi', 'csma', 'point-to-point', 'tap-bridge', 'internet'])
obj.source = 'tap-wifi-dumbbell.cc'
--- a/wscript Wed Apr 27 10:16:08 2011 -0400
+++ b/wscript Thu Apr 28 09:10:29 2011 -0700
@@ -532,6 +532,10 @@
program.env.append_value('LINKFLAGS', '-Wl,-Bdynamic,--no-whole-archive')
return program
+def register_ns3_script(bld, name, dependencies=('core',)):
+ ns3_module_dependencies = ['ns3-'+dep for dep in dependencies]
+ bld.env.append_value('NS3_SCRIPT_DEPENDENCIES', (name, ns3_module_dependencies))
+
def add_examples_programs(bld):
env = bld.env_of_name('default')
if env['ENABLE_EXAMPLES']:
@@ -565,6 +569,9 @@
def build(bld):
bld.env['NS3_MODULES_WITH_TEST_LIBRARIES'] = []
bld.env['NS3_ENABLED_MODULE_TEST_LIBRARIES'] = []
+ bld.env['NS3_SCRIPT_DEPENDENCIES'] = []
+ bld.env['NS3_RUNNABLE_PROGRAMS'] = []
+ bld.env['NS3_RUNNABLE_SCRIPTS'] = []
wutils.bld = bld
if Options.options.no_task_lines:
@@ -575,6 +582,7 @@
Options.cwd_launch = bld.path.abspath()
bld.create_ns3_program = types.MethodType(create_ns3_program, bld)
+ bld.register_ns3_script = types.MethodType(register_ns3_script, bld)
bld.create_suid_program = types.MethodType(create_suid_program, bld)
# switch default variant to the one matching our debug level
@@ -663,11 +671,18 @@
# check for programs
if hasattr(obj, 'ns3_module_dependencies'):
# this is an NS-3 program (bld.create_ns3_program)
+ program_built = True
for dep in obj.ns3_module_dependencies:
if dep not in modules: # prog. depends on a module that isn't enabled?
exclude_taskgen(bld, obj)
+ program_built = False
break
+ # Add this program to the list if all of its
+ # dependencies will be built.
+ if program_built:
+ bld.env.append_value('NS3_RUNNABLE_PROGRAMS', obj.name)
+
# disable the modules themselves
if hasattr(obj, "is_ns3_module") and obj.name not in modules:
exclude_taskgen(bld, obj) # kill the module
@@ -685,6 +700,19 @@
if env['NS3_ENABLED_MODULES']:
env['NS3_ENABLED_MODULES'] = list(modules)
+ # Determine which scripts will be runnable.
+ for (script, dependencies) in bld.env['NS3_SCRIPT_DEPENDENCIES']:
+ script_runnable = True
+ for dep in dependencies:
+ if dep not in modules:
+ script_runnable = False
+ break
+
+ # Add this script to the list if all of its dependencies will
+ # be built.
+ if script_runnable:
+ bld.env.append_value('NS3_RUNNABLE_SCRIPTS', script)
+
bld.add_subdirs('bindings/python')
if Options.options.run:
@@ -719,6 +747,19 @@
print textwrap.fill(', '.join(modules_without_prefix))
print
+ # Write the build status file.
+ build_status_file = os.path.join (env['NS3_BUILDDIR'], env['NS3_ACTIVE_VARIANT'], 'build-status.py')
+ out = open(build_status_file, 'w')
+ out.write('#! /usr/bin/env python\n')
+ out.write('\n')
+ out.write('# Programs that are runnable.\n')
+ out.write('NS3_RUNNABLE_PROGRAMS = ' + str(env['NS3_RUNNABLE_PROGRAMS']) + '\n')
+ out.write('\n')
+ out.write('# Scripts that are runnable.\n')
+ out.write('NS3_RUNNABLE_SCRIPTS = ' + str(env['NS3_RUNNABLE_SCRIPTS']) + '\n')
+ out.write('\n')
+ out.close()
+
if Options.options.lcov_report:
lcov_report()