WAF: add new bld.create_ns3_module() and bld.create_ns3_program() methods to make declaration of modules and programs simpler, and allowing us to change how ns-3 is built in a centralized way, without needing to change every module wscript file.
This commit is contained in:
@@ -1,19 +1,17 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
import Params
|
||||
|
||||
def build(bld):
|
||||
def create_ns_prog(name, source, deps=['core', 'common', 'simulator']):
|
||||
obj = bld.create_obj('cpp', 'program')
|
||||
obj.target = name
|
||||
obj.uselib_local = ["ns3-%s" % dep for dep in deps]
|
||||
obj.source = source
|
||||
return obj
|
||||
|
||||
obj = create_ns_prog('simple-global-routing', 'simple-global-routing.cc',
|
||||
deps=['point-to-point', 'internet-node', 'global-routing'])
|
||||
obj = create_ns_prog('simple-point-to-point', 'simple-point-to-point.cc',
|
||||
deps=['point-to-point', 'internet-node'])
|
||||
obj = create_ns_prog('csma-cd-one-subnet', 'csma-cd-one-subnet.cc',
|
||||
deps=['csma-cd', 'internet-node'])
|
||||
obj = create_ns_prog('csma-cd-packet-socket', 'csma-cd-packet-socket.cc', deps=['csma-cd', 'internet-node'])
|
||||
obj = bld.create_ns3_program('simple-global-routing',
|
||||
['point-to-point', 'internet-node', 'global-routing'])
|
||||
obj.source = 'simple-global-routing.cc'
|
||||
|
||||
obj = bld.create_ns3_program('simple-point-to-point', ['point-to-point', 'internet-node'])
|
||||
obj.source = 'simple-point-to-point.cc'
|
||||
|
||||
obj = bld.create_ns3_program('csma-cd-one-subnet', ['csma-cd', 'internet-node'])
|
||||
obj.source = 'csma-cd-one-subnet.cc'
|
||||
|
||||
obj = bld.create_ns3_program('csma-cd-packet-socket', ['csma-cd', 'internet-node'])
|
||||
obj.source = 'csma-cd-packet-socket.cc'
|
||||
|
||||
|
||||
@@ -1,28 +1,37 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
import Params
|
||||
|
||||
def build(bld):
|
||||
def create_ns_prog(name, source, deps=['core', 'common', 'simulator']):
|
||||
obj = bld.create_obj('cpp', 'program')
|
||||
obj.target = name
|
||||
obj.uselib_local = ["ns3-%s" % dep for dep in deps]
|
||||
obj.source = source
|
||||
return obj
|
||||
|
||||
obj = create_ns_prog('main-debug', ['main-debug.cc', 'main-debug-other.cc'])
|
||||
obj = create_ns_prog('main-callback', 'main-callback.cc')
|
||||
obj = create_ns_prog('main-ptr', 'main-ptr.cc')
|
||||
#obj = create_ns_prog('main-trace', 'main-trace.cc')
|
||||
obj = create_ns_prog('main-simulator', 'main-simulator.cc')
|
||||
obj = create_ns_prog('main-header', 'main-header.cc')
|
||||
obj = create_ns_prog('main-test', 'main-test.cc')
|
||||
obj = create_ns_prog('main-simple', 'main-simple.cc',
|
||||
deps=['node', 'internet-node', 'applications'])
|
||||
#obj = create_ns_prog('main-simple-p2p', 'main-simple-p2p.cc', deps=['node', 'point-to-point'])
|
||||
obj = create_ns_prog('main-default-value', 'main-default-value.cc',
|
||||
deps=['core', 'simulator', 'node', 'point-to-point'])
|
||||
obj = create_ns_prog('main-grid-topology', 'main-grid-topology.cc',
|
||||
deps=['core', 'simulator', 'mobility', 'internet-node'])
|
||||
obj = create_ns_prog('main-random-topology', 'main-random-topology.cc',
|
||||
deps=['core', 'simulator', 'mobility'])
|
||||
obj = bld.create_ns3_program('main-debug')
|
||||
obj.source = ['main-debug.cc', 'main-debug-other.cc']
|
||||
|
||||
obj = bld.create_ns3_program('main-callback')
|
||||
obj.source = 'main-callback.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-ptr')
|
||||
obj.source = 'main-ptr.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-simulator')
|
||||
obj.source = 'main-simulator.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-header', ['common', 'simulator'])
|
||||
obj.source = 'main-header.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-test')
|
||||
obj.source = 'main-test.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-simple',
|
||||
['node', 'internet-node', 'applications'])
|
||||
obj.source = 'main-simple.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-default-value',
|
||||
['core', 'simulator', 'node', 'point-to-point'])
|
||||
obj.source = 'main-default-value.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-grid-topology',
|
||||
['core', 'simulator', 'mobility', 'internet-node'])
|
||||
obj.source = 'main-grid-topology.cc'
|
||||
|
||||
obj = bld.create_ns3_program('main-random-topology',
|
||||
['core', 'simulator', 'mobility'])
|
||||
obj.source = 'main-random-topology.cc'
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def build(bld):
|
||||
obj = bld.create_obj('cpp', 'shlib')
|
||||
obj.name = 'ns3-applications'
|
||||
obj.target = obj.name
|
||||
obj.uselib_local = ['ns3-node']
|
||||
obj = bld.create_ns3_module('applications', ['node'])
|
||||
obj.source = [
|
||||
'onoff-application.cc',
|
||||
]
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def build(bld):
|
||||
common = bld.create_obj('cpp', 'shlib')
|
||||
common.name = 'ns3-common'
|
||||
common.target = common.name
|
||||
common.uselib_local = ['ns3-core', 'ns3-simulator']
|
||||
common = bld.create_ns3_module('common', ['core', 'simulator'])
|
||||
common.source = [
|
||||
'buffer.cc',
|
||||
'chunk.cc',
|
||||
|
||||
@@ -26,9 +26,7 @@ def configure(conf):
|
||||
|
||||
|
||||
def build(bld):
|
||||
core = bld.create_obj('cpp', 'shlib')
|
||||
core.name = 'ns3-core'
|
||||
core.target = core.name
|
||||
core = bld.create_ns3_module('core')
|
||||
core.source = [
|
||||
'callback-test.cc',
|
||||
'debug.cc',
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
|
||||
|
||||
def build(bld):
|
||||
obj = bld.create_obj('cpp', 'shlib')
|
||||
obj.name = 'ns3-csma-cd'
|
||||
obj.target = obj.name
|
||||
obj.uselib_local = ['ns3-node']
|
||||
obj = bld.create_ns3_module('csma-cd', ['node'])
|
||||
obj.source = [
|
||||
'backoff.cc',
|
||||
'csma-cd-net-device.cc',
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
|
||||
|
||||
def build(bld):
|
||||
module = bld.create_obj('cpp', 'shlib')
|
||||
module.name = 'ns3-point-to-point'
|
||||
module.target = module.name
|
||||
module.uselib_local = ['ns3-node']
|
||||
module = bld.create_ns3_module('point-to-point', ['node'])
|
||||
module.source = [
|
||||
'point-to-point-net-device.cc',
|
||||
'point-to-point-channel.cc',
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
|
||||
|
||||
def build(bld):
|
||||
obj = bld.create_obj('cpp', 'shlib')
|
||||
obj.name = 'ns3-internet-node'
|
||||
obj.target = obj.name
|
||||
obj.uselib_local = ['ns3-node', 'ns3-applications']
|
||||
obj = bld.create_ns3_module('internet-node', ['node', 'applications'])
|
||||
obj.source = [
|
||||
'internet-node.cc',
|
||||
'ipv4-l4-demux.cc',
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def build(bld):
|
||||
mobility = bld.create_obj('cpp', 'shlib')
|
||||
mobility.name = 'ns3-mobility'
|
||||
mobility.target = mobility.name
|
||||
mobility.uselib_local = ['ns3-core', 'ns3-simulator']
|
||||
mobility = bld.create_ns3_module('mobility', ['core', 'simulator'])
|
||||
mobility.source = [
|
||||
'grid-topology.cc',
|
||||
'hierarchical-mobility-model.cc',
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def build(bld):
|
||||
node = bld.create_obj('cpp', 'shlib')
|
||||
node.name = 'ns3-node'
|
||||
node.target = node.name
|
||||
node.uselib_local = ['ns3-core', 'ns3-common', 'ns3-simulator']
|
||||
node = bld.create_ns3_module('node', ['core', 'common', 'simulator'])
|
||||
node.source = [
|
||||
'address.cc',
|
||||
'eui48-address.cc',
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
||||
|
||||
def build(bld):
|
||||
module = bld.create_obj('cpp', 'shlib')
|
||||
module.name = 'ns3-global-routing'
|
||||
module.target = module.name
|
||||
module.uselib_local = ['ns3-node']
|
||||
module = bld.create_ns3_module('global-routing', ['node'])
|
||||
module.source = [
|
||||
'global-router-interface.cc',
|
||||
'global-route-manager.cc',
|
||||
|
||||
@@ -47,11 +47,7 @@ def configure(conf):
|
||||
|
||||
|
||||
def build(bld):
|
||||
sim = bld.create_obj('cpp', 'shlib')
|
||||
sim.name = 'ns3-simulator'
|
||||
sim.target = sim.name
|
||||
sim.uselib_local = ['ns3-core']
|
||||
|
||||
sim = bld.create_ns3_module('simulator', ['core'])
|
||||
sim.source = [
|
||||
'high-precision.cc',
|
||||
'time.cc',
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import os, os.path
|
||||
import shutil
|
||||
import types
|
||||
|
||||
import Action
|
||||
import Common
|
||||
@@ -47,10 +48,18 @@ def configure(conf):
|
||||
## Used to link the 'run-tests' program with all of ns-3 code
|
||||
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.name = 'ns3-' + name
|
||||
module.target = module.name
|
||||
module.uselib_local = ['ns3-' + dep for dep in dependencies]
|
||||
return module
|
||||
|
||||
|
||||
def build(bld):
|
||||
Object.register('ns3header', Ns3Header)
|
||||
Action.Action('ns3header', func=_ns3_headers_inst, color='BLUE')
|
||||
bld.create_ns3_module = types.MethodType(create_ns3_module, bld)
|
||||
|
||||
bld.add_subdirs(list(all_modules))
|
||||
|
||||
|
||||
@@ -4,20 +4,15 @@
|
||||
def build(bld):
|
||||
env = bld.env_of_name('default')
|
||||
|
||||
def create_ns_prog(name, source):
|
||||
obj = bld.create_obj('cpp', 'program')
|
||||
obj.target = name
|
||||
obj.source = source
|
||||
return obj
|
||||
|
||||
unit_tests = create_ns_prog('run-tests', 'run-tests.cc')
|
||||
unit_tests = bld.create_ns3_program('run-tests')
|
||||
unit_tests.install_var = 0 # do not install
|
||||
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']
|
||||
|
||||
obj = create_ns_prog('bench-simulator', 'bench-simulator.cc')
|
||||
obj.uselib_local = "ns3-core ns3-common ns3-simulator"
|
||||
obj = bld.create_ns3_program('bench-simulator', ['simulator'])
|
||||
obj.source = 'bench-simulator.cc'
|
||||
|
||||
obj = create_ns_prog('replay-simulation', 'replay-simulation.cc')
|
||||
obj.uselib_local = "ns3-core ns3-common ns3-simulator"
|
||||
obj = bld.create_ns3_program('replay-simulation', ['simulator'])
|
||||
obj.source = 'replay-simulation.cc'
|
||||
|
||||
15
wscript
15
wscript
@@ -2,12 +2,13 @@
|
||||
import sys
|
||||
import shlex
|
||||
import shutil
|
||||
import types
|
||||
import optparse
|
||||
import os.path
|
||||
|
||||
import Params
|
||||
import Object
|
||||
import pproc as subprocess
|
||||
import optparse
|
||||
import os.path
|
||||
|
||||
Params.g_autoconfig = 1
|
||||
|
||||
@@ -135,7 +136,17 @@ def configure(conf):
|
||||
conf.sub_config('src')
|
||||
|
||||
|
||||
def create_ns3_program(bld, name, dependencies=('simulator',)):
|
||||
program = bld.create_obj('cpp', 'program')
|
||||
program.name = name
|
||||
program.target = program.name
|
||||
program.uselib_local = ['ns3-' + dep for dep in dependencies]
|
||||
return program
|
||||
|
||||
|
||||
def build(bld):
|
||||
bld.create_ns3_program = types.MethodType(create_ns3_program, bld)
|
||||
|
||||
variant_name = bld.env_of_name('default')['NS3_ACTIVE_VARIANT']
|
||||
variant_env = bld.env_of_name(variant_name)
|
||||
bld.m_allenvs['default'] = variant_env # switch to the active variant
|
||||
|
||||
Reference in New Issue
Block a user