author | Gustavo J. A. M. Carneiro <gjc@inescporto.pt> |
Fri, 06 Apr 2012 16:05:51 +0100 | |
changeset 7821 | 270a2b7f82ad |
parent 7712 | e22640804bf7 |
child 7863 | 5a610391f3f1 |
permissions | -rw-r--r-- |
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; -*- |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
2 |
|
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
3 |
# python lib modules |
647
04f34a8befb8
In WAF win32 builds, add -Wl,--enable-runtime-pseudo-reloc to LINKFLAGS to solve dll linking problems.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
642
diff
changeset
|
4 |
import sys |
695
90a68c1c4328
WAF: add a dist_hook function to exclude the generated documentation from waf dist
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
694
diff
changeset
|
5 |
import shutil |
1217
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
6 |
import types |
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
7 |
import optparse |
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
8 |
import os.path |
4450
0ca9b9b410a0
bug 567: --enable-static does not work on i686
Andrey Hippo <ahippo@yandex.ru>
parents:
4447
diff
changeset
|
9 |
import re |
6670
c43b992a4f5b
Bug 1032 - Unable to specify multiple Compiler/Linker flags
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6669
diff
changeset
|
10 |
import shlex |
7088
3f0535480de9
Bug 1110 - Sort alphabetically and display Modules built in columns
Mitch Watrous <watrous@u.washington.edu>
parents:
7066
diff
changeset
|
11 |
import textwrap |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
12 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
13 |
# WAF modules |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
14 |
import subprocess |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
15 |
import Options |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
16 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
17 |
import Logs |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
18 |
import TaskGen |
4076
1c67ab5f959a
Upgrade WAF; fix Darwin (OSX) build problems.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4075
diff
changeset
|
19 |
|
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
20 |
import Task |
4195
e0a27ec2991a
WAF: fix Task.maxjobs=1 (for sudo); icc flags.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4190
diff
changeset
|
21 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
22 |
import Utils |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
23 |
import Build |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
24 |
import Configure |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
25 |
import Scripting |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
26 |
|
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
27 |
from waflib.Errors import WafError |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
28 |
|
6886
690b7a78bbd0
Make test.py handle examples-to-run.py files
Mitch Watrous <watrous@u.washington.edu>
parents:
6884
diff
changeset
|
29 |
from utils import read_config_file |
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
30 |
|
7024
4392d52b3536
Make examples not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
7023
diff
changeset
|
31 |
# By default, all modules will be enabled, examples will be disabled, |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
32 |
# and tests will be disabled. |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
33 |
modules_enabled = ['all_modules'] |
7024
4392d52b3536
Make examples not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
7023
diff
changeset
|
34 |
examples_enabled = False |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
35 |
tests_enabled = False |
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
36 |
|
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
37 |
# Get the information out of the NS-3 configuration file. |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
38 |
config_file_exists = False |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
39 |
(config_file_exists, modules_enabled, examples_enabled, tests_enabled) = read_config_file() |
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
40 |
|
5447
bfa1fc626775
Upgrade to upstream WAF 1.5.9 plus a bunch of 'waf tools' layered on top.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5201
diff
changeset
|
41 |
sys.path.insert(0, os.path.abspath('waf-tools')) |
6274
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
42 |
try: |
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
43 |
import cflags # override the build profiles from waf |
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
44 |
finally: |
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
45 |
sys.path.pop(0) |
5447
bfa1fc626775
Upgrade to upstream WAF 1.5.9 plus a bunch of 'waf tools' layered on top.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5201
diff
changeset
|
46 |
|
4069
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
47 |
cflags.profiles = { |
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
48 |
# profile name: [optimization_level, warnings_level, debug_level] |
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
49 |
'debug': [0, 2, 3], |
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
50 |
'optimized': [3, 2, 1], |
5452
15524c57a627
introduce new build profile "release": -O3 -g0.
Andrey Mazo <mazo@iitp.ru>
parents:
5448
diff
changeset
|
51 |
'release': [3, 2, 0], |
4069
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
52 |
} |
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
53 |
cflags.default_profile = 'debug' |
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
54 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
55 |
# local modules |
3866
9e946fee902c
Refactor wscript code to move regression testing code to a separate python module (bug 325)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3845
diff
changeset
|
56 |
import wutils |
9e946fee902c
Refactor wscript code to move regression testing code to a separate python module (bug 325)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3845
diff
changeset
|
57 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
58 |
Configure.autoconfig = 0 |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
59 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
60 |
# the following two variables are used by the target "waf dist" |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
61 |
VERSION = file("VERSION", "rt").read().strip() |
694
bfad4514a789
WAF: correct values of VERSION and APPNAME, for waf dist
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
693
diff
changeset
|
62 |
APPNAME = 'ns' |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
63 |
|
3866
9e946fee902c
Refactor wscript code to move regression testing code to a separate python module (bug 325)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3845
diff
changeset
|
64 |
wutils.VERSION = VERSION |
9e946fee902c
Refactor wscript code to move regression testing code to a separate python module (bug 325)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3845
diff
changeset
|
65 |
wutils.APPNAME = APPNAME |
9e946fee902c
Refactor wscript code to move regression testing code to a separate python module (bug 325)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3845
diff
changeset
|
66 |
|
7688
6f5c9b870e45
Still Bug 1327: disable VNUM in libraries, fix the .pc file deps
Vedran Miletić
parents:
7682
diff
changeset
|
67 |
# we don't use VNUM anymore (see bug #1327 for details) |
7463
53b784adf3f4
Bug 1251 - OSX: test.py reports dyld: Library not loaded
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7430
diff
changeset
|
68 |
wutils.VNUM = None |
7320
7334aa839e46
Bug 1175 postfix: only enable vnum if the VERSION matches x.y(.z) dotted number format
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7293
diff
changeset
|
69 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
70 |
# these variables are mandatory ('/' are converted automatically) |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
71 |
top = '.' |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
72 |
out = 'build' |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
73 |
|
4594
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
74 |
def load_env(): |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
75 |
bld_cls = getattr(Utils.g_module, 'build_context', Utils.Context) |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
76 |
bld_ctx = bld_cls() |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
77 |
bld_ctx.load_dirs(os.path.abspath(os.path.join (srcdir,'..')), |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
78 |
os.path.abspath(os.path.join (srcdir,'..', blddir))) |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
79 |
bld_ctx.load_envs() |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
80 |
env = bld_ctx.get_env() |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
81 |
return env |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
82 |
|
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
83 |
def get_files(base_dir): |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
84 |
retval = [] |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
85 |
reference=os.path.dirname(base_dir) |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
86 |
for root, dirs, files in os.walk(base_dir): |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
87 |
if root.find('.hg') != -1: |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
88 |
continue |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
89 |
for file in files: |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
90 |
if file.find('.hg') != -1: |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
91 |
continue |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
92 |
fullname = os.path.join(root,file) |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
93 |
# we can't use os.path.relpath because it's new in python 2.6 |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
94 |
relname = fullname.replace(reference + '/','') |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
95 |
retval.append([fullname,relname]) |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
96 |
return retval |
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
97 |
|
2881
81d1080cd0ae
Integrate regression testing into the main waf script.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2866
diff
changeset
|
98 |
|
1531
ebd805503b55
WAF: update to WAF trunk to get bug fixes and smaller script.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1506
diff
changeset
|
99 |
def dist_hook(): |
2886
8226157800a8
Create regression traces tarball automatically on waf dist.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2884
diff
changeset
|
100 |
import tarfile |
921
37b54ed96b09
WAF: ignore errors on shutil.rmtree in dist_hook, so that waf dist works even when no docs were previously generated.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
919
diff
changeset
|
101 |
shutil.rmtree("doc/html", True) |
37b54ed96b09
WAF: ignore errors on shutil.rmtree in dist_hook, so that waf dist works even when no docs were previously generated.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
919
diff
changeset
|
102 |
shutil.rmtree("doc/latex", True) |
3627
672f2a6de8b4
Exclude any possible 'nsc' folder from the dist tarball (nsc is ~= 100MB).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3625
diff
changeset
|
103 |
shutil.rmtree("nsc", True) |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
104 |
|
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
105 |
# Print the sorted list of module names in columns. |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
106 |
def print_module_names(names): |
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
107 |
# Sort the list of module names. |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
108 |
names.sort() |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
109 |
|
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
110 |
# Print the list of module names in 3 columns. |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
111 |
i = 1 |
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
112 |
for name in names: |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
113 |
print name.ljust(25), |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
114 |
if i == 3: |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
115 |
|
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
116 |
i = 0 |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
117 |
i = i+1 |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
118 |
|
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
119 |
if i != 1: |
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
120 |
|
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
121 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
122 |
def options(opt): |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
123 |
# options provided by the modules |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
124 |
opt.load('compiler_c') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
125 |
opt.load('compiler_cxx') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
126 |
opt.load('cflags') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
127 |
opt.load('gnu_dirs') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
128 |
|
2846
7689461231ac
start of regression tests
Craig Dowell <craigdo@ee.washington.edu>
parents:
2622
diff
changeset
|
129 |
opt.add_option('--cwd', |
7689461231ac
start of regression tests
Craig Dowell <craigdo@ee.washington.edu>
parents:
2622
diff
changeset
|
130 |
help=('Set the working directory for a program.'), |
7689461231ac
start of regression tests
Craig Dowell <craigdo@ee.washington.edu>
parents:
2622
diff
changeset
|
131 |
action="store", type="string", default=None, |
7689461231ac
start of regression tests
Craig Dowell <craigdo@ee.washington.edu>
parents:
2622
diff
changeset
|
132 |
dest='cwd_launch') |
7689461231ac
start of regression tests
Craig Dowell <craigdo@ee.washington.edu>
parents:
2622
diff
changeset
|
133 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
134 |
opt.add_option('--enable-gcov', |
787
778784e6bd8d
WAF: simplify --debug-level option to only have debug and optimized as possible values (debug becomes the former ultradebug); Add a warning to some options help text saying they only work in configure.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
786
diff
changeset
|
135 |
help=('Enable code coverage analysis.' |
778784e6bd8d
WAF: simplify --debug-level option to only have debug and optimized as possible values (debug becomes the former ultradebug); Add a warning to some options help text saying they only work in configure.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
786
diff
changeset
|
136 |
' WARNING: this option only has effect ' |
778784e6bd8d
WAF: simplify --debug-level option to only have debug and optimized as possible values (debug becomes the former ultradebug); Add a warning to some options help text saying they only work in configure.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
786
diff
changeset
|
137 |
'with the configure command.'), |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
138 |
action="store_true", default=False, |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
139 |
dest='enable_gcov') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
140 |
|
2866
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
141 |
opt.add_option('--no-task-lines', |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
142 |
help=("Don't print task lines, i.e. messages saying which tasks are being executed by WAF." |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
143 |
" Coupled with a single -v will cause WAF to output only the executed commands," |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
144 |
" just like 'make' does by default."), |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
145 |
action="store_true", default=False, |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
146 |
dest='no_task_lines') |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
147 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
148 |
opt.add_option('--lcov-report', |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
149 |
help=('Generate a code coverage report ' |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
150 |
'(use this option at build time, not in configure)'), |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
151 |
action="store_true", default=False, |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
152 |
dest='lcov_report') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
153 |
|
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
154 |
opt.add_option('--run', |
935
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
155 |
help=('Run a locally built program; argument can be a program name,' |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
156 |
' or a command starting with the program name.'), |
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
157 |
type="string", default='', dest='run') |
6676
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
158 |
opt.add_option('--visualize', |
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
159 |
help=('Modify --run arguments to enable the visualizer'), |
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
160 |
action="store_true", default=False, dest='visualize') |
935
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
161 |
opt.add_option('--command-template', |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
162 |
help=('Template of the command used to run the program given by --run;' |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
163 |
' It should be a shell command string containing %s inside,' |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
164 |
' which will be replaced by the actual program.'), |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
165 |
type="string", default=None, dest='command_template') |
3419
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
166 |
opt.add_option('--pyrun', |
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
167 |
help=('Run a python program using locally built ns3 python module;' |
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
168 |
' argument is the path to the python program, optionally followed' |
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
169 |
' by command-line options that are passed to the program.'), |
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
170 |
type="string", default='', dest='pyrun') |
2207
d841cca00990
Add a --valgrind WAF option (bug #124)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2178
diff
changeset
|
171 |
opt.add_option('--valgrind', |
d841cca00990
Add a --valgrind WAF option (bug #124)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2178
diff
changeset
|
172 |
help=('Change the default command template to run programs and unit tests with valgrind'), |
d841cca00990
Add a --valgrind WAF option (bug #124)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2178
diff
changeset
|
173 |
action="store_true", default=False, |
d841cca00990
Add a --valgrind WAF option (bug #124)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2178
diff
changeset
|
174 |
dest='valgrind') |
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
175 |
opt.add_option('--shell', |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
176 |
help=('DEPRECATED (run ./waf shell)'), |
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
177 |
action="store_true", default=False, |
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
178 |
dest='shell') |
4164
1f6ae48061a9
checkpoint tap bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4119
diff
changeset
|
179 |
opt.add_option('--enable-sudo', |
1f6ae48061a9
checkpoint tap bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4119
diff
changeset
|
180 |
help=('Use sudo to setup suid bits on ns3 executables.'), |
1f6ae48061a9
checkpoint tap bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4119
diff
changeset
|
181 |
dest='enable_sudo', action='store_true', |
1f6ae48061a9
checkpoint tap bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4119
diff
changeset
|
182 |
default=False) |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
183 |
opt.add_option('--enable-tests', |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
184 |
help=('Build the ns-3 tests.'), |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
185 |
dest='enable_tests', action='store_true', |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
186 |
default=False) |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
187 |
opt.add_option('--disable-tests', |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
188 |
help=('Do not build the ns-3 tests.'), |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
189 |
dest='disable_tests', action='store_true', |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
190 |
default=False) |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
191 |
opt.add_option('--enable-examples', |
7025
32212c736ab4
Move examples out of samples directory and remove it
Mitch Watrous <watrous@u.washington.edu>
parents:
7024
diff
changeset
|
192 |
help=('Build the ns-3 examples.'), |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
193 |
dest='enable_examples', action='store_true', |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
194 |
default=False) |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
195 |
opt.add_option('--disable-examples', |
7025
32212c736ab4
Move examples out of samples directory and remove it
Mitch Watrous <watrous@u.washington.edu>
parents:
7024
diff
changeset
|
196 |
help=('Do not build the ns-3 examples.'), |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
197 |
dest='disable_examples', action='store_true', |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
198 |
default=False) |
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
199 |
opt.add_option('--check', |
5361
e8989b44bffb
Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents:
5252
diff
changeset
|
200 |
help=('DEPRECATED (run ./test.py)'), |
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
201 |
default=False, dest='check', action="store_true") |
4392
25d38a0c9851
bug 537: no support to build static ns-3 binaries
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4388
diff
changeset
|
202 |
opt.add_option('--enable-static', |
25d38a0c9851
bug 537: no support to build static ns-3 binaries
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4388
diff
changeset
|
203 |
help=('Compile NS-3 statically: works only on linux, without python'), |
25d38a0c9851
bug 537: no support to build static ns-3 binaries
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4388
diff
changeset
|
204 |
dest='enable_static', action='store_true', |
25d38a0c9851
bug 537: no support to build static ns-3 binaries
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4388
diff
changeset
|
205 |
default=False) |
6113
0ce37bf4f1c1
Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents:
6099
diff
changeset
|
206 |
opt.add_option('--enable-mpi', |
0ce37bf4f1c1
Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents:
6099
diff
changeset
|
207 |
help=('Compile NS-3 with MPI and distributed simulation support'), |
0ce37bf4f1c1
Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents:
6099
diff
changeset
|
208 |
dest='enable_mpi', action='store_true', |
0ce37bf4f1c1
Merge distributed simulation code
Josh Pelkey <jpelkey@gatech.edu>
parents:
6099
diff
changeset
|
209 |
default=False) |
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
210 |
opt.add_option('--doxygen-no-build', |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
211 |
help=('Run doxygen to generate html documentation from source comments, ' |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
212 |
'but do not wait for ns-3 to finish the full build.'), |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
213 |
action="store_true", default=False, |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
214 |
dest='doxygen_no_build') |
2881
81d1080cd0ae
Integrate regression testing into the main waf script.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2866
diff
changeset
|
215 |
|
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
216 |
# options provided in subdirectories |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
217 |
opt.sub_options('src') |
3408
2cc40b3e4fa5
python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3331
diff
changeset
|
218 |
opt.sub_options('bindings/python') |
6834
036f9a0b9899
Rename internet-stack to internet, and organize module
Tom Henderson <tomh@tomh.org>
parents:
6821
diff
changeset
|
219 |
opt.sub_options('src/internet') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
220 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
221 |
|
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
222 |
def _check_compilation_flag(conf, flag, mode='cxx', linkflags=None): |
3407
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
223 |
""" |
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
224 |
Checks if the C++ compiler accepts a certain compilation flag or flags |
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
225 |
flag: can be a string or a list of strings |
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
226 |
""" |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
227 |
l = [] |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
228 |
if flag: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
229 |
l.append(flag) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
230 |
if isinstance(linkflags, list): |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
231 |
l.extend(linkflags) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
232 |
else: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
233 |
if linkflags: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
234 |
l.append(linkflags) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
235 |
if len(l) > 1: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
236 |
flag_str = 'flags ' + ' '.join(l) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
237 |
else: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
238 |
flag_str = 'flag ' + ' '.join(l) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
239 |
if flag_str > 28: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
240 |
flag_str = flag_str[:28] + "..." |
3407
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
241 |
|
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
242 |
conf.start_msg('Checking for compilation %s support' % (flag_str,)) |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
243 |
env = conf.env.copy() |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
244 |
|
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
245 |
if mode == 'cc': |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
246 |
mode = 'c' |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
247 |
|
6099
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
248 |
if mode == 'cxx': |
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
249 |
fname = 'test.cc' |
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
250 |
env.append_value('CXXFLAGS', flag) |
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
251 |
else: |
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
252 |
fname = 'test.c' |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
253 |
env.append_value('CFLAGS', flag) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
254 |
|
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
255 |
if linkflags is not None: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
256 |
env.append_value("LINKFLAGS", linkflags) |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
257 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
258 |
try: |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
259 |
retval = conf.run_c_code(code='#include <stdio.h>\nint main() { return 0; }\n', |
6099
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
260 |
env=env, compile_filename=fname, |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
261 |
features=[mode, mode+'program'], execute=False) |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
262 |
except Configure.ConfigurationError: |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
263 |
ok = False |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
264 |
else: |
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
265 |
ok = (retval == 0) |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
266 |
conf.end_msg(ok) |
4069
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
267 |
return ok |
3407
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
268 |
|
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
269 |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
270 |
def report_optional_feature(conf, name, caption, was_enabled, reason_not_enabled): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
271 |
conf.env.append_value('NS3_OPTIONAL_FEATURES', [(name, caption, was_enabled, reason_not_enabled)]) |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
272 |
|
7712
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
273 |
def check_optional_feature(conf, name): |
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
274 |
for (name1, caption, was_enabled, reason_not_enabled) in conf.env.NS3_OPTIONAL_FEATURES: |
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
275 |
if name1 == name: |
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
276 |
return was_enabled |
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
277 |
raise KeyError("Feature %r not declared yet" % (name,)) |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
278 |
|
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
279 |
# starting with waf 1.6, conf.check() becomes fatal by default if the |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
280 |
# test fails, this alternative method makes the test non-fatal, as it |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
281 |
# was in waf <= 1.5 |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
282 |
def _check_nonfatal(conf, *args, **kwargs): |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
283 |
try: |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
284 |
return conf.check(*args, **kwargs) |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
285 |
except conf.errors.ConfigurationError: |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
286 |
return None |
3407
038f13c8741c
Check that the compiler accepts -Wno-error=deprecated-declarations before using it
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3406
diff
changeset
|
287 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
288 |
def configure(conf): |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7539
diff
changeset
|
289 |
conf.check_tool("relocation", ["waf-tools"]) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7539
diff
changeset
|
290 |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
291 |
# attach some extra methods |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
292 |
conf.check_nonfatal = types.MethodType(_check_nonfatal, conf) |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
293 |
conf.check_compilation_flag = types.MethodType(_check_compilation_flag, conf) |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
294 |
conf.report_optional_feature = types.MethodType(report_optional_feature, conf) |
7712
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
295 |
conf.check_optional_feature = types.MethodType(check_optional_feature, conf) |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
296 |
conf.env['NS3_OPTIONAL_FEATURES'] = [] |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
297 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
298 |
conf.check_tool('compiler_c') |
1531
ebd805503b55
WAF: update to WAF trunk to get bug fixes and smaller script.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1506
diff
changeset
|
299 |
conf.check_tool('compiler_cxx') |
6274
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
300 |
conf.check_tool('cflags', ['waf-tools']) |
4075
bc8a646b1338
Gracefully ignore missing pkg-config
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4070
diff
changeset
|
301 |
try: |
6274
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
302 |
conf.check_tool('pkgconfig', ['waf-tools']) |
4075
bc8a646b1338
Gracefully ignore missing pkg-config
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4070
diff
changeset
|
303 |
except Configure.ConfigurationError: |
bc8a646b1338
Gracefully ignore missing pkg-config
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4070
diff
changeset
|
304 |
pass |
6274
3e8b3f2306c9
Upgrade to WAF 1.5.16. Fixes bug #855.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6254
diff
changeset
|
305 |
conf.check_tool('command', ['waf-tools']) |
7345
850237ab2111
Bug 1199 - waf install doesn't work on x86_64
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7337
diff
changeset
|
306 |
conf.check_tool('gnu_dirs') |
850237ab2111
Bug 1199 - waf install doesn't work on x86_64
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7337
diff
changeset
|
307 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
308 |
env = conf.env |
4594
14ce84fd7ae3
make dist generation work again
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4550
diff
changeset
|
309 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
310 |
if Options.options.enable_gcov: |
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
311 |
env['GCOV_ENABLED'] = True |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
312 |
env.append_value('CCFLAGS', '-fprofile-arcs') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
313 |
env.append_value('CCFLAGS', '-ftest-coverage') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
314 |
env.append_value('CXXFLAGS', '-fprofile-arcs') |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
315 |
env.append_value('CXXFLAGS', '-ftest-coverage') |
7551 | 316 |
env.append_value('LINKFLAGS', '-lgcov') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
317 |
|
4069
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
318 |
if Options.options.build_profile == 'debug': |
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
319 |
env.append_value('DEFINES', 'NS3_ASSERT_ENABLE') |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
320 |
env.append_value('DEFINES', 'NS3_LOG_ENABLE') |
1426
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
321 |
|
4190
b6734a5d920c
work around to allow FreeBSD to run tap-bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4179
diff
changeset
|
322 |
env['PLATFORM'] = sys.platform |
7681
0873edb445e8
Bug 1327 - Version installed ns-3 files
Gustavo Carneiro / Vedran Miletić
parents:
7645
diff
changeset
|
323 |
env['BUILD_PROFILE'] = Options.options.build_profile |
7682
8813ef4cec0f
Bug 1339 - test.py uses the old name for the test runner
Mitch Watrous <watrous@u.washington.edu>
parents:
7681
diff
changeset
|
324 |
env['APPNAME'] = wutils.APPNAME |
8813ef4cec0f
Bug 1339 - test.py uses the old name for the test runner
Mitch Watrous <watrous@u.washington.edu>
parents:
7681
diff
changeset
|
325 |
env['VERSION'] = wutils.VERSION |
4190
b6734a5d920c
work around to allow FreeBSD to run tap-bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4179
diff
changeset
|
326 |
|
5252
481053e0cd10
Bug 681: wrong compilation options for icpc (Intel C/C++ Compiler)
Andrey Mazo <mazo@iitp.ru>
parents:
5201
diff
changeset
|
327 |
if conf.env['CXX_NAME'] in ['gcc', 'icc']: |
5463
f2f95faff5bb
omit -march=native for <gcc-4.2;
Andrey Mazo <mazo@iitp.ru>
parents:
5454
diff
changeset
|
328 |
if Options.options.build_profile == 'release': |
f2f95faff5bb
omit -march=native for <gcc-4.2;
Andrey Mazo <mazo@iitp.ru>
parents:
5454
diff
changeset
|
329 |
env.append_value('CXXFLAGS', '-fomit-frame-pointer') |
f2f95faff5bb
omit -march=native for <gcc-4.2;
Andrey Mazo <mazo@iitp.ru>
parents:
5454
diff
changeset
|
330 |
if conf.check_compilation_flag('-march=native'): |
f2f95faff5bb
omit -march=native for <gcc-4.2;
Andrey Mazo <mazo@iitp.ru>
parents:
5454
diff
changeset
|
331 |
env.append_value('CXXFLAGS', '-march=native') |
f2f95faff5bb
omit -march=native for <gcc-4.2;
Andrey Mazo <mazo@iitp.ru>
parents:
5454
diff
changeset
|
332 |
|
4348
0572c4011b3d
Enable the link option --enable-auto-import on cygwin; closes #525.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4333
diff
changeset
|
333 |
if sys.platform == 'win32': |
4069
430a6edb0fa0
New WAF cflags tool, to add back the compilation flags (debug/optimized)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4064
diff
changeset
|
334 |
env.append_value("LINKFLAGS", "-Wl,--enable-runtime-pseudo-reloc") |
4348
0572c4011b3d
Enable the link option --enable-auto-import on cygwin; closes #525.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4333
diff
changeset
|
335 |
elif sys.platform == 'cygwin': |
0572c4011b3d
Enable the link option --enable-auto-import on cygwin; closes #525.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4333
diff
changeset
|
336 |
env.append_value("LINKFLAGS", "-Wl,--enable-auto-import") |
4446
56b16bcd3afc
Add -Wl,--soname=libns3.so to link flags to allow dlopen hacks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4441
diff
changeset
|
337 |
|
4386
2e79cbd62d28
bug 553: Running code built with a special gcc
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
4369
diff
changeset
|
338 |
cxx, = env['CXX'] |
4446
56b16bcd3afc
Add -Wl,--soname=libns3.so to link flags to allow dlopen hacks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4441
diff
changeset
|
339 |
|
4386
2e79cbd62d28
bug 553: Running code built with a special gcc
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
4369
diff
changeset
|
340 |
p = subprocess.Popen([cxx, '-print-file-name=libstdc++.so'], stdout=subprocess.PIPE) |
4387
dff0992d7cce
Make sure the 'g++ -print-file-name' code does not break if gcc doesn't know anything about the libstdc++.so file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4386
diff
changeset
|
341 |
libstdcxx_location = os.path.dirname(p.stdout.read().strip()) |
4386
2e79cbd62d28
bug 553: Running code built with a special gcc
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
4369
diff
changeset
|
342 |
p.wait() |
4387
dff0992d7cce
Make sure the 'g++ -print-file-name' code does not break if gcc doesn't know anything about the libstdc++.so file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4386
diff
changeset
|
343 |
if libstdcxx_location: |
dff0992d7cce
Make sure the 'g++ -print-file-name' code does not break if gcc doesn't know anything about the libstdc++.so file.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4386
diff
changeset
|
344 |
conf.env.append_value('NS3_MODULE_PATH', libstdcxx_location) |
647
04f34a8befb8
In WAF win32 builds, add -Wl,--enable-runtime-pseudo-reloc to LINKFLAGS to solve dll linking problems.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
642
diff
changeset
|
345 |
|
4447
0b42685f6b78
Don't event try to enable -Wl,--soname option if we're not on linux.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4446
diff
changeset
|
346 |
if Options.platform in ['linux']: |
0b42685f6b78
Don't event try to enable -Wl,--soname option if we're not on linux.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4446
diff
changeset
|
347 |
if conf.check_compilation_flag('-Wl,--soname=foo'): |
0b42685f6b78
Don't event try to enable -Wl,--soname option if we're not on linux.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4446
diff
changeset
|
348 |
env['WL_SONAME_SUPPORTED'] = True |
4446
56b16bcd3afc
Add -Wl,--soname=libns3.so to link flags to allow dlopen hacks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4441
diff
changeset
|
349 |
|
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
350 |
env['ENABLE_STATIC_NS3'] = False |
7491
dea6f61d3247
Remove the --enable-shared-and-static option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
351 |
if Options.options.enable_static: |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
352 |
if Options.platform == 'darwin': |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
353 |
if conf.check_compilation_flag(flag=[], linkflags=['-Wl,-all_load']): |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
354 |
conf.report_optional_feature("static", "Static build", True, '') |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
355 |
env['ENABLE_STATIC_NS3'] = True |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
356 |
else: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
357 |
conf.report_optional_feature("static", "Static build", False, |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
358 |
"Link flag -Wl,-all_load does not work") |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
359 |
else: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
360 |
if conf.check_compilation_flag(flag=[], linkflags=['-Wl,--whole-archive,-Bstatic', '-Wl,-Bdynamic,--no-whole-archive']): |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
361 |
conf.report_optional_feature("static", "Static build", True, '') |
7539
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
362 |
env['ENABLE_STATIC_NS3'] = True |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
363 |
else: |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
364 |
conf.report_optional_feature("static", "Static build", False, |
fd2a26e455b3
Determine whether static can be enabled based on link flags tests rather than a hardcoded whitelist of supported platforms
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7538
diff
changeset
|
365 |
"Link flag -Wl,--whole-archive,-Bstatic does not work") |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
366 |
|
7636
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
367 |
# Set this so that the lists won't be printed at the end of this |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
368 |
# configure command. |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
369 |
conf.env['PRINT_BUILT_MODULES_AT_END'] = False |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
370 |
|
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
371 |
conf.env['MODULES_NOT_BUILT'] = [] |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
372 |
|
7712
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
373 |
conf.sub_config('bindings/python') |
e22640804bf7
Bug 1355 - visualizer dependencies not detected at buildtime
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7707
diff
changeset
|
374 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
375 |
conf.sub_config('src') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
376 |
|
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
377 |
# Set the list of enabled modules. |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
378 |
if Options.options.enable_modules: |
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
379 |
# Use the modules explicitly enabled. |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
380 |
conf.env['NS3_ENABLED_MODULES'] = ['ns3-'+mod for mod in |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
381 |
Options.options.enable_modules.split(',')] |
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
382 |
else: |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
383 |
# Use the enabled modules list from the ns3 configuration file. |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
384 |
if modules_enabled[0] == 'all_modules': |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
385 |
# Enable all modules if requested. |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
386 |
conf.env['NS3_ENABLED_MODULES'] = conf.env['NS3_MODULES'] |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
387 |
else: |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
388 |
# Enable the modules from the list. |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
389 |
conf.env['NS3_ENABLED_MODULES'] = ['ns3-'+mod for mod in |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
390 |
modules_enabled] |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
391 |
|
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
392 |
# Add the template module to the list of enabled modules that |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
393 |
# should not be built if this is a static build on Darwin. They |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
394 |
# don't work there for the template module, and this is probably |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
395 |
# because the template module has no source files. |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
396 |
if conf.env['ENABLE_STATIC_NS3'] and sys.platform == 'darwin': |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
397 |
conf.env['MODULES_NOT_BUILT'].append('template') |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
398 |
|
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
399 |
# Remove these modules from the list of enabled modules. |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
400 |
for not_built in conf.env['MODULES_NOT_BUILT']: |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
401 |
not_built_name = 'ns3-' + not_built |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
402 |
if not_built_name in conf.env['NS3_ENABLED_MODULES']: |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
403 |
conf.env['NS3_ENABLED_MODULES'].remove(not_built_name) |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
404 |
if not conf.env['NS3_ENABLED_MODULES']: |
7496
ce1ec79d488c
waf1.6: make the all_modules in src/wscript be automatically discovered
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7495
diff
changeset
|
405 |
raise WafError('Exiting because the ' + not_built + ' module can not be built and it was the only one enabled.') |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
406 |
|
7019
23bec5444c05
The mpi waf configuration code belongs in src/mpi/wscript, not toplevel wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6998
diff
changeset
|
407 |
conf.sub_config('src/mpi') |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
408 |
|
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
409 |
# for suid bits |
7524
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
410 |
try: |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
411 |
conf.find_program('sudo', var='SUDO') |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
412 |
except WafError: |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
413 |
pass |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
414 |
|
4171
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
415 |
why_not_sudo = "because we like it" |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
416 |
if Options.options.enable_sudo and conf.env['SUDO']: |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
417 |
env['ENABLE_SUDO'] = True |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
418 |
else: |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
419 |
env['ENABLE_SUDO'] = False |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
420 |
if Options.options.enable_sudo: |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
421 |
why_not_sudo = "program sudo not found" |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
422 |
else: |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
423 |
why_not_sudo = "option --enable-sudo not selected" |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
424 |
|
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
425 |
conf.report_optional_feature("ENABLE_SUDO", "Use sudo to set suid bit", env['ENABLE_SUDO'], why_not_sudo) |
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
426 |
|
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
427 |
# Decide if tests will be built or not. |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
428 |
if Options.options.enable_tests: |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
429 |
# Tests were explicitly enabled. |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
430 |
env['ENABLE_TESTS'] = True |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
431 |
why_not_tests = "option --enable-tests selected" |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
432 |
elif Options.options.disable_tests: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
433 |
# Tests were explicitly disabled. |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
434 |
env['ENABLE_TESTS'] = False |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
435 |
why_not_tests = "option --disable-tests selected" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
436 |
else: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
437 |
# Enable tests based on the ns3 configuration file. |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
438 |
env['ENABLE_TESTS'] = tests_enabled |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
439 |
if config_file_exists: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
440 |
why_not_tests = "based on configuration file" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
441 |
elif tests_enabled: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
442 |
why_not_tests = "defaults to enabled" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
443 |
else: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
444 |
why_not_tests = "defaults to disabled" |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
445 |
|
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
446 |
conf.report_optional_feature("ENABLE_TESTS", "Build tests", env['ENABLE_TESTS'], why_not_tests) |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
447 |
|
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
448 |
# Decide if examples will be built or not. |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
449 |
if Options.options.enable_examples: |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
450 |
# Examples were explicitly enabled. |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
451 |
env['ENABLE_EXAMPLES'] = True |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
452 |
why_not_examples = "option --enable-examples selected" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
453 |
elif Options.options.disable_examples: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
454 |
# Examples were explicitly disabled. |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
455 |
env['ENABLE_EXAMPLES'] = False |
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
456 |
why_not_examples = "option --disable-examples selected" |
7023
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
457 |
else: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
458 |
# Enable examples based on the ns3 configuration file. |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
459 |
env['ENABLE_EXAMPLES'] = examples_enabled |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
460 |
if config_file_exists: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
461 |
why_not_examples = "based on configuration file" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
462 |
elif examples_enabled: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
463 |
why_not_examples = "defaults to enabled" |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
464 |
else: |
af9c5ac72f2c
Make examples and tests be enabled from the .ns3rc file
Mitch Watrous <watrous@u.washington.edu>
parents:
7019
diff
changeset
|
465 |
why_not_examples = "defaults to disabled" |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
466 |
|
6857
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
467 |
env['EXAMPLE_DIRECTORIES'] = [] |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
468 |
for dir in os.listdir('examples'): |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
469 |
if dir.startswith('.') or dir == 'CVS': |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
470 |
continue |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
471 |
if os.path.isdir(os.path.join('examples', dir)): |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
472 |
env['EXAMPLE_DIRECTORIES'].append(dir) |
d7db3cee241f
Add parsing of ns-3 configuration file
Mitch Watrous <watrous@u.washington.edu>
parents:
6834
diff
changeset
|
473 |
|
7025
32212c736ab4
Move examples out of samples directory and remove it
Mitch Watrous <watrous@u.washington.edu>
parents:
7024
diff
changeset
|
474 |
conf.report_optional_feature("ENABLE_EXAMPLES", "Build examples", env['ENABLE_EXAMPLES'], |
5369
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
475 |
why_not_examples) |
86beb5869f67
split examples, add examples, tweak test.py to minimize builds
Craig Dowell <craigdo@ee.washington.edu>
parents:
5368
diff
changeset
|
476 |
|
7524
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
477 |
try: |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
478 |
conf.find_program('valgrind', var='VALGRIND') |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
479 |
except WafError: |
b5df4870db14
Don't fail on missing sudo or valgrind
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7518
diff
changeset
|
480 |
pass |
4119
9ffcf2400aa5
Bug #323: waf --valgrind doesn't check for valgrind first
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4118
diff
changeset
|
481 |
|
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
482 |
# These flags are used for the implicitly dependent modules. |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
483 |
if env['ENABLE_STATIC_NS3']: |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
484 |
if sys.platform == 'darwin': |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
485 |
env.STATICLIB_MARKER = '-Wl,-all_load' |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
486 |
else: |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
487 |
env.STATICLIB_MARKER = '-Wl,--whole-archive,-Bstatic' |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
488 |
env.SHLIB_MARKER = '-Wl,-Bdynamic,--no-whole-archive' |
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
489 |
|
4773
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
490 |
have_gsl = conf.pkg_check_modules('GSL', 'gsl', mandatory=False) |
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
491 |
conf.env['ENABLE_GSL'] = have_gsl |
4436
56fc927210c6
attempt to detect broken --enable-static invocations.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4395
diff
changeset
|
492 |
|
4773
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
493 |
conf.report_optional_feature("GSL", "GNU Scientific Library (GSL)", |
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
494 |
conf.env['ENABLE_GSL'], |
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
495 |
"GSL not found") |
904c1803d5dc
test framework should probably work on all supported machines
Craig Dowell <craigdo@ee.washington.edu>
parents:
4770
diff
changeset
|
496 |
if have_gsl: |
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
497 |
conf.env.append_value('DEFINES', "ENABLE_GSL") |
4392
25d38a0c9851
bug 537: no support to build static ns-3 binaries
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4388
diff
changeset
|
498 |
|
5996
84c404ad1d26
WAF: allow NS-3 modules to compile pure C code sources mixed with the C++ ones
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5975
diff
changeset
|
499 |
# for compiling C code, copy over the CXX* flags |
84c404ad1d26
WAF: allow NS-3 modules to compile pure C code sources mixed with the C++ ones
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5975
diff
changeset
|
500 |
conf.env.append_value('CCFLAGS', conf.env['CXXFLAGS']) |
84c404ad1d26
WAF: allow NS-3 modules to compile pure C code sources mixed with the C++ ones
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5975
diff
changeset
|
501 |
|
6362
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
502 |
def add_gcc_flag(flag): |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
503 |
if env['COMPILER_CXX'] == 'g++' and 'CXXFLAGS' not in os.environ: |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
504 |
if conf.check_compilation_flag(flag, mode='cxx'): |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
505 |
env.append_value('CXXFLAGS', flag) |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
506 |
if env['COMPILER_CC'] == 'gcc' and 'CCFLAGS' not in os.environ: |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
507 |
if conf.check_compilation_flag(flag, mode='cc'): |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
508 |
env.append_value('CCFLAGS', flag) |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
509 |
|
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
510 |
add_gcc_flag('-Wno-error=deprecated-declarations') |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
511 |
add_gcc_flag('-fstrict-aliasing') |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
512 |
add_gcc_flag('-Wstrict-aliasing') |
ca7a4f7e24e7
Add -fstrict-aliasing and -Wstrict-aliasing compilation flags, to catch some potential strict aliasing violations earlier
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6274
diff
changeset
|
513 |
|
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
514 |
try: |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
515 |
conf.find_program('doxygen', var='DOXYGEN') |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
516 |
except WafError: |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7493
diff
changeset
|
517 |
pass |
6099
b37a72870f2d
Test the support for the -Wno-error=deprecated-declarations option independently for the C and C++ compilers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6001
diff
changeset
|
518 |
|
5454
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
519 |
# append user defined flags after all our ones |
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
520 |
for (confvar, envvar) in [['CCFLAGS', 'CCFLAGS_EXTRA'], |
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
521 |
['CXXFLAGS', 'CXXFLAGS_EXTRA'], |
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
522 |
['LINKFLAGS', 'LINKFLAGS_EXTRA'], |
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
523 |
['LINKFLAGS', 'LDFLAGS_EXTRA']]: |
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
524 |
if envvar in os.environ: |
6670
c43b992a4f5b
Bug 1032 - Unable to specify multiple Compiler/Linker flags
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6669
diff
changeset
|
525 |
value = shlex.split(os.environ[envvar]) |
c43b992a4f5b
Bug 1032 - Unable to specify multiple Compiler/Linker flags
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6669
diff
changeset
|
526 |
conf.env.append_value(confvar, value) |
5454
6db6a279dfff
append {CC,CXX,LINK,LD}FLAGS_EXTRA to corresponding {CC,CXX,LINK}FLAGS.
Andrey Mazo <mazo@iitp.ru>
parents:
5453
diff
changeset
|
527 |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
528 |
# Write a summary of optional features status |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
529 |
print "---- Summary of optional NS-3 features:" |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
530 |
for (name, caption, was_enabled, reason_not_enabled) in conf.env['NS3_OPTIONAL_FEATURES']: |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
531 |
if was_enabled: |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
532 |
status = 'enabled' |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
533 |
else: |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
534 |
status = 'not enabled (%s)' % reason_not_enabled |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
535 |
print "%-30s: %s" % (caption, status) |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3623
diff
changeset
|
536 |
|
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
537 |
|
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
538 |
class SuidBuild_task(Task.TaskBase): |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
539 |
"""task that makes a binary Suid |
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
540 |
""" |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
541 |
after = 'link' |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
542 |
def __init__(self, *args, **kwargs): |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
543 |
super(SuidBuild_task, self).__init__(*args, **kwargs) |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
544 |
self.m_display = 'build-suid' |
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
545 |
try: |
7692
2a3b879f4b5f
Fix issue with --enable-sudo, broken by the versioning of programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7688
diff
changeset
|
546 |
program_obj = wutils.find_program(self.generator.name, self.generator.env) |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
547 |
except ValueError, ex: |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
548 |
raise WafError(str(ex)) |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
549 |
program_node = program_obj.path.find_or_declare(program_obj.target) |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
550 |
self.filename = program_node.abspath() |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
551 |
|
4179
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
552 |
|
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
553 |
def run(self): |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
554 |
print >> sys.stderr, 'setting suid bit on executable ' + self.filename |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
555 |
if subprocess.Popen(['sudo', 'chown', 'root', self.filename]).wait(): |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
556 |
return 1 |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
557 |
if subprocess.Popen(['sudo', 'chmod', 'u+s', self.filename]).wait(): |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
558 |
return 1 |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
559 |
return 0 |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
560 |
|
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
561 |
def runnable_status(self): |
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
562 |
"RUN_ME SKIP_ME or ASK_LATER" |
7693
c452ea61d893
Fix small bug in SuidBuild_task
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7692
diff
changeset
|
563 |
try: |
c452ea61d893
Fix small bug in SuidBuild_task
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7692
diff
changeset
|
564 |
st = os.stat(self.filename) |
c452ea61d893
Fix small bug in SuidBuild_task
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7692
diff
changeset
|
565 |
except OSError: |
c452ea61d893
Fix small bug in SuidBuild_task
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7692
diff
changeset
|
566 |
return Task.ASK_LATER |
4179
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
567 |
if st.st_uid == 0: |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
568 |
return Task.SKIP_ME |
4179
2758871405b7
tweak wifi example, fix waf problems (thanks to Gustavo)
Craig Dowell <craigdo@ee.washington.edu>
parents:
4172
diff
changeset
|
569 |
else: |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
570 |
return Task.RUN_ME |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
571 |
|
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
572 |
def create_suid_program(bld, name): |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
573 |
grp = bld.current_group |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
574 |
bld.add_group() # this to make sure no two sudo tasks run at the same time |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
575 |
program = bld.new_task_gen(features=['cxx', 'cxxprogram']) |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
576 |
program.is_ns3_program = True |
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
577 |
program.module_deps = list() |
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
578 |
program.name = name |
7681
0873edb445e8
Bug 1327 - Version installed ns-3 files
Gustavo Carneiro / Vedran Miletić
parents:
7645
diff
changeset
|
579 |
program.target = "%s%s-%s-%s" % (wutils.APPNAME, wutils.VERSION, name, bld.env.BUILD_PROFILE) |
4164
1f6ae48061a9
checkpoint tap bridge
Craig Dowell <craigdo@ee.washington.edu>
parents:
4119
diff
changeset
|
580 |
|
4171
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
581 |
if bld.env['ENABLE_SUDO']: |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
582 |
program.create_task("SuidBuild") |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
583 |
|
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
584 |
bld.set_group(grp) |
4171
902589866374
teach enable-sudo to be a config time thing
Craig Dowell <craigdo@ee.washington.edu>
parents:
4164
diff
changeset
|
585 |
|
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
586 |
return program |
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
587 |
|
6821
203367ae7433
merge src/simulator into src/core; move src/core to new module layout
Tom Henderson <tomh@tomh.org>
parents:
6676
diff
changeset
|
588 |
def create_ns3_program(bld, name, dependencies=('core',)): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
589 |
program = bld.new_task_gen(features=['cxx', 'cxxprogram']) |
7593
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
590 |
|
3001
f7aa2796627f
WAF: convert code to WAF 1.4 API; the 'waf' script bundle will be updated later, for now has been disabled.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2990
diff
changeset
|
591 |
program.is_ns3_program = True |
1217
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
592 |
program.name = name |
7681
0873edb445e8
Bug 1327 - Version installed ns-3 files
Gustavo Carneiro / Vedran Miletić
parents:
7645
diff
changeset
|
593 |
program.target = "%s%s-%s-%s" % (wutils.APPNAME, wutils.VERSION, name, bld.env.BUILD_PROFILE) |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
594 |
# Each of the modules this program depends on has its own library. |
1858
68e1964c19e8
WAF: add a new --enable-modules configure option, to tell WAF to build only the specified set of ns-3 modules and its dependencies; programs depending on those modules are automatically excluded from the build.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1855
diff
changeset
|
595 |
program.ns3_module_dependencies = ['ns3-'+dep for dep in dependencies] |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
596 |
program.includes = "# #/.." |
7495
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
597 |
program.use = program.ns3_module_dependencies |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
598 |
if program.env['ENABLE_STATIC_NS3']: |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
599 |
if sys.platform == 'darwin': |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
600 |
program.env.STLIB_MARKER = '-Wl,-all_load' |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
601 |
else: |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
602 |
program.env.STLIB_MARKER = '-Wl,--whole-archive,-Bstatic' |
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
603 |
program.env.SHLIB_MARKER = '-Wl,-Bdynamic,--no-whole-archive' |
7593
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
604 |
else: |
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
605 |
if program.env.DEST_BINFMT == 'elf': |
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
606 |
# All ELF platforms are impacted but only the gcc compiler has a flag to fix it. |
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
607 |
if 'gcc' in (program.env.CXX_NAME, program.env.CC_NAME): |
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
608 |
program.env.append_value ('SHLIB_MARKER', '-Wl,--no-as-needed') |
fe607d42ec05
Correcting compilation behavior in Ubuntu 11.10. I guess, default behavior of ldd has been changed... As a result, many dynamic features of NS were not working
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
7551
diff
changeset
|
609 |
|
1217
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
610 |
return program |
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
611 |
|
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
612 |
def register_ns3_script(bld, name, dependencies=('core',)): |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
613 |
ns3_module_dependencies = ['ns3-'+dep for dep in dependencies] |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
614 |
bld.env.append_value('NS3_SCRIPT_DEPENDENCIES', [(name, ns3_module_dependencies)]) |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
615 |
|
5848
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
616 |
def add_examples_programs(bld): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
617 |
env = bld.env |
5848
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
618 |
if env['ENABLE_EXAMPLES']: |
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
619 |
for dir in os.listdir('examples'): |
6214
3f7f94c78f0a
Bug 801 - ns-3.7 and SVN not coexisting nicely
Andrey Mazo <mazo@iitp.ru>
parents:
6113
diff
changeset
|
620 |
if dir.startswith('.') or dir == 'CVS': |
3f7f94c78f0a
Bug 801 - ns-3.7 and SVN not coexisting nicely
Andrey Mazo <mazo@iitp.ru>
parents:
6113
diff
changeset
|
621 |
continue |
5848
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
622 |
if os.path.isdir(os.path.join('examples', dir)): |
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
623 |
bld.add_subdirs(os.path.join('examples', dir)) |
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
624 |
|
ee2c83ed68cf
get rid of examples waf script
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5468
diff
changeset
|
625 |
|
3275
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
626 |
def add_scratch_programs(bld): |
6962
7df7b903d035
Bug 1083 - scratch doesn't work when only some modules are enabled
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6925
diff
changeset
|
627 |
all_modules = [mod[len("ns3-"):] for mod in bld.env['NS3_ENABLED_MODULES']] |
3275
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
628 |
for filename in os.listdir("scratch"): |
3867
e29698e2e158
Bug 387: Build fails with junk subdirectories in "scratch" directory
Andrey Hippo <ahippo@yandex.ru>
parents:
3866
diff
changeset
|
629 |
if filename.startswith('.') or filename == 'CVS': |
e29698e2e158
Bug 387: Build fails with junk subdirectories in "scratch" directory
Andrey Hippo <ahippo@yandex.ru>
parents:
3866
diff
changeset
|
630 |
continue |
3275
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
631 |
if os.path.isdir(os.path.join("scratch", filename)): |
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
632 |
obj = bld.create_ns3_program(filename, all_modules) |
4108
92bae583f934
waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4103
diff
changeset
|
633 |
obj.path = obj.path.find_dir('scratch').find_dir(filename) |
7706
a0892c367ea1
Bug 1354 - Building scratch subdir programs is broken
Sebastian Rohde
parents:
7705
diff
changeset
|
634 |
obj.source = obj.path.ant_glob('*.cc') |
4108
92bae583f934
waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4103
diff
changeset
|
635 |
obj.target = filename |
3927
a2a992900b0b
Make sure obj.name == obj.target for 'scratch' programs; fixes issue reported in ns-3-users with ./waf --run scratch/simple not working.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3919
diff
changeset
|
636 |
obj.name = obj.target |
7681
0873edb445e8
Bug 1327 - Version installed ns-3 files
Gustavo Carneiro / Vedran Miletić
parents:
7645
diff
changeset
|
637 |
obj.install_path = None |
3275
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
638 |
elif filename.endswith(".cc"): |
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
639 |
name = filename[:-len(".cc")] |
b0d91237f2ec
[Bug 221] need a scratch directory
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3189
diff
changeset
|
640 |
obj = bld.create_ns3_program(name, all_modules) |
4108
92bae583f934
waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4103
diff
changeset
|
641 |
obj.path = obj.path.find_dir('scratch') |
92bae583f934
waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4103
diff
changeset
|
642 |
obj.source = filename |
92bae583f934
waf --run now takes either full path to a program or just the (flat) program name, for all C++ programs
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4103
diff
changeset
|
643 |
obj.target = name |
3927
a2a992900b0b
Make sure obj.name == obj.target for 'scratch' programs; fixes issue reported in ns-3-users with ./waf --run scratch/simple not working.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3919
diff
changeset
|
644 |
obj.name = obj.target |
7681
0873edb445e8
Bug 1327 - Version installed ns-3 files
Gustavo Carneiro / Vedran Miletić
parents:
7645
diff
changeset
|
645 |
obj.install_path = None |
1217
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
646 |
|
3282
5e57c2f1cfb7
Add a WAF workaround for the 'Input line is too long.' error in win32/mingw.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3281
diff
changeset
|
647 |
|
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
648 |
def _get_all_task_gen(self): |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
649 |
for group in self.groups: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
650 |
for taskgen in group: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
651 |
yield taskgen |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
652 |
|
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
653 |
|
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
654 |
# ok, so WAF does not provide an API to prevent an |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
655 |
# arbitrary taskgen from running; we have to muck around with |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
656 |
# WAF internal state, something that might stop working if |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
657 |
# WAF is upgraded... |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
658 |
def _exclude_taskgen(self, taskgen): |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
659 |
for group in self.groups: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
660 |
for tg1 in group: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
661 |
if tg1 is taskgen: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
662 |
group.remove(tg1) |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
663 |
break |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
664 |
else: |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
665 |
continue |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
666 |
break |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
667 |
|
7331
827246e3bc4c
Bug 1174 - Ns-3 does not generate static libraries
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7326
diff
changeset
|
668 |
|
7821
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
669 |
def _find_ns3_module(self, name): |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
670 |
for obj in _get_all_task_gen(self): |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
671 |
# disable the modules themselves |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
672 |
if hasattr(obj, "is_ns3_module") and obj.name == name: |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
673 |
return obj |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
674 |
raise KeyError(name) |
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
675 |
|
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
676 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
677 |
def build(bld): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
678 |
env = bld.env |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
679 |
|
7131
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
680 |
# If --enabled-modules option was given, then print a warning |
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
681 |
# message and exit this function. |
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
682 |
if Options.options.enable_modules: |
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
683 |
Logs.warn("No modules were built. Use waf configure --enable-modules to enable modules.") |
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
684 |
return |
77b75cd826d0
Make modules no longer be enabled from waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7100
diff
changeset
|
685 |
|
6925
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
686 |
bld.env['NS3_MODULES_WITH_TEST_LIBRARIES'] = [] |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
687 |
bld.env['NS3_ENABLED_MODULE_TEST_LIBRARIES'] = [] |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
688 |
bld.env['NS3_SCRIPT_DEPENDENCIES'] = [] |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
689 |
bld.env['NS3_RUNNABLE_PROGRAMS'] = [] |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
690 |
bld.env['NS3_RUNNABLE_SCRIPTS'] = [] |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
691 |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
692 |
wutils.bld = bld |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
693 |
if Options.options.no_task_lines: |
2866
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
694 |
import Runner |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
695 |
def null_printout(s): |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
696 |
pass |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
697 |
Runner.printout = null_printout |
1d829915f092
Add a --no-task-lines WAF option; together with -v it makes WAF just print executed commands, like 'make' does.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2846
diff
changeset
|
698 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
699 |
Options.cwd_launch = bld.path.abspath() |
1217
2f7791ae388d
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.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1213
diff
changeset
|
700 |
bld.create_ns3_program = types.MethodType(create_ns3_program, bld) |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
701 |
bld.register_ns3_script = types.MethodType(register_ns3_script, bld) |
3826
40c5841b616d
merge in tap device
Craig Dowell <craigdo@ee.washington.edu>
parents:
3703
diff
changeset
|
702 |
bld.create_suid_program = types.MethodType(create_suid_program, bld) |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
703 |
bld.__class__.all_task_gen = property(_get_all_task_gen) |
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
704 |
bld.exclude_taskgen = types.MethodType(_exclude_taskgen, bld) |
7821
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
705 |
bld.find_ns3_module = types.MethodType(_find_ns3_module, bld) |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
706 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
707 |
# process subfolders from here |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
708 |
bld.add_subdirs('src') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
709 |
|
6925
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
710 |
# If modules have been enabled, then set lists of enabled modules |
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
711 |
# and enabled module test libraries. |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
712 |
if env['NS3_ENABLED_MODULES']: |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
713 |
modules = env['NS3_ENABLED_MODULES'] |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
714 |
|
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
715 |
# Find out about additional modules that need to be enabled |
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
716 |
# due to dependency constraints. |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
717 |
changed = True |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
718 |
while changed: |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
719 |
changed = False |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
720 |
for module in modules: |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
721 |
module_obj = bld.get_tgen_by_name(module) |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
722 |
if module_obj is None: |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
723 |
raise ValueError("module %s not found" % module) |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
724 |
# Each enabled module has its own library. |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
725 |
for dep in module_obj.use: |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
726 |
if not dep.startswith('ns3-'): |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
727 |
continue |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
728 |
if dep not in modules: |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
729 |
modules.append(dep) |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
730 |
changed = True |
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
731 |
|
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
732 |
env['NS3_ENABLED_MODULES'] = modules |
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
733 |
|
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
734 |
# If tests are being built, then set the list of the enabled |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
735 |
# module test libraries. |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
736 |
if env['ENABLE_TESTS']: |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
737 |
for (mod, testlib) in bld.env['NS3_MODULES_WITH_TEST_LIBRARIES']: |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
738 |
if mod in bld.env['NS3_ENABLED_MODULES']: |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
739 |
bld.env.append_value('NS3_ENABLED_MODULE_TEST_LIBRARIES', testlib) |
6925
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
740 |
|
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
741 |
add_examples_programs(bld) |
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
742 |
add_scratch_programs(bld) |
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
743 |
|
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
744 |
if env['NS3_ENABLED_MODULES']: |
43d9c7eedf7b
Test implicitly dependent modules
Mitch Watrous <watrous@u.washington.edu>
parents:
6919
diff
changeset
|
745 |
modules = env['NS3_ENABLED_MODULES'] |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
746 |
|
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
747 |
# Exclude the programs other misc task gens that depend on disabled modules |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
748 |
for obj in list(bld.all_task_gen): |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
749 |
|
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
750 |
# check for ns3moduleheader_taskgen |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
751 |
if 'ns3moduleheader' in getattr(obj, "features", []): |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
752 |
if ("ns3-%s" % obj.module) not in modules: |
6647
bdbbfbc6bda7
When a module is disabled, remove xxx-module.h and module header files from build/variant/ns3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6641
diff
changeset
|
753 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
754 |
|
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
755 |
# check for programs |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
756 |
if hasattr(obj, 'ns3_module_dependencies'): |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
757 |
# this is an NS-3 program (bld.create_ns3_program) |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
758 |
program_built = True |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
759 |
for dep in obj.ns3_module_dependencies: |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
760 |
if dep not in modules: # prog. depends on a module that isn't enabled? |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
761 |
bld.exclude_taskgen(obj) |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
762 |
program_built = False |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
763 |
break |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
764 |
|
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
765 |
# Add this program to the list if all of its |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
766 |
# dependencies will be built. |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
767 |
if program_built: |
7682
8813ef4cec0f
Bug 1339 - test.py uses the old name for the test runner
Mitch Watrous <watrous@u.washington.edu>
parents:
7681
diff
changeset
|
768 |
object_name = "%s%s-%s-%s" % (wutils.APPNAME, wutils.VERSION, |
8813ef4cec0f
Bug 1339 - test.py uses the old name for the test runner
Mitch Watrous <watrous@u.washington.edu>
parents:
7681
diff
changeset
|
769 |
obj.name, bld.env.BUILD_PROFILE) |
8813ef4cec0f
Bug 1339 - test.py uses the old name for the test runner
Mitch Watrous <watrous@u.washington.edu>
parents:
7681
diff
changeset
|
770 |
bld.env.append_value('NS3_RUNNABLE_PROGRAMS', object_name) |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
771 |
|
6641
cfd3533cc1ef
One more stop to fixing --enable-modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6638
diff
changeset
|
772 |
# disable the modules themselves |
6638
ec4cdb1ca3ed
Revive the option --enable-modules from bit-rot; however it won't yet work in practice due to dependencies not declared and non-modular python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6637
diff
changeset
|
773 |
if hasattr(obj, "is_ns3_module") and obj.name not in modules: |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
774 |
bld.exclude_taskgen(obj) # kill the module |
6641
cfd3533cc1ef
One more stop to fixing --enable-modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6638
diff
changeset
|
775 |
|
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
776 |
# disable the module test libraries |
6998
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
777 |
if hasattr(obj, "is_ns3_module_test_library"): |
1c2b8cfb71d2
Make tests not be built by default
Mitch Watrous <watrous@u.washington.edu>
parents:
6981
diff
changeset
|
778 |
if not env['ENABLE_TESTS'] or (obj.module_name not in modules): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
779 |
bld.exclude_taskgen(obj) # kill the module test library |
6913
54679ab32585
Create separate module and test-module libraries
Mitch Watrous <watrous@u.washington.edu>
parents:
6886
diff
changeset
|
780 |
|
6641
cfd3533cc1ef
One more stop to fixing --enable-modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6638
diff
changeset
|
781 |
# disable the ns3header_taskgen |
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
782 |
if 'ns3header' in getattr(obj, "features", []): |
6641
cfd3533cc1ef
One more stop to fixing --enable-modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6638
diff
changeset
|
783 |
if ("ns3-%s" % obj.module) not in modules: |
6647
bdbbfbc6bda7
When a module is disabled, remove xxx-module.h and module header files from build/variant/ns3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6641
diff
changeset
|
784 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
785 |
|
7707
42c37d556d61
Bug 1331 - waf generates and installs pkgconfig .pc files even for disabled modules and tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7706
diff
changeset
|
786 |
# disable pcfile taskgens for disabled modules |
42c37d556d61
Bug 1331 - waf generates and installs pkgconfig .pc files even for disabled modules and tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7706
diff
changeset
|
787 |
if 'ns3pcfile' in getattr(obj, "features", []): |
7821
270a2b7f82ad
Bug 1406 - waf exits with maximum recursion depth exceeded while calling a Python object if wscript has wrong filename
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7712
diff
changeset
|
788 |
if obj.module not in bld.env.NS3_ENABLED_MODULES: |
7707
42c37d556d61
Bug 1331 - waf generates and installs pkgconfig .pc files even for disabled modules and tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7706
diff
changeset
|
789 |
bld.exclude_taskgen(obj) |
42c37d556d61
Bug 1331 - waf generates and installs pkgconfig .pc files even for disabled modules and tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7706
diff
changeset
|
790 |
|
42c37d556d61
Bug 1331 - waf generates and installs pkgconfig .pc files even for disabled modules and tests
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7706
diff
changeset
|
791 |
|
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
792 |
if env['NS3_ENABLED_MODULES']: |
3408
2cc40b3e4fa5
python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3331
diff
changeset
|
793 |
env['NS3_ENABLED_MODULES'] = list(modules) |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
794 |
|
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
795 |
# Determine which scripts will be runnable. |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
796 |
for (script, dependencies) in bld.env['NS3_SCRIPT_DEPENDENCIES']: |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
797 |
script_runnable = True |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
798 |
for dep in dependencies: |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
799 |
if dep not in modules: |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
800 |
script_runnable = False |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
801 |
break |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
802 |
|
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
803 |
# Add this script to the list if all of its dependencies will |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
804 |
# be built. |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
805 |
if script_runnable: |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
806 |
bld.env.append_value('NS3_RUNNABLE_SCRIPTS', script) |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
807 |
|
3408
2cc40b3e4fa5
python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3331
diff
changeset
|
808 |
bld.add_subdirs('bindings/python') |
1880
0148d5911946
New waf snapshot; move the ns3 library back to the top build dir (the 'lib' was only a workaround for a waf problem); allow --enable-modules on a per build run basis.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1858
diff
changeset
|
809 |
|
7337
ac13a12e9dd4
Bug 1206 - Test libraries are built but test suites are not being run in test.py
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7331
diff
changeset
|
810 |
# Process this subfolder here after the lists of enabled modules |
ac13a12e9dd4
Bug 1206 - Test libraries are built but test suites are not being run in test.py
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7331
diff
changeset
|
811 |
# and module test libraries have been set. |
ac13a12e9dd4
Bug 1206 - Test libraries are built but test suites are not being run in test.py
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7331
diff
changeset
|
812 |
bld.add_subdirs('utils') |
ac13a12e9dd4
Bug 1206 - Test libraries are built but test suites are not being run in test.py
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7331
diff
changeset
|
813 |
|
7636
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
814 |
# Set this so that the lists will be printed at the end of this |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
815 |
# build command. |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
816 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = True |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
817 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
818 |
if Options.options.run: |
3919
fd796ed5b166
Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3918
diff
changeset
|
819 |
# Check that the requested program name is valid |
4119
9ffcf2400aa5
Bug #323: waf --valgrind doesn't check for valgrind first
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4118
diff
changeset
|
820 |
program_name, dummy_program_argv = wutils.get_run_program(Options.options.run, wutils.get_command_template(env)) |
3933
3c149230e98a
Fix waf problem running programs with arguments.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3927
diff
changeset
|
821 |
|
3919
fd796ed5b166
Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3918
diff
changeset
|
822 |
# When --run'ing a program, tell WAF to only build that program, |
fd796ed5b166
Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3918
diff
changeset
|
823 |
# nothing more; this greatly speeds up compilation when all you |
fd796ed5b166
Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3918
diff
changeset
|
824 |
# want to do is run a test program. |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
825 |
Options.options.targets += ',' + os.path.basename(program_name) |
4760
f774ff724ee4
Bug #609: --check and --regression should build only the required binaries
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4751
diff
changeset
|
826 |
for gen in bld.all_task_gen: |
f774ff724ee4
Bug #609: --check and --regression should build only the required binaries
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4751
diff
changeset
|
827 |
if type(gen).__name__ in ['ns3header_taskgen', 'ns3moduleheader_taskgen']: |
f774ff724ee4
Bug #609: --check and --regression should build only the required binaries
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4751
diff
changeset
|
828 |
gen.post() |
7645
0baf0aea844a
suppress list of modules built when running program from waf
Tom Henderson <tomh@tomh.org>
parents:
7636
diff
changeset
|
829 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
3919
fd796ed5b166
Post-fix the last patch, to make sure invalid program names passed into --run trigger an informative error message as before.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3918
diff
changeset
|
830 |
|
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
831 |
if Options.options.doxygen_no_build: |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
832 |
_doxygen(bld) |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
833 |
raise SystemExit(0) |
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
834 |
|
7495
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
835 |
|
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
836 |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
837 |
def shutdown(ctx): |
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
838 |
bld = wutils.bld |
4328 | 839 |
if wutils.bld is None: |
840 |
return |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
841 |
env = bld.env |
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
842 |
|
7636
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
843 |
# Only print the lists if a build was done. |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
844 |
if (env['PRINT_BUILT_MODULES_AT_END']): |
7100
c3796788794a
Make built modules list not be printed for clean and distclean
Mitch Watrous <watrous@u.washington.edu>
parents:
7097
diff
changeset
|
845 |
|
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
846 |
# Print the list of built modules. |
7100
c3796788794a
Make built modules list not be printed for clean and distclean
Mitch Watrous <watrous@u.washington.edu>
parents:
7097
diff
changeset
|
847 |
|
c3796788794a
Make built modules list not be printed for clean and distclean
Mitch Watrous <watrous@u.washington.edu>
parents:
7097
diff
changeset
|
848 |
print 'Modules built:' |
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
849 |
names_without_prefix =[name[len('ns3-'):] for name in env['NS3_ENABLED_MODULES']] |
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
850 |
print_module_names(names_without_prefix) |
7100
c3796788794a
Make built modules list not be printed for clean and distclean
Mitch Watrous <watrous@u.washington.edu>
parents:
7097
diff
changeset
|
851 |
|
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
852 |
|
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
853 |
# Print the list of enabled modules that were not built. |
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
854 |
if env['MODULES_NOT_BUILT']: |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
855 |
print 'Modules not built:' |
7293
0f574c532cee
Make test module not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7291
diff
changeset
|
856 |
print_module_names(env['MODULES_NOT_BUILT']) |
7291
d39c09dbc3d9
Make emu and template modules not be built if not appropriate
Mitch Watrous <watrous@u.washington.edu>
parents:
7131
diff
changeset
|
857 |
|
7066
948694386867
Print modules built list at end of waf build
Mitch Watrous <watrous@u.washington.edu>
parents:
7062
diff
changeset
|
858 |
|
7636
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
859 |
# Set this so that the lists won't be printed until the next |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
860 |
# build is done. |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
861 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
862 |
|
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
863 |
# Write the build status file. |
7495
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
864 |
build_status_file = os.path.join(bld.out_dir, 'build-status.py') |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
865 |
out = open(build_status_file, 'w') |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
866 |
out.write('#! /usr/bin/env python\n') |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
867 |
out.write('\n') |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
868 |
out.write('# Programs that are runnable.\n') |
7096
7357a40d2dde
Make test.py not run examples that are not runnable
Mitch Watrous <watrous@u.washington.edu>
parents:
7094
diff
changeset
|
869 |
out.write('ns3_runnable_programs = ' + str(env['NS3_RUNNABLE_PROGRAMS']) + '\n') |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
870 |
out.write('\n') |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
871 |
out.write('# Scripts that are runnable.\n') |
7096
7357a40d2dde
Make test.py not run examples that are not runnable
Mitch Watrous <watrous@u.washington.edu>
parents:
7094
diff
changeset
|
872 |
out.write('ns3_runnable_scripts = ' + str(env['NS3_RUNNABLE_SCRIPTS']) + '\n') |
7094
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
873 |
out.write('\n') |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
874 |
out.close() |
f0748224dd68
Write a status file during waf build step
Mitch Watrous <watrous@u.washington.edu>
parents:
7088
diff
changeset
|
875 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
876 |
if Options.options.lcov_report: |
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
877 |
lcov_report(bld) |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
878 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
879 |
if Options.options.run: |
6676
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
880 |
wutils.run_program(Options.options.run, env, wutils.get_command_template(env), |
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
881 |
visualize=Options.options.visualize) |
935
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
882 |
raise SystemExit(0) |
53e1e53c373f
WAF: add a --command-template option to e.g. allow running programs with valgrind, gdb, etc.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
934
diff
changeset
|
883 |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4029
diff
changeset
|
884 |
if Options.options.pyrun: |
6676
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
885 |
wutils.run_python_program(Options.options.pyrun, env, |
8a57344a8d09
Codereview Issue 2692041: Add pyviz module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6670
diff
changeset
|
886 |
visualize=Options.options.visualize) |
3419
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
887 |
raise SystemExit(0) |
8d3f5c0f55fa
Add WAF option --pyrun, to make it easier to run Python programs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3418
diff
changeset
|
888 |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
889 |
if Options.options.shell: |
7496
ce1ec79d488c
waf1.6: make the all_modules in src/wscript be automatically discovered
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7495
diff
changeset
|
890 |
raise WafError("Please run `./waf shell' now, instead of `./waf --shell'") |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
891 |
|
5361
e8989b44bffb
Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents:
5252
diff
changeset
|
892 |
if Options.options.check: |
7496
ce1ec79d488c
waf1.6: make the all_modules in src/wscript be automatically discovered
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7495
diff
changeset
|
893 |
raise WafError("Please run `./test.py' now, instead of `./waf --check'") |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
894 |
|
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
895 |
check_shell(bld) |
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
896 |
|
7495
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
897 |
|
7510
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
898 |
|
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
899 |
from waflib import Context, Build |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
900 |
class CheckContext(Context.Context): |
5372
716ca842b52c
convince waf to run test.py on check command
Craig Dowell <craigdo@ee.washington.edu>
parents:
5369
diff
changeset
|
901 |
"""run the equivalent of the old ns-3 unit tests using test.py""" |
7510
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
902 |
cmd = 'check' |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
903 |
|
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
904 |
def execute(self): |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
905 |
|
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
906 |
# first we execute the build |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
907 |
bld = Context.create_context("build") |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
908 |
bld.options = Options.options # provided for convenience |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
909 |
bld.cmd = "build" |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
910 |
bld.execute() |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
911 |
|
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
912 |
wutils.bld = bld |
aabd5141cd16
Fix waf check
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7496
diff
changeset
|
913 |
wutils.run_python_program("test.py -n -c core", bld.env) |
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
914 |
|
7495
d87f20fd2421
waf1.6: remove code not needed, fix static build, cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
915 |
|
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
916 |
class print_introspected_doxygen_task(Task.TaskBase): |
7489
994360413f55
waf 1.6: bring back -Wl,--soname, fix waf warnings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7488
diff
changeset
|
917 |
after = 'cc cxx link' |
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
918 |
color = 'BLUE' |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
919 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
920 |
def __init__(self, bld): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
921 |
self.bld = bld |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
922 |
super(print_introspected_doxygen_task, self).__init__(generator=self) |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
923 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
924 |
def __str__(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
925 |
return 'print-introspected-doxygen\n' |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
926 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
927 |
def runnable_status(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
928 |
return Task.RUN_ME |
1540
fd4e69513199
Now run doxygen again before the build, but the doc/trace-source-list.h is generated during waf check; make doxygen less verbose, and give a warning when doc/trace-source-list.h is missing.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1536
diff
changeset
|
929 |
|
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
930 |
def run(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
931 |
## generate the trace sources list docs |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
932 |
env = wutils.bld.env |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
933 |
proc_env = wutils.get_proc_env() |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
934 |
try: |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
935 |
program_obj = wutils.find_program('print-introspected-doxygen', env) |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
936 |
except ValueError: # could happen if print-introspected-doxygen is |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
937 |
# not built because of waf configure |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
938 |
# --enable-modules=xxx |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
939 |
pass |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
940 |
else: |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
941 |
prog = program_obj.path.find_or_declare(ccroot.get_target_name(program_obj)).abspath(env) |
7527
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
942 |
|
7528
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
943 |
# Create a header file with the introspected information. |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
944 |
doxygen_out = open(os.path.join('doc', 'introspected-doxygen.h'), 'w') |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
945 |
if subprocess.Popen([prog], stdout=doxygen_out, env=proc_env).wait(): |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
946 |
raise SystemExit(1) |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
947 |
doxygen_out.close() |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
948 |
|
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
949 |
# Create a text file with the introspected information. |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
950 |
text_out = open(os.path.join('doc', 'ns3-object.txt'), 'w') |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
951 |
if subprocess.Popen([prog, '--output-text'], stdout=text_out, env=proc_env).wait(): |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
952 |
raise SystemExit(1) |
95f7f32d51d0
Fix tabbing for code that creates introspected text files
Mitch Watrous <watrous@u.washington.edu>
parents:
7527
diff
changeset
|
953 |
text_out.close() |
1536
23593050aa96
Run the program print-trace-sources to generate doc/trace-source-list.h when generating docs. As a side effect, --doxygen is now has to be processed at the end of the build.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1532
diff
changeset
|
954 |
|
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
955 |
class run_python_unit_tests_task(Task.TaskBase): |
7489
994360413f55
waf 1.6: bring back -Wl,--soname, fix waf warnings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7488
diff
changeset
|
956 |
after = 'cc cxx link' |
4531
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
957 |
color = 'BLUE' |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
958 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
959 |
def __init__(self, bld): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
960 |
self.bld = bld |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
961 |
super(run_python_unit_tests_task, self).__init__(generator=self) |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
962 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
963 |
def __str__(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
964 |
return 'run-python-unit-tests\n' |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
965 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
966 |
def runnable_status(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
967 |
return Task.RUN_ME |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
968 |
|
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
969 |
def run(self): |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
970 |
proc_env = wutils.get_proc_env() |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
971 |
wutils.run_argv([self.bld.env['PYTHON'], os.path.join("..", "utils", "python-unit-tests.py")], |
14a102415139
Run unit tests as indenpendent WAF tasks
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4450
diff
changeset
|
972 |
self.bld.env, proc_env, force_no_valgrind=True) |
3408
2cc40b3e4fa5
python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3331
diff
changeset
|
973 |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
974 |
def check_shell(bld): |
5975
c85cb9b073a0
comparing with http://code.nsnam.org/ns-3-dev
Craig Dowell <craigdo@ee.washington.edu>
parents:
5848
diff
changeset
|
975 |
if ('NS3_MODULE_PATH' not in os.environ) or ('NS3_EXECUTABLE_PATH' not in os.environ): |
1016
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
976 |
return |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
977 |
env = bld.env |
1016
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
978 |
correct_modpath = os.pathsep.join(env['NS3_MODULE_PATH']) |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
979 |
found_modpath = os.environ['NS3_MODULE_PATH'] |
5975
c85cb9b073a0
comparing with http://code.nsnam.org/ns-3-dev
Craig Dowell <craigdo@ee.washington.edu>
parents:
5848
diff
changeset
|
980 |
correct_execpath = os.pathsep.join(env['NS3_EXECUTABLE_PATH']) |
c85cb9b073a0
comparing with http://code.nsnam.org/ns-3-dev
Craig Dowell <craigdo@ee.washington.edu>
parents:
5848
diff
changeset
|
981 |
found_execpath = os.environ['NS3_EXECUTABLE_PATH'] |
c85cb9b073a0
comparing with http://code.nsnam.org/ns-3-dev
Craig Dowell <craigdo@ee.washington.edu>
parents:
5848
diff
changeset
|
982 |
if (found_modpath != correct_modpath) or (correct_execpath != found_execpath): |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
983 |
msg = ("Detected shell (./waf shell) with incorrect configuration\n" |
1016
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
984 |
"=========================================================\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
985 |
"Possible reasons for this problem:\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
986 |
" 1. You switched to another ns-3 tree from inside this shell\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
987 |
" 2. You switched ns-3 debug level (waf configure --debug)\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
988 |
" 3. You modified the list of built ns-3 modules\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
989 |
"You should correct this situation before running any program. Possible solutions:\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
990 |
" 1. Exit this shell, and start a new one\n" |
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
991 |
" 2. Run a new nested shell") |
7496
ce1ec79d488c
waf1.6: make the all_modules in src/wscript be automatically discovered
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7495
diff
changeset
|
992 |
raise WafError(msg) |
1016
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
993 |
|
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
994 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
995 |
from waflib import Context, Build |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
996 |
class Ns3ShellContext(Context.Context): |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
997 |
"""run a shell with an environment suitably modified to run locally built programs""" |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
998 |
cmd = 'shell' |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
999 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1000 |
def execute(self): |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1001 |
|
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1002 |
# first we execute the build |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1003 |
bld = Context.create_context("build") |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1004 |
bld.options = Options.options # provided for convenience |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1005 |
bld.cmd = "build" |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1006 |
bld.execute() |
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4202
diff
changeset
|
1007 |
|
7636
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
1008 |
# Set this so that the lists won't be printed when the user |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
1009 |
# exits the shell. |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
1010 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
58181e75d0f0
bug 1305 - do not list modules when exiting waf shell
Mitch Watrous <watrous@u.washington.edu>
parents:
7593
diff
changeset
|
1011 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1012 |
if sys.platform == 'win32': |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1013 |
shell = os.environ.get("COMSPEC", "cmd.exe") |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1014 |
else: |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1015 |
shell = os.environ.get("SHELL", "/bin/sh") |
1016
58a56b52a08b
Detect when running waf --shell with stale environment variables and give an error when it happens.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1015
diff
changeset
|
1016 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1017 |
env = bld.env |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1018 |
os_env = { |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1019 |
'NS3_MODULE_PATH': os.pathsep.join(env['NS3_MODULE_PATH']), |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1020 |
'NS3_EXECUTABLE_PATH': os.pathsep.join(env['NS3_EXECUTABLE_PATH']), |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1021 |
} |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1022 |
wutils.run_argv([shell], env, os_env) |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7463
diff
changeset
|
1023 |
|
672
184d5a505279
WAF: remove the rpath options, and add --run and --shell as replacements; additionally, the new options "should" work on Mac OS X, as well as linux2 and win32.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
671
diff
changeset
|
1024 |
|
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
1025 |
def _doxygen(bld): |
5392
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1026 |
env = wutils.bld.env |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1027 |
proc_env = wutils.get_proc_env() |
1536
23593050aa96
Run the program print-trace-sources to generate doc/trace-source-list.h when generating docs. As a side effect, --doxygen is now has to be processed at the end of the build.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1532
diff
changeset
|
1028 |
|
6669
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1029 |
if not env['DOXYGEN']: |
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1030 |
Logs.error("waf configure did not detect doxygen in the system -> cannot build api docs.") |
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1031 |
raise SystemExit(1) |
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1032 |
return |
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1033 |
|
5392
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1034 |
try: |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1035 |
program_obj = wutils.find_program('print-introspected-doxygen', env) |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1036 |
except ValueError: |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1037 |
Logs.warn("print-introspected-doxygen does not exist") |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1038 |
raise SystemExit(1) |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1039 |
return |
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1040 |
|
7518
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1041 |
prog = program_obj.path.find_or_declare(program_obj.target).abspath() |
6254
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1042 |
|
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1043 |
if not os.path.exists(prog): |
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1044 |
Logs.error("print-introspected-doxygen has not been built yet." |
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1045 |
" You need to build ns-3 at least once before " |
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1046 |
"generating doxygen docs...") |
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1047 |
raise SystemExit(1) |
e794047931fb
Make --doxygen-no-build check if print-introspected-doxygen has been built, error out if not. Fixes #884
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6214
diff
changeset
|
1048 |
|
7527
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1049 |
# Create a header file with the introspected information. |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1050 |
doxygen_out = open(os.path.join('doc', 'introspected-doxygen.h'), 'w') |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1051 |
if subprocess.Popen([prog], stdout=doxygen_out, env=proc_env).wait(): |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1052 |
raise SystemExit(1) |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1053 |
doxygen_out.close() |
5392
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1054 |
|
7527
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1055 |
# Create a text file with the introspected information. |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1056 |
text_out = open(os.path.join('doc', 'ns3-object.txt'), 'w') |
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1057 |
if subprocess.Popen([prog, '--output-text'], stdout=text_out, env=proc_env).wait(): |
5392
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1058 |
raise SystemExit(1) |
7527
6e8c5ebcc1ae
Make waf create text file with introspected information
Mitch Watrous <watrous@u.washington.edu>
parents:
7524
diff
changeset
|
1059 |
text_out.close() |
5392
80b9ae7b5e26
remind waf how to generate introspected doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents:
5372
diff
changeset
|
1060 |
|
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1061 |
doxygen_config = os.path.join('doc', 'doxygen.conf') |
6669
dbf2efe4b762
Give a more user-friendly error message when doxygen is not found
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6647
diff
changeset
|
1062 |
if subprocess.Popen([env['DOXYGEN'], doxygen_config]).wait(): |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1063 |
raise SystemExit(1) |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1064 |
|
7518
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1065 |
|
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1066 |
from waflib import Context, Build |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1067 |
|
7532
0b875c99c8b4
Fix copy-paste typo
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7528
diff
changeset
|
1068 |
class Ns3DoxygenContext(Context.Context): |
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
1069 |
"""do a full build, generate the introspected doxygen and then the doxygen""" |
7518
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1070 |
cmd = 'doxygen' |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1071 |
def execute(self): |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1072 |
# first we execute the build |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1073 |
bld = Context.create_context("build") |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1074 |
bld.options = Options.options # provided for convenience |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1075 |
bld.cmd = "build" |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1076 |
bld.execute() |
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1077 |
_doxygen(bld) |
5468
6eebad1fb54d
Bring back the --doxygen-no-build option from the dead.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5463
diff
changeset
|
1078 |
|
7518
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1079 |
|
91f889c8fc43
Possibly fix the waf doxygen command
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7510
diff
changeset
|
1080 |
|
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1081 |
def lcov_report(bld): |
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1082 |
env = bld.env |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1083 |
|
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1084 |
if not env['GCOV_ENABLED']: |
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1085 |
raise WafError("project not configured for code coverage;" |
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1086 |
" reconfigure with --enable-gcov") |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1087 |
|
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1088 |
os.chdir(out) |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1089 |
try: |
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1090 |
lcov_report_dir = 'lcov-report' |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1091 |
create_dir_command = "rm -rf " + lcov_report_dir |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1092 |
create_dir_command += " && mkdir " + lcov_report_dir + ";" |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1093 |
|
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1094 |
if subprocess.Popen(create_dir_command, shell=True).wait(): |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
1095 |
raise SystemExit(1) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
1096 |
|
7493
3bbefa91e694
Fix the --lcov-report option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7492
diff
changeset
|
1097 |
info_file = os.path.join(lcov_report_dir, 'report.info') |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1098 |
lcov_command = "../utils/lcov/lcov -c -d . -o " + info_file |
7551 | 1099 |
lcov_command += " -b " + os.getcwd() |
671
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1100 |
if subprocess.Popen(lcov_command, shell=True).wait(): |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1101 |
raise SystemExit(1) |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1102 |
|
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1103 |
genhtml_command = "../utils/lcov/genhtml -o " + lcov_report_dir |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1104 |
genhtml_command += " " + info_file |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1105 |
if subprocess.Popen(genhtml_command, shell=True).wait(): |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1106 |
raise SystemExit(1) |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1107 |
finally: |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1108 |
os.chdir("..") |
4bec4600950c
WAF: cleanup code by putting lcov and doxygen handling into their own separate functions
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
649
diff
changeset
|
1109 |