author | Gustavo J. A. M. Carneiro <gjc@inescporto.pt> |
Thu, 27 Sep 2007 12:40:01 +0100 | |
changeset 1531 | ebd805503b55 |
parent 1506 | 3c8b23550e6a |
child 1532 | 1f54822519c0 |
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; -*- |
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
|
2 |
import sys |
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
|
3 |
import shlex |
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
|
4 |
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
|
5 |
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
|
6 |
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
|
7 |
import os.path |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
8 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
9 |
import Params |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
10 |
import Object |
649
1d12fb509a0d
WAF: import the WAF subprocess replacement module 'pproc', to make it work on Python 2.3.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
647
diff
changeset
|
11 |
import pproc as subprocess |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
12 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
13 |
Params.g_autoconfig = 1 |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
14 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
15 |
# the following two variables are used by the target "waf dist" |
694
bfad4514a789
WAF: correct values of VERSION and APPNAME, for waf dist
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
693
diff
changeset
|
16 |
VERSION = file("VERSION").read().strip() |
bfad4514a789
WAF: correct values of VERSION and APPNAME, for waf dist
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
693
diff
changeset
|
17 |
APPNAME = 'ns' |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
18 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
19 |
# these variables are mandatory ('/' are converted automatically) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
20 |
srcdir = '.' |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
21 |
blddir = 'build' |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
22 |
|
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
|
23 |
def dist_hook(): |
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
|
24 |
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
|
25 |
shutil.rmtree("doc/latex", True) |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
26 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
27 |
def set_options(opt): |
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
|
28 |
|
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
|
29 |
def debug_option_callback(option, opt, value, parser): |
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
|
30 |
if value == 'debug': |
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
|
31 |
setattr(parser.values, option.dest, 'ultradebug') |
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
|
32 |
elif value == 'optimized': |
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
|
33 |
setattr(parser.values, option.dest, 'optimized') |
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
|
34 |
else: |
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
|
35 |
raise optparse.OptionValueError("allowed --debug-level values" |
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
|
36 |
" are debug, optimized.") |
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
|
37 |
|
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
|
38 |
opt.add_option('-d', '--debug-level', |
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
|
39 |
action='callback', |
1425
e4cdb57f162c
WAF: fix debug level to be 'ultradebug' by default, instead of 'debug'.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1424
diff
changeset
|
40 |
type="string", dest='debug_level', default='ultradebug', |
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
|
41 |
help=('Specify the debug level, does nothing if CFLAGS is set' |
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
|
42 |
' in the environment. [Allowed Values: debug, optimized].' |
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
|
43 |
' 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
|
44 |
'with the configure command.'), |
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
|
45 |
callback=debug_option_callback) |
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
|
46 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
47 |
# options provided by the modules |
642
033f1f4891ab
Make WAF check for the abstract tool 'compiler_cxx', instead of manually checking for multiple compilers.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
600
diff
changeset
|
48 |
opt.tool_options('compiler_cxx') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
49 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
50 |
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
|
51 |
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
|
52 |
' 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
|
53 |
'with the configure command.'), |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
54 |
action="store_true", default=False, |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
55 |
dest='enable_gcov') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
56 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
57 |
opt.add_option('--lcov-report', |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
58 |
help=('Generate a code coverage report ' |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
59 |
'(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
|
60 |
action="store_true", default=False, |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
61 |
dest='lcov_report') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
62 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
63 |
opt.add_option('--doxygen', |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
64 |
help=('Run doxygen to generate html documentation from source comments'), |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
65 |
action="store_true", default=False, |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
66 |
dest='doxygen') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
67 |
|
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
|
68 |
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
|
69 |
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
|
70 |
' 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
|
71 |
type="string", default='', dest='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
|
72 |
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
|
73 |
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
|
74 |
' 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
|
75 |
' 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
|
76 |
type="string", default=None, dest='command_template') |
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
|
77 |
|
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
|
78 |
opt.add_option('--shell', |
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
|
79 |
help=('Run a shell with an environment suitably modified to run locally built programs'), |
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
|
80 |
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
|
81 |
dest='shell') |
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
|
82 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
83 |
# options provided in a script in a subdirectory named "src" |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
84 |
opt.sub_options('src') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
85 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
86 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
87 |
def configure(conf): |
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
|
88 |
conf.check_tool('compiler_cxx') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
89 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
90 |
# create the second environment, set the variant and set its name |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
91 |
variant_env = conf.env.copy() |
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
|
92 |
debug_level = Params.g_options.debug_level.lower() |
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
|
93 |
if debug_level == 'ultradebug': |
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
|
94 |
variant_name = 'debug' |
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
|
95 |
else: |
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
|
96 |
variant_name = debug_level |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
97 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
98 |
if Params.g_options.enable_gcov: |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
99 |
variant_name += '-gcov' |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
100 |
variant_env.append_value('CCFLAGS', '-fprofile-arcs') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
101 |
variant_env.append_value('CCFLAGS', '-ftest-coverage') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
102 |
variant_env.append_value('CXXFLAGS', '-fprofile-arcs') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
103 |
variant_env.append_value('CXXFLAGS', '-ftest-coverage') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
104 |
variant_env.append_value('LINKFLAGS', '-fprofile-arcs') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
105 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
106 |
conf.env['NS3_ACTIVE_VARIANT'] = variant_name |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
107 |
variant_env['NS3_ACTIVE_VARIANT'] = variant_name |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
108 |
variant_env.set_variant(variant_name) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
109 |
conf.set_env_name(variant_name, variant_env) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
110 |
conf.setenv(variant_name) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
111 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
112 |
variant_env.append_value('CXXDEFINES', 'RUN_SELF_TESTS') |
786
78982ea24359
WAF: be careful not to set gcc-specific flags (like -Werror) when using a non-gcc compiler.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
785
diff
changeset
|
113 |
|
924
fa23f33acca0
WAF: don't change CXXFLAGS if CXXFLAGS is set in the OS environment (so that user CXXFLAGS take precedence).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
923
diff
changeset
|
114 |
if (os.path.basename(conf.env['CXX']).startswith("g++") |
fa23f33acca0
WAF: don't change CXXFLAGS if CXXFLAGS is set in the OS environment (so that user CXXFLAGS take precedence).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
923
diff
changeset
|
115 |
and 'CXXFLAGS' not in os.environ): |
1424
5c9314e6cfa1
WAF: remove redundant -Wall (was appearing twice)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1307
diff
changeset
|
116 |
variant_env.append_value('CXXFLAGS', ['-Werror']) |
786
78982ea24359
WAF: be careful not to set gcc-specific flags (like -Werror) when using a non-gcc compiler.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
785
diff
changeset
|
117 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
118 |
if 'debug' in Params.g_options.debug_level.lower(): |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
119 |
variant_env.append_value('CXXDEFINES', 'NS3_DEBUG_ENABLE') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
120 |
variant_env.append_value('CXXDEFINES', 'NS3_ASSERT_ENABLE') |
1506
3c8b23550e6a
disable log unless debug build
Craig Dowell <craigdo@ee.washington.edu>
parents:
1502
diff
changeset
|
121 |
variant_env.append_value('CXXDEFINES', 'NS3_LOG_ENABLE') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
122 |
|
923
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
123 |
## In optimized builds we still want debugging symbols, e.g. for |
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
124 |
## profiling, and at least partially usable stack traces. |
924
fa23f33acca0
WAF: don't change CXXFLAGS if CXXFLAGS is set in the OS environment (so that user CXXFLAGS take precedence).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
923
diff
changeset
|
125 |
if ('optimized' in Params.g_options.debug_level.lower() |
fa23f33acca0
WAF: don't change CXXFLAGS if CXXFLAGS is set in the OS environment (so that user CXXFLAGS take precedence).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
923
diff
changeset
|
126 |
and 'CXXFLAGS' not in os.environ): |
923
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
127 |
for flag in variant_env['CXXFLAGS_DEBUG']: |
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
128 |
## this probably doesn't work for MSVC |
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
129 |
if flag.startswith('-g'): |
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
130 |
variant_env.append_value('CXXFLAGS', flag) |
f5d38217e7a2
WAF: add debugging symbols to optimized builds
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
921
diff
changeset
|
131 |
|
1426
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
132 |
## in optimized builds, replace -O2 with -O3 |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
133 |
if 'optimized' in Params.g_options.debug_level.lower(): |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
134 |
lst = variant_env['CXXFLAGS'] |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
135 |
for i, flag in enumerate(lst): |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
136 |
if flag == '-O2': |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
137 |
lst[i] = '-O3' |
30b9f2b59a1c
WAF: in optimized builds, replace -O2 with -O3
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1425
diff
changeset
|
138 |
|
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
|
139 |
if sys.platform == 'win32': |
786
78982ea24359
WAF: be careful not to set gcc-specific flags (like -Werror) when using a non-gcc compiler.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
785
diff
changeset
|
140 |
if os.path.basename(conf.env['CXX']).startswith("g++"): |
78982ea24359
WAF: be careful not to set gcc-specific flags (like -Werror) when using a non-gcc compiler.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
785
diff
changeset
|
141 |
variant_env.append_value("LINKFLAGS", "-Wl,--enable-runtime-pseudo-reloc") |
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
|
142 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
143 |
conf.sub_config('src') |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
144 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
145 |
|
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
|
146 |
def create_ns3_program(bld, name, dependencies=('simulator',)): |
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
|
147 |
program = bld.create_obj('cpp', '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
|
148 |
program.name = name |
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
|
149 |
program.target = program.name |
1220
4933e0890acd
Build all modules as a single ns3 shared library.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1217
diff
changeset
|
150 |
program.uselib_local = 'ns3' |
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
|
151 |
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
|
152 |
|
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
|
153 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
154 |
def build(bld): |
1307
fa2e8988fda7
Add some tweaks to enable building under emacs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1306
diff
changeset
|
155 |
print "Entering directory `%s/build'" % Params.g_build.m_curdirnode.abspath() |
fa2e8988fda7
Add some tweaks to enable building under emacs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1306
diff
changeset
|
156 |
Params.g_cwd_launch = Params.g_build.m_curdirnode.abspath() |
fa2e8988fda7
Add some tweaks to enable building under emacs.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1306
diff
changeset
|
157 |
|
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
|
158 |
bld.create_ns3_program = types.MethodType(create_ns3_program, bld) |
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
|
159 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
160 |
variant_name = bld.env_of_name('default')['NS3_ACTIVE_VARIANT'] |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
161 |
variant_env = bld.env_of_name(variant_name) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
162 |
bld.m_allenvs['default'] = variant_env # switch to the active variant |
762
b64b1d4eadc0
WAF: process --run and --shell command-line options sooner, before running the build, since we may need a shell before the build finishes, in case the program to debug is part of the build itself.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
695
diff
changeset
|
163 |
|
915
9006896544b3
WAF: make the --run option work again
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
787
diff
changeset
|
164 |
if Params.g_options.shell: |
762
b64b1d4eadc0
WAF: process --run and --shell command-line options sooner, before running the build, since we may need a shell before the build finishes, in case the program to debug is part of the build itself.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
695
diff
changeset
|
165 |
run_shell() |
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
|
166 |
raise SystemExit(0) |
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
|
167 |
|
1213
5cfb41f30846
WAF: handle --doxygen before building; now only generates docs and does not build anything.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1016
diff
changeset
|
168 |
if Params.g_options.doxygen: |
5cfb41f30846
WAF: handle --doxygen before building; now only generates docs and does not build anything.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1016
diff
changeset
|
169 |
doxygen() |
5cfb41f30846
WAF: handle --doxygen before building; now only generates docs and does not build anything.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1016
diff
changeset
|
170 |
raise SystemExit(0) |
5cfb41f30846
WAF: handle --doxygen before building; now only generates docs and does not build anything.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1016
diff
changeset
|
171 |
|
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
|
172 |
check_shell() |
762
b64b1d4eadc0
WAF: process --run and --shell command-line options sooner, before running the build, since we may need a shell before the build finishes, in case the program to debug is part of the build itself.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
695
diff
changeset
|
173 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
174 |
# process subfolders from here |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
175 |
bld.add_subdirs('src') |
1502
4b4799567e2a
add tutorial directory and hello-simulator
Craig Dowell <craigdo@ee.washington.edu>
parents:
1426
diff
changeset
|
176 |
bld.add_subdirs('samples utils examples tutorial') |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
177 |
|
1306
8834e434187f
Build the ns3 library in the build/<variant> root, not in build/<variant>/src.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1289
diff
changeset
|
178 |
## Create a single ns3 library containing all modules |
8834e434187f
Build the ns3 library in the build/<variant> root, not in build/<variant>/src.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1289
diff
changeset
|
179 |
lib = bld.create_obj('cpp', 'shlib') |
8834e434187f
Build the ns3 library in the build/<variant> root, not in build/<variant>/src.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1289
diff
changeset
|
180 |
lib.name = 'ns3' |
8834e434187f
Build the ns3 library in the build/<variant> root, not in build/<variant>/src.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1289
diff
changeset
|
181 |
lib.target = 'ns3' |
8834e434187f
Build the ns3 library in the build/<variant> root, not in build/<variant>/src.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1289
diff
changeset
|
182 |
lib.add_objects = list(bld.env_of_name('default')['NS3_MODULES']) |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
183 |
|
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
184 |
def shutdown(): |
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
|
185 |
#import UnitTest |
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
|
186 |
#ut = UnitTest.unit_test() |
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
|
187 |
#ut.change_to_testfile_dir = True |
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
|
188 |
#ut.want_to_see_test_output = True |
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
|
189 |
#ut.want_to_see_test_error = True |
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
|
190 |
#ut.run() |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
191 |
#ut.print_results() |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
192 |
|
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
|
193 |
if Params.g_commands['check']: |
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
|
194 |
run_program('run-tests') |
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
|
195 |
|
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
196 |
if Params.g_options.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
|
197 |
lcov_report() |
537
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
198 |
|
915
9006896544b3
WAF: make the --run option work again
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
787
diff
changeset
|
199 |
if Params.g_options.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
|
200 |
run_program(Params.g_options.run, Params.g_options.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
|
201 |
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
|
202 |
|
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
|
203 |
if Params.g_options.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
|
204 |
Params.fatal("Option --command-template requires the option --run to be given") |
915
9006896544b3
WAF: make the --run option work again
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
787
diff
changeset
|
205 |
|
918
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
206 |
def _find_program(program_name, env): |
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
207 |
launch_dir = os.path.abspath(Params.g_cwd_launch) |
916
1eca7915ca9e
WAF: when the program specified by --run is not found, print a list of all available program names in the error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
915
diff
changeset
|
208 |
found_programs = [] |
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
|
209 |
for obj in Object.g_allobjs: |
916
1eca7915ca9e
WAF: when the program specified by --run is not found, print a list of all available program names in the error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
915
diff
changeset
|
210 |
if obj.m_type != 'program' or not obj.target: |
1eca7915ca9e
WAF: when the program specified by --run is not found, print a list of all available program names in the error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
915
diff
changeset
|
211 |
continue |
918
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
212 |
|
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
213 |
## filter out programs not in the subtree starting at the launch dir |
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
214 |
if not (obj.path.abspath().startswith(launch_dir) |
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
215 |
or obj.path.abspath(env).startswith(launch_dir)): |
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
216 |
continue |
1ecec08ba4ba
WAF: option --run now filters out programs not in the subtree starting at the launch dir
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
917
diff
changeset
|
217 |
|
916
1eca7915ca9e
WAF: when the program specified by --run is not found, print a list of all available program names in the error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
915
diff
changeset
|
218 |
found_programs.append(obj.target) |
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
|
219 |
if obj.target == program_name: |
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
|
220 |
return obj |
917
aed7f1b9e783
WAF: fix simple typo in error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
916
diff
changeset
|
221 |
raise ValueError("program '%s' not found; available programs are: %r" |
916
1eca7915ca9e
WAF: when the program specified by --run is not found, print a list of all available program names in the error message.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
915
diff
changeset
|
222 |
% (program_name, found_programs)) |
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
|
223 |
|
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
|
224 |
def _run_argv(argv, os_env=None): |
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
|
225 |
env = Params.g_build.env_of_name('default') |
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
|
226 |
if sys.platform == 'linux2': |
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
|
227 |
pathvar = 'LD_LIBRARY_PATH' |
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
|
228 |
elif sys.platform == 'darwin': |
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
|
229 |
pathvar = 'DYLD_LIBRARY_PATH' |
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
|
230 |
elif sys.platform == 'win32': |
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
|
231 |
pathvar = 'PATH' |
785
bf8e7773836a
WAF: configure dynamic path for the cygwin platform.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
764
diff
changeset
|
232 |
elif sys.platform == 'cygwin': |
bf8e7773836a
WAF: configure dynamic path for the cygwin platform.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
764
diff
changeset
|
233 |
pathvar = 'PATH' |
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
|
234 |
else: |
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
|
235 |
Params.warning(("Don't know how to configure " |
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
|
236 |
"dynamic library path for the platform '%s'") % (sys.platform,)) |
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
|
237 |
pathvar = None |
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
|
238 |
|
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
|
239 |
proc_env = dict(os.environ) |
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
|
240 |
if os_env is not None: |
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
|
241 |
proc_env.update(os_env) |
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
|
242 |
|
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
|
243 |
if pathvar is not None: |
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
|
244 |
if pathvar in proc_env: |
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
|
245 |
proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH']) + [proc_env[pathvar]]) |
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
|
246 |
else: |
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
|
247 |
proc_env[pathvar] = os.pathsep.join(list(env['NS3_MODULE_PATH'])) |
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
|
248 |
|
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
|
249 |
retval = subprocess.Popen(argv, env=proc_env).wait() |
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
|
250 |
if retval: |
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
|
251 |
Params.fatal("Command %s exited with code %i" % (argv, retval)) |
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
|
252 |
|
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
|
253 |
|
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
|
254 |
def run_program(program_string, command_template=None): |
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
|
255 |
""" |
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
|
256 |
if command_template is not None, then program_string == 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
|
257 |
name and argv is given by command_template with %s replaced by the |
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
|
258 |
full path to the program. Else, program_string is interpreted as |
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
|
259 |
a shell command with first name being the 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
|
260 |
""" |
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
|
261 |
env = Params.g_build.env_of_name('default') |
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
|
262 |
|
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
|
263 |
if command_template is None: |
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
|
264 |
argv = shlex.split(program_string) |
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
|
265 |
program_name = argv[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
|
266 |
|
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
|
267 |
try: |
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
|
268 |
program_obj = _find_program(program_name, env) |
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
|
269 |
except ValueError, ex: |
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
|
270 |
Params.fatal(str(ex)) |
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
|
271 |
|
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
|
272 |
try: |
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
|
273 |
program_node, = program_obj.m_linktask.m_outputs |
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
|
274 |
except AttributeError: |
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
|
275 |
Params.fatal("%s does not appear to be a program" % (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
|
276 |
|
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
|
277 |
execvec = [program_node.abspath(env)] + argv[1:] |
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
|
278 |
|
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
|
279 |
else: |
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
|
280 |
|
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
|
281 |
program_name = program_string |
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
|
282 |
try: |
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
|
283 |
program_obj = _find_program(program_name, env) |
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
|
284 |
except ValueError, ex: |
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
|
285 |
Params.fatal(str(ex)) |
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
|
286 |
try: |
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
|
287 |
program_node, = program_obj.m_linktask.m_outputs |
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
|
288 |
except AttributeError: |
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
|
289 |
Params.fatal("%s does not appear to be a program" % (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
|
290 |
|
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
|
291 |
execvec = shlex.split(command_template % (program_node.abspath(env),)) |
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
|
292 |
|
919
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
293 |
|
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
294 |
former_cwd = os.getcwd() |
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
295 |
os.chdir(Params.g_cwd_launch) |
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
296 |
try: |
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
|
297 |
retval = _run_argv(execvec) |
919
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
298 |
finally: |
a9c7effce441
WAF: --run now runs the specified program from the directory where waf was invoked.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
918
diff
changeset
|
299 |
os.chdir(former_cwd) |
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
|
300 |
|
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
|
301 |
return retval |
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
|
302 |
|
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
|
303 |
def check_shell(): |
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
|
304 |
if 'NS3_MODULE_PATH' not in os.environ: |
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
|
305 |
return |
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
|
306 |
env = Params.g_build.env_of_name('default') |
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
|
307 |
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
|
308 |
found_modpath = os.environ['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
|
309 |
if found_modpath != correct_modpath: |
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
|
310 |
msg = ("Detected shell (waf --shell) with incorrect configuration\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
|
311 |
"=========================================================\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
|
312 |
"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
|
313 |
" 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
|
314 |
" 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
|
315 |
" 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
|
316 |
"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
|
317 |
" 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
|
318 |
" 2. Run a new nested shell") |
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
|
319 |
Params.fatal(msg) |
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
|
320 |
|
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
|
321 |
|
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
|
322 |
def run_shell(): |
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
|
323 |
if sys.platform == 'win32': |
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
|
324 |
shell = os.environ.get("COMSPEC", "cmd.exe") |
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
|
325 |
else: |
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
|
326 |
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
|
327 |
|
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
|
328 |
env = Params.g_build.env_of_name('default') |
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
|
329 |
_run_argv([shell], {'NS3_MODULE_PATH': os.pathsep.join(env['NS3_MODULE_PATH'])}) |
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
|
330 |
|
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
|
331 |
|
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
|
332 |
def doxygen(): |
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
|
333 |
doxygen_config = os.path.join('doc', 'doxygen.conf') |
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
|
334 |
if subprocess.Popen(['doxygen', doxygen_config]).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
|
335 |
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
|
336 |
|
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
|
337 |
|
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
|
338 |
def lcov_report(): |
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
|
339 |
env = Params.g_build.env_of_name('default') |
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
|
340 |
variant_name = env['NS3_ACTIVE_VARIANT'] |
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
|
341 |
|
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
|
342 |
if 'gcov' not in variant_name: |
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
|
343 |
Params.fatal("project not configured for code coverage;" |
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
|
344 |
" reconfigure with --enable-gcov") |
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
|
345 |
|
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
|
346 |
os.chdir(blddir) |
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
|
347 |
try: |
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
|
348 |
lcov_report_dir = os.path.join(variant_name, 'lcov-report') |
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
|
349 |
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
|
350 |
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
|
351 |
|
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
|
352 |
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
|
353 |
raise SystemExit(1) |
e8a4183dfe00
Add support for building with WAF
Gustavo J. A. M. Carneiro <gjcarneiro@gmail.com>
parents:
diff
changeset
|
354 |
|
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
|
355 |
info_file = os.path.join(lcov_report_dir, variant_name + '.info') |
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
|
356 |
lcov_command = "../utils/lcov/lcov -c -d . -o " + 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
|
357 |
lcov_command += " --source-dirs=" + os.getcwd() |
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
|
358 |
lcov_command += ":" + os.path.join( |
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
|
359 |
os.getcwd(), variant_name, 'include') |
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
|
360 |
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
|
361 |
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
|
362 |
|
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
|
363 |
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
|
364 |
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
|
365 |
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
|
366 |
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
|
367 |
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
|
368 |
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
|
369 |