author | Tom Henderson <tomh@tomh.org> |
Sat, 03 May 2014 10:12:46 -0700 | |
changeset 10778 | 2d60720f5850 |
parent 9277 | 0f87d1cb030c |
child 11058 | 0553feb3113f |
permissions | -rw-r--r-- |
9164 | 1 |
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Mileti? <rivanvx@gmail.com>
parents:
9197
diff
changeset
|
2 |
|
9164 | 3 |
import os |
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Mileti? <rivanvx@gmail.com>
parents:
9197
diff
changeset
|
4 |
|
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Mileti? <rivanvx@gmail.com>
parents:
9197
diff
changeset
|
5 |
from waflib import Options |
9164 | 6 |
|
7 |
||
8 |
def options(opt): |
|
9 |
opt.add_option('--with-brite', |
|
10 |
help=('Use BRITE integration support, given by the indicated path,' |
|
11 |
' to allow the use of the BRITE topology generator'), |
|
12 |
default=False, dest='with_brite') |
|
13 |
||
14 |
def configure(conf): |
|
15 |
conf.env['ENABLE_BRITE'] = False |
|
16 |
||
10778
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
17 |
lib_to_check = 'libbrite.so' |
9164 | 18 |
if Options.options.with_brite: |
10778
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
19 |
conf.msg("Checking BRITE location", ("%s (given)" % Options.options.with_brite)) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
20 |
brite_dir = Options.options.with_brite |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
21 |
if os.path.exists(os.path.join(brite_dir, lib_to_check)): |
9164 | 22 |
conf.env['WITH_BRITE'] = os.path.abspath(Options.options.with_brite) |
23 |
else: |
|
10778
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
24 |
conf.report_optional_feature("brite", "BRITE Integration", False, |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
25 |
"BRITE not found at requested location") |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
26 |
# Add this module to the list of modules that won't be built |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
27 |
# if they are enabled. |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
28 |
conf.env['MODULES_NOT_BUILT'].append('brite') |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
29 |
return |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
30 |
else: |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
31 |
# No user specified '--with-brite' option, try to guess |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
32 |
# bake.py uses ../../build, while ns-3-dev uses ../click |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
33 |
brite_dir = os.path.join('..','BRITE') |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
34 |
brite_bake_build_dir = os.path.join('..', '..', 'build') |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
35 |
brite_bake_lib_dir = os.path.join(brite_bake_build_dir, 'lib') |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
36 |
if os.path.exists(os.path.join(brite_dir, lib_to_check)): |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
37 |
conf.msg("Checking for BRITE location", ("%s (guessed)" % brite_dir)) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
38 |
conf.env['WITH_BRITE'] = os.path.abspath(brite_dir) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
39 |
# Below is not yet ready (bake does not install BRITE yet, just builds it) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
40 |
# elif os.path.exists(os.path.join(brite_bake_lib_dir, lib_to_check)): |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
41 |
# conf.msg("Checking for BRITE location", ("%s (guessed)" % brite_bake_lib_dir)) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
42 |
# conf.env['WITH_BRITE'] = os.path.abspath(brite_bake_lib_dir) |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
43 |
else: |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
44 |
conf.report_optional_feature("brite", "BRITE Integration", False, 'BRITE not enabled (see option --with-brite)') |
9197 | 45 |
|
10778
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
46 |
# Add this module to the list of modules that won't be built |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
47 |
# if they are enabled. |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
48 |
conf.env['MODULES_NOT_BUILT'].append('brite') |
2d60720f5850
make waf smarter about finding BRITE automatically
Tom Henderson <tomh@tomh.org>
parents:
9277
diff
changeset
|
49 |
return |
9164 | 50 |
|
51 |
test_code = ''' |
|
52 |
#include "Brite.h" |
|
53 |
||
54 |
int main() |
|
55 |
{ |
|
56 |
return 0; |
|
57 |
} |
|
58 |
''' |
|
59 |
||
60 |
conf.env['DL'] = conf.check(mandatory=True, lib='dl', define_name='DL', uselib='DL') |
|
61 |
||
62 |
conf.env.append_value('NS3_MODULE_PATH',os.path.abspath(os.path.join(conf.env['WITH_BRITE'], '.'))) |
|
63 |
||
64 |
conf.env['INCLUDES_BRITE'] = os.path.abspath(os.path.join(conf.env['WITH_BRITE'],'.')) |
|
65 |
||
66 |
conf.env['CPPPATH_BRITE'] = [ |
|
67 |
os.path.abspath(os.path.join(conf.env['WITH_BRITE'],'.')), |
|
68 |
os.path.abspath(os.path.join(conf.env['WITH_BRITE'],'Models')) |
|
69 |
] |
|
70 |
conf.env['LIBPATH_BRITE'] = [os.path.abspath(os.path.join(conf.env['WITH_BRITE'], '.'))] |
|
71 |
||
72 |
conf.env.append_value('CXXDEFINES', 'NS3_BRITE') |
|
73 |
conf.env.append_value('CPPPATH', conf.env['CPPPATH_BRITE']) |
|
74 |
||
75 |
conf.env['BRITE'] = conf.check(fragment=test_code, lib='brite', libpath=conf.env['LIBPATH_BRITE'], use='BRITE DL') |
|
76 |
conf.report_optional_feature("brite", "BRITE Integration", |
|
77 |
conf.env['BRITE'], "BRITE library not found") |
|
78 |
||
79 |
if conf.env['BRITE']: |
|
80 |
conf.env['ENABLE_BRITE'] = True |
|
81 |
conf.env.append_value('CXXDEFINES', 'NS3_BRITE') |
|
82 |
conf.env.append_value('CPPPATH', conf.env['CPPPATH_BRITE']) |
|
83 |
||
84 |
def build(bld): |
|
9197 | 85 |
# Don't do anything for this module if brite's not enabled. |
86 |
if 'brite' in bld.env['MODULES_NOT_BUILT']: |
|
87 |
return |
|
9164 | 88 |
|
89 |
module = bld.create_ns3_module('brite', ['network', 'core', 'internet', 'point-to-point']) |
|
90 |
module.source = [ |
|
91 |
] |
|
92 |
||
93 |
module_test = bld.create_ns3_module_test_library('brite') |
|
94 |
module_test.source = [ |
|
95 |
] |
|
96 |
||
97 |
if bld.env['BRITE'] and bld.env['DL']: |
|
98 |
module.uselib = 'BRITE DL' |
|
99 |
||
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Mileti? <rivanvx@gmail.com>
parents:
9197
diff
changeset
|
100 |
headers = bld(features='ns3header') |
9164 | 101 |
headers.module = 'brite' |
102 |
headers.source = [ |
|
103 |
] |
|
104 |
||
105 |
if bld.env['ENABLE_BRITE']: |
|
106 |
module.source.append ('helper/brite-topology-helper.cc') |
|
107 |
headers.source.append ('helper/brite-topology-helper.h') |
|
108 |
module_test.source.append('test/brite-test-topology.cc') |
|
109 |
||
110 |
if bld.env['ENABLE_EXAMPLES'] and bld.env['ENABLE_BRITE']: |
|
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Mileti? <rivanvx@gmail.com>
parents:
9197
diff
changeset
|
111 |
bld.recurse('examples') |