src/internet-stack/wscript
author Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
Sun, 07 Dec 2008 19:02:55 +0000
changeset 4033 6abf5a0f12d7
parent 3977 4daeb41d7fc1
child 4065 f18c257dd25e
permissions -rw-r--r--
Add --with-nsc configuration option
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
     1
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
     2
import Params
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
     3
import Task
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
     4
import os
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
     5
import urllib
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
     6
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
     7
# Mercurial repository of the network simulation cradle
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
     8
NSC_REPO = "https://secure.wand.net.nz/mercurial/nsc"
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
     9
NSC_RELEASE_URL = "http://research.wand.net.nz/software/nsc"
3876
81d31a09aae6 Depend on nsc 0.5.0. This is required so the interface is the same for an NSC
Sam Jansen <sam.jansen@gmail.com>
parents: 3820
diff changeset
    10
NSC_RELEASE_NAME = "nsc-0.5.0"
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    11
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    12
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    13
def set_options(opt):
3637
a6d8bf62a61d For better consistency, option --nsc becomes --enable-nsc, --python-disable becomes --disable-python.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3635
diff changeset
    14
    opt.add_option('--enable-nsc',
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    15
                   help=('[deprecated option] Enable Network Simulation Cradle to allow the use real-world network stacks'),
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    16
                   action="store_true", default=False,
3637
a6d8bf62a61d For better consistency, option --nsc becomes --enable-nsc, --python-disable becomes --disable-python.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3635
diff changeset
    17
                   dest='enable_nsc')
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    18
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    19
    opt.add_option('--with-nsc',
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    20
                   help=('Use Network Simulation Cradle, given by the indicated path,'
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    21
                         ' to allow the use of real-world network stacks'),
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    22
                   default='', dest='with_nsc')
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    23
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
    24
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    25
def nsc_fetch():
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    26
    def nsc_clone():
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    27
        print "Retrieving nsc from " + NSC_REPO
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    28
        if os.system("hg version > /dev/null 2>&1") != 0:
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    29
            Params.fatal("Mercurial not installed, http fallback not yet implemented")
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    30
        if os.system("hg  clone " + NSC_REPO) != 0:
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    31
            Params.fatal("hg -q clone %s failed" % NSC_REPO)
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    32
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    33
    def nsc_update():
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    34
        if os.system("hg version > /dev/null 2>&1") != 0:
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    35
            Params.warning("Mercurial not installed, not updating nsc source")
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    36
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    37
        print "Pulling nsc updates from " + NSC_REPO
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    38
        if os.system("cd nsc && hg pull %s && hg update" % NSC_REPO) != 0:
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    39
            Params.warning("Updating nsc using mercurial failed")
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    40
3664
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    41
    def nsc_download():
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    42
        local_file = NSC_RELEASE_NAME + ".tar.bz2"
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    43
        remote_file = NSC_RELEASE_URL + "/" + local_file
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    44
        print "Retrieving nsc from " + remote_file
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    45
        urllib.urlretrieve(remote_file, local_file)
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    46
        print "Uncompressing " + local_file
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    47
        os.system("tar -xjf " + local_file)
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    48
        os.system('mv ' + NSC_RELEASE_NAME + ' nsc')
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    49
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    50
    if not os.path.exists('.hg'):
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    51
        nsc_download ()
e10e48cbce9c bug 322: download nsc from released location if in 'release' mode.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3651
diff changeset
    52
    elif not os.path.exists("nsc"):
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    53
        nsc_clone()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    54
    else:
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    55
        nsc_update()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    56
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    57
def configure(conf):
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    58
    # checks for flex and bison, which is needed to build NSCs globaliser
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    59
    def check_nsc_buildutils():
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    60
        import flex
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    61
        import bison
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    62
        conf.check_tool('flex bison')
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    63
        e = conf.create_library_configurator()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    64
        e.mandatory = True
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    65
        e.name = 'fl'
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    66
        e.run()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    67
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    68
    if not (Params.g_options.enable_nsc or Params.g_options.with_nsc):
3625
30afad8324d5 Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3595
diff changeset
    69
        conf.report_optional_feature("nsc", "Network Simulation Cradle", False,
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    70
                                     "--with/enable-nsc configure option not given")
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    71
	return
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    72
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    73
    check_nsc_buildutils()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    74
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    75
    if Params.g_options.enable_nsc:
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    76
        Params.warning("--enable-nsc is a deprecated option; use --with-nsc instead")
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    77
        conf.env['WITH_NSC'] = 'nsc'
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    78
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    79
    if Params.g_options.with_nsc:
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    80
        if not os.path.isdir(Params.g_options.with_nsc):
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    81
            Params.fatal("--with-nsc nsc path %r does not exist" % Params.g_options.with_nsc)
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    82
        conf.env['WITH_NSC'] = Params.g_options.with_nsc
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    83
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    84
    arch = os.uname()[4]
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    85
    ok = False
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    86
    if arch == 'x86_64' or arch == 'i686' or arch == 'i586' or arch == 'i486' or arch == 'i386':
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    87
        conf.env['NSC_ENABLED'] = 'yes'
3669
e96e61efb9a5 enable nsc when nsc enabled
Craig Dowell <craigdo@ee.washington.edu>
parents: 3664
diff changeset
    88
        conf.env.append_value('CXXDEFINES', 'NETWORK_SIMULATION_CRADLE')
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    89
        e = conf.create_library_configurator()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    90
        e.mandatory = True
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    91
        e.name = 'dl'
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    92
        e.define = 'HAVE_DL'
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    93
        e.uselib = 'DL'
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    94
        e.run()
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    95
        ok = True
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
    96
    conf.check_message('NSC supported architecture', arch, ok)
3625
30afad8324d5 Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3595
diff changeset
    97
    conf.report_optional_feature("nsc", "Network Simulation Cradle", ok,
30afad8324d5 Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3595
diff changeset
    98
                                 "architecture %r not supported" % arch)
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
    99
    if not Params.g_options.with_nsc:
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   100
        nsc_fetch()
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   101
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   102
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   103
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   104
class NscBuildTask(Task.TaskBase):
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   105
    """task that builds nsc
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   106
    """
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   107
    def __init__(self, builddir, nsc_dir):
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   108
        self.prio = 1000 # build after the rest of ns-3
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   109
        self.builddir = builddir
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   110
        self.nsc_dir = nsc_dir
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   111
        super(NscBuildTask, self).__init__()
3977
4daeb41d7fc1 Fix nsc/python-scan task descriptions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3959
diff changeset
   112
        self.m_display = 'build-nsc\n'
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   113
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   114
    def run(self):
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   115
        # XXX: Detect gcc major version(s) available to build supported stacks
3673
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   116
        builddir = self.builddir
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   117
        kernels = [['linux-2.6.18', 'linux2.6.18'],
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   118
                   ['linux-2.6.26', 'linux2.6.26']]
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   119
        for dir, name in kernels:
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   120
            soname = 'lib' + name + '.so'
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   121
            if not os.path.exists(os.path.join("..", self.nsc_dir, dir, soname)):
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   122
                if os.system('cd ../%s && python scons.py %s' % (self.nsc_dir, dir)) != 0:
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   123
                    Params.fatal("Building NSC stack failed")
3672
817729f77408 nsc: remove nsc builddir symlink
Florian Westphal <fw@strlen.de>
parents: 3669
diff changeset
   124
3673
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   125
            if not os.path.exists(builddir + '/' + soname):
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   126
                try:
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   127
                    os.symlink('../../' + self.nsc_dir + '/' + dir + '/' + soname, builddir +  '/' + soname)
3673
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   128
                except:
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   129
                    Params.fatal("Error linking " + builddir + '/' + soname)
319eb29611b1 nsc: fix liblinux2.6.18.so sym link creation
Florian Westphal <fw@strlen.de>
parents: 3672
diff changeset
   130
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   131
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   132
def build(bld):
3260
8c0ab08144e6 bug 186: internet-node directory must be renamed to internet-stack
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3216
diff changeset
   133
    obj = bld.create_ns3_module('internet-stack', ['node'])
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   134
    obj.source = [
2707
1c353c7aef5b introduce AddInternetStack
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2609
diff changeset
   135
        'internet-stack.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   136
        'ipv4-l4-protocol.cc',
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   137
        'udp-header.cc',
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   138
        'tcp-header.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   139
        'ipv4-checksum.cc',
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   140
        'ipv4-interface.cc',
760
975a88259e2e Re-sync WAF build with the latest SConstruct changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 729
diff changeset
   141
        'ipv4-l3-protocol.cc',
983
47c42bd66fb7 Support dynamic routing and multiple routing protocols; static routing table is refactored as a "routing protocol".
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 976
diff changeset
   142
        'ipv4-static-routing.cc',
3959
ec65107df095 Segregate Ipv4GlobalRouting from Ipv4StaticRouting; add API for deleting and recomputing global routes
Tom Henderson <tomh@tomh.org>
parents: 3876
diff changeset
   143
        'ipv4-global-routing.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   144
        'ipv4-end-point.cc',
760
975a88259e2e Re-sync WAF build with the latest SConstruct changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 729
diff changeset
   145
        'udp-l4-protocol.cc',
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   146
        'tcp-l4-protocol.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   147
        'arp-header.cc',
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   148
        'arp-cache.cc',
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   149
        'arp-ipv4-interface.cc',
760
975a88259e2e Re-sync WAF build with the latest SConstruct changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 729
diff changeset
   150
        'arp-l3-protocol.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   151
        'ipv4-loopback-interface.cc',
3130
881cc06cd651 rename UdpSocket to UdpSocketImpl
Tom Henderson <tomh@tomh.org>
parents: 3126
diff changeset
   152
        'udp-socket-impl.cc',
3131
d82336dfd269 change TcpSocket to TcpSocketImpl
Tom Henderson <tomh@tomh.org>
parents: 3130
diff changeset
   153
        'tcp-socket-impl.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   154
        'ipv4-end-point-demux.cc',
760
975a88259e2e Re-sync WAF build with the latest SConstruct changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 729
diff changeset
   155
        'ipv4-impl.cc',
3126
68d35477a842 s/UdpImpl/UdpSocketFactoryImpl
Tom Henderson <tomh@tomh.org>
parents: 2830
diff changeset
   156
        'udp-socket-factory-impl.cc',
3133
295e061719fc change TcpImpl to TcpSocketFactoryImpl
Tom Henderson <tomh@tomh.org>
parents: 3131
diff changeset
   157
        'tcp-socket-factory-impl.cc',
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   158
        'pending-data.cc',
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   159
        'sequence-number.cc',
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   160
        'rtt-estimator.cc',
3820
c04ecfdce1ef apply icmp patch
Craig Dowell <craigdo@ee.washington.edu>
parents: 3703
diff changeset
   161
        'ipv4-raw-socket-factory-impl.cc',
c04ecfdce1ef apply icmp patch
Craig Dowell <craigdo@ee.washington.edu>
parents: 3703
diff changeset
   162
        'ipv4-raw-socket-impl.cc',
c04ecfdce1ef apply icmp patch
Craig Dowell <craigdo@ee.washington.edu>
parents: 3703
diff changeset
   163
        'icmpv4.cc',
c04ecfdce1ef apply icmp patch
Craig Dowell <craigdo@ee.washington.edu>
parents: 3703
diff changeset
   164
        'icmpv4-l4-protocol.cc',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   165
        ]
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   166
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   167
    headers = bld.create_obj('ns3header')
3260
8c0ab08144e6 bug 186: internet-node directory must be renamed to internet-stack
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3216
diff changeset
   168
    headers.module = 'internet-stack'
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   169
    headers.source = [
2707
1c353c7aef5b introduce AddInternetStack
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2609
diff changeset
   170
        'internet-stack.h',
1244
9ee2a9242c10 make sure udp-header.h is exported for main-packet-printer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1177
diff changeset
   171
        'udp-header.h',
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 1496
diff changeset
   172
        'tcp-header.h',
2321
f1a18a24d318 Make sequence-number.h a public header file (because it is included by another public header, tcp-header.h)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2224
diff changeset
   173
        'sequence-number.h',
3380
38b8549b1ad3 Minor doc notes added to ipv4.h
tjkopena@cs.drexel.edu
parents: 3260
diff changeset
   174
        'ipv4-interface.h',
38b8549b1ad3 Minor doc notes added to ipv4.h
tjkopena@cs.drexel.edu
parents: 3260
diff changeset
   175
        'ipv4-l3-protocol.h',
38b8549b1ad3 Minor doc notes added to ipv4.h
tjkopena@cs.drexel.edu
parents: 3260
diff changeset
   176
        'ipv4-static-routing.h',
3959
ec65107df095 Segregate Ipv4GlobalRouting from Ipv4StaticRouting; add API for deleting and recomputing global routes
Tom Henderson <tomh@tomh.org>
parents: 3876
diff changeset
   177
        'ipv4-global-routing.h',
3820
c04ecfdce1ef apply icmp patch
Craig Dowell <craigdo@ee.washington.edu>
parents: 3703
diff changeset
   178
        'icmpv4.h',
537
e8a4183dfe00 Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff changeset
   179
        ]
3579
9e5eaef3e082 nsc: enable network simulation cradle
Florian Westphal <fw@strlen.de>
parents: 3380
diff changeset
   180
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   181
    if bld.env()['WITH_NSC']:        
3651
9a2b20293ae5 bug 316: make nsc compilation conditional again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3637
diff changeset
   182
        obj.source.append ('nsc-tcp-socket-impl.cc')
9a2b20293ae5 bug 316: make nsc compilation conditional again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3637
diff changeset
   183
        obj.source.append ('nsc-tcp-l4-protocol.cc')
9a2b20293ae5 bug 316: make nsc compilation conditional again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3637
diff changeset
   184
        obj.source.append ('nsc-tcp-socket-factory-impl.cc')
9a2b20293ae5 bug 316: make nsc compilation conditional again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3637
diff changeset
   185
        obj.source.append ('nsc-sysctl.cc')
9a2b20293ae5 bug 316: make nsc compilation conditional again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3637
diff changeset
   186
        obj.uselib = 'DL'
3628
a9c05c7e54f2 Move all NSC related build code into src/internet-stack, to unclutter a bit the main wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3626
diff changeset
   187
        builddir = os.path.abspath(os.path.join(bld.env()['NS3_BUILDDIR'], bld.env ().variant()))
4033
6abf5a0f12d7 Add --with-nsc configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3977
diff changeset
   188
        NscBuildTask(builddir, bld.env()['WITH_NSC'])