author | Vedran Miletić <rivanvx@gmail.com> |
Tue, 23 Jun 2015 14:40:12 +0200 | |
changeset 11459 | b08e8279b57d |
parent 11458 | 126b15bc1efc |
child 11471 | ca8699410ede |
permissions | -rw-r--r-- |
3408 | 1 |
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
2 |
import types |
3408 | 3 |
import re |
4 |
import os |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
5 |
import subprocess |
3408 | 6 |
import shutil |
3619
a97d3ed04035
Disable Python support on the CygWin platform, at least until/if the problems are fixed.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3612
diff
changeset
|
7 |
import sys |
3408 | 8 |
|
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
9 |
from waflib import Task, Options, Configure, TaskGen, Logs, Build, Utils, Errors |
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
10 |
from waflib.Errors import WafError |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3977
diff
changeset
|
11 |
|
9721
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
12 |
# feature = TaskGen.feature |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
13 |
# after = TaskGen.after |
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
14 |
|
3408 | 15 |
## https://launchpad.net/pybindgen/ |
10973
0114887f7644
Pull new pybindgen version to fix the build, again.
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10972
diff
changeset
|
16 |
REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 886) |
3408 | 17 |
REQUIRED_PYGCCXML_VERSION = (0, 9, 5) |
18 |
||
10398
458687e0055d
bug 1622: make apiscan Task always run
Tom Henderson <tomh@tomh.org>
parents:
10214
diff
changeset
|
19 |
RUN_ME=-3 |
6137
86045031f03a
Add option to enable gcc precompiled header for compiling python bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6134
diff
changeset
|
20 |
|
3873
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
21 |
def add_to_python_path(path): |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
22 |
if os.environ.get('PYTHONPATH', ''): |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
23 |
os.environ['PYTHONPATH'] = path + os.pathsep + os.environ.get('PYTHONPATH') |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
24 |
else: |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
25 |
os.environ['PYTHONPATH'] = path |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
26 |
|
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
27 |
def set_pybindgen_pythonpath(env): |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
28 |
if env['WITH_PYBINDGEN']: |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
29 |
add_to_python_path(env['WITH_PYBINDGEN']) |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
30 |
|
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
31 |
|
7488
72d0c878f3c7
More waf 1.6.7 build fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7487
diff
changeset
|
32 |
def options(opt): |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
33 |
opt.load('python') |
3637
a6d8bf62a61d
For better consistency, option --nsc becomes --enable-nsc, --python-disable becomes --disable-python.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3625
diff
changeset
|
34 |
opt.add_option('--disable-python', |
3408 | 35 |
help=("Don't build Python bindings."), |
36 |
action="store_true", default=False, |
|
37 |
dest='python_disable') |
|
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
38 |
opt.add_option('--apiscan', |
7503
0d495639ee3e
Remove the EXPERIMENTAL from --apiscan option help
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7494
diff
changeset
|
39 |
help=("Rescan the API for the indicated module(s), for Python bindings. " |
6923
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
40 |
"Needs working GCCXML / pygccxml environment. " |
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
41 |
"The metamodule 'all' expands to all available ns-3 modules."), |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
42 |
default=None, dest='apiscan', metavar="MODULE[,MODULE...]") |
3873
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
43 |
opt.add_option('--with-pybindgen', |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
44 |
help=('Path to an existing pybindgen source tree to use.'), |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
45 |
default=None, |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
46 |
dest='with_pybindgen', type="string") |
7517
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
47 |
opt.add_option('--with-python', |
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
48 |
help=('Path to the Python interpreter to use.'), |
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
49 |
default=None, dest='with_python', type="string") |
10639
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
50 |
opt.add_option('--no32bit-scan', |
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
51 |
help=("Don't scan for the 32-bit variant of the bindings on 64-bit platforms."), |
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
52 |
action="store_true", default=False, |
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
53 |
dest='no32bit_scan') |
3408 | 54 |
|
55 |
||
56 |
def configure(conf): |
|
57 |
conf.env['ENABLE_PYTHON_BINDINGS'] = False |
|
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3977
diff
changeset
|
58 |
if Options.options.python_disable: |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
59 |
conf.report_optional_feature("python", "Python Bindings", False, |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
60 |
"disabled by user request") |
3408 | 61 |
return |
7468
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
62 |
# Disable python in static builds (bug #1253) |
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
63 |
if ((conf.env['ENABLE_STATIC_NS3']) or \ |
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
64 |
(conf.env['ENABLE_SHARED_AND_STATIC_NS3'])): |
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
65 |
conf.report_optional_feature("python", "Python Bindings", False, |
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
66 |
"bindings incompatible with static build") |
7b8dfd1b02f6
Bug 1253 - disable python bindings if static build selected
Tom Henderson <tomh@tomh.org>
parents:
7462
diff
changeset
|
67 |
return |
3408 | 68 |
|
6919
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
69 |
enabled_modules = list(conf.env['NS3_ENABLED_MODULES']) |
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
70 |
enabled_modules.sort() |
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
71 |
available_modules = list(conf.env['NS3_MODULES']) |
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
72 |
available_modules.sort() |
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
73 |
all_modules_enabled = (enabled_modules == available_modules) |
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
74 |
|
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
75 |
conf.load('misc', tooldir=['waf-tools']) |
3408 | 76 |
|
5251
306856feb249
Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5249
diff
changeset
|
77 |
if sys.platform == 'cygwin': |
306856feb249
Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5249
diff
changeset
|
78 |
conf.report_optional_feature("python", "Python Bindings", False, |
306856feb249
Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5249
diff
changeset
|
79 |
"unsupported platform 'cygwin'") |
306856feb249
Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5249
diff
changeset
|
80 |
Logs.warn("Python is not supported in CygWin environment. Try MingW instead.") |
306856feb249
Put back the configure check to disable python bindings in cygwin, due to our inability to install gccxml in cygwin.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5249
diff
changeset
|
81 |
return |
3619
a97d3ed04035
Disable Python support on the CygWin platform, at least until/if the problems are fixed.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3612
diff
changeset
|
82 |
|
7517
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
83 |
|
3408 | 84 |
## Check for Python |
7517
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
85 |
|
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
86 |
if Options.options.with_python is not None: |
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
87 |
conf.env.PYTHON = Options.options.with_python |
319c875844d7
Add a --with-python configuration option
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7509
diff
changeset
|
88 |
|
3408 | 89 |
try: |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
90 |
conf.load('python') |
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
91 |
except Errors.ConfigurationError, ex: |
7716
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
92 |
conf.report_optional_feature("python", "Python Bindings", False, |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
93 |
"The python interpreter was not found") |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
94 |
return |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
95 |
try: |
3473
6bce86ea4778
Require new PyBindGen; make it work for Python 2.3.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3468
diff
changeset
|
96 |
conf.check_python_version((2,3)) |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
97 |
except Errors.ConfigurationError, ex: |
7716
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
98 |
conf.report_optional_feature("python", "Python Bindings", False, |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
99 |
"The python found version is too low (2.3 required)") |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
100 |
return |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
101 |
try: |
3408 | 102 |
conf.check_python_headers() |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
103 |
except Errors.ConfigurationError, ex: |
7716
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
104 |
conf.report_optional_feature("python", "Python Bindings", False, |
8758b76b756c
Bug 1273 - Better error message on missing Python development files
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7715
diff
changeset
|
105 |
"Python library or headers missing") |
3408 | 106 |
return |
107 |
||
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
108 |
# stupid Mac OSX Python wants to build extensions as "universal |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
109 |
# binaries", i386, x86_64, and ppc, but this way the type |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
110 |
# __uint128_t is not available. We need to disable the multiarch |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
111 |
# crap by removing the -arch parameters. |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
112 |
for flags_var in ["CFLAGS_PYEXT", "CFLAGS_PYEMBED", "CXXFLAGS_PYEMBED", |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
113 |
"CXXFLAGS_PYEXT", "LINKFLAGS_PYEMBED", "LINKFLAGS_PYEXT"]: |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
114 |
flags = conf.env[flags_var] |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
115 |
i = 0 |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
116 |
while i < len(flags): |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
117 |
if flags[i] == '-arch': |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
118 |
del flags[i] |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
119 |
del flags[i] |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
120 |
continue |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
121 |
i += 1 |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
122 |
conf.env[flags_var] = flags |
7363
0f96f5beb8c7
Bug 1200 - ./waf install doesn't install Python bindings properly
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7348
diff
changeset
|
123 |
|
4253
732b877beb23
Compile python bindings with -fvisibility=hidden, when possible. Closes #515.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4196
diff
changeset
|
124 |
# -fvisibility=hidden optimization |
4430
4a527879c7ab
Fix Python bindings build with gcc < 4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4395
diff
changeset
|
125 |
if (conf.env['CXX_NAME'] == 'gcc' and [int(x) for x in conf.env['CC_VERSION']] >= [4,0,0] |
4a527879c7ab
Fix Python bindings build with gcc < 4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4395
diff
changeset
|
126 |
and conf.check_compilation_flag('-fvisibility=hidden')): |
4253
732b877beb23
Compile python bindings with -fvisibility=hidden, when possible. Closes #515.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4196
diff
changeset
|
127 |
conf.env.append_value('CXXFLAGS_PYEXT', '-fvisibility=hidden') |
732b877beb23
Compile python bindings with -fvisibility=hidden, when possible. Closes #515.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4196
diff
changeset
|
128 |
conf.env.append_value('CCFLAGS_PYEXT', '-fvisibility=hidden') |
732b877beb23
Compile python bindings with -fvisibility=hidden, when possible. Closes #515.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4196
diff
changeset
|
129 |
|
7746
c1a97d303064
Add -Wno-array-bounds to compile the python bindings, for clang
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7716
diff
changeset
|
130 |
if conf.check_compilation_flag('-Wno-array-bounds'): |
c1a97d303064
Add -Wno-array-bounds to compile the python bindings, for clang
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7716
diff
changeset
|
131 |
conf.env.append_value('CXXFLAGS_PYEXT', '-Wno-array-bounds') |
c1a97d303064
Add -Wno-array-bounds to compile the python bindings, for clang
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7716
diff
changeset
|
132 |
|
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
133 |
# Check for the location of pybindgen |
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
134 |
if Options.options.with_pybindgen is not None: |
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
135 |
if os.path.isdir(Options.options.with_pybindgen): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
136 |
conf.msg("Checking for pybindgen location", ("%s (given)" % Options.options.with_pybindgen)) |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
137 |
conf.env['WITH_PYBINDGEN'] = os.path.abspath(Options.options.with_pybindgen) |
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
138 |
else: |
6591
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
139 |
# ns-3-dev uses ../pybindgen, while ns-3 releases use ../REQUIRED_PYBINDGEN_VERSION |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
140 |
pybindgen_dir = os.path.join('..', "pybindgen") |
6591
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
141 |
pybindgen_release_str = "pybindgen-" + '.'.join([str(x) for x in REQUIRED_PYBINDGEN_VERSION]) |
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
142 |
pybindgen_release_dir = os.path.join('..', pybindgen_release_str) |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
143 |
if os.path.isdir(pybindgen_dir): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
144 |
conf.msg("Checking for pybindgen location", ("%s (guessed)" % pybindgen_dir)) |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
145 |
conf.env['WITH_PYBINDGEN'] = os.path.abspath(pybindgen_dir) |
6591
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
146 |
elif os.path.isdir(pybindgen_release_dir): |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
147 |
conf.msg("Checking for pybindgen location", ("%s (guessed)" % pybindgen_release_dir)) |
6591
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
148 |
conf.env['WITH_PYBINDGEN'] = os.path.abspath(pybindgen_release_dir) |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
149 |
del pybindgen_dir |
6591
174d88119ebf
Help waf to guess release versions of nsc and pybindgen
Tom Henderson <tomh@tomh.org>
parents:
6574
diff
changeset
|
150 |
del pybindgen_release_dir |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
151 |
if not conf.env['WITH_PYBINDGEN']: |
7509
2531d57f638e
Minor cleanup
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7503
diff
changeset
|
152 |
conf.msg("Checking for pybindgen location", False) |
3873
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
153 |
|
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
154 |
# Check for pybindgen |
3873
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
155 |
|
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
156 |
set_pybindgen_pythonpath(conf.env) |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
157 |
|
3408 | 158 |
try: |
159 |
conf.check_python_module('pybindgen') |
|
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
160 |
except Errors.ConfigurationError: |
4077
d2e461e575f4
Don't build or fetch NSC/pybindgen, those tasks are now moved to ns-3-allinone
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4076
diff
changeset
|
161 |
Logs.warn("pybindgen missing => no python bindings") |
d2e461e575f4
Don't build or fetch NSC/pybindgen, those tasks are now moved to ns-3-allinone
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4076
diff
changeset
|
162 |
conf.report_optional_feature("python", "Python Bindings", False, |
d2e461e575f4
Don't build or fetch NSC/pybindgen, those tasks are now moved to ns-3-allinone
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4076
diff
changeset
|
163 |
"PyBindGen missing") |
4082
048db3e90b9b
Bug 467: waf configure enables python after detecting pybindgen is missing
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4077
diff
changeset
|
164 |
return |
3408 | 165 |
else: |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
166 |
out = subprocess.Popen([conf.env['PYTHON'][0], "-c", |
3408 | 167 |
"import pybindgen.version; " |
10642
2a4d3f9d09fd
Fixes to support Python >= 3.3 in ns3 python bindings
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10641
diff
changeset
|
168 |
"print('.'.join([str(x) for x in pybindgen.version.__version__]))"], |
3408 | 169 |
stdout=subprocess.PIPE).communicate()[0] |
170 |
pybindgen_version_str = out.strip() |
|
171 |
pybindgen_version = tuple([int(x) for x in pybindgen_version_str.split('.')]) |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
172 |
conf.msg('Checking for pybindgen version', pybindgen_version_str) |
4457
1b45505f9a52
Don't allow pybindgen version greater than our requested version, to avoid python scanning generating backward incompatible API defs.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4440
diff
changeset
|
173 |
if not (pybindgen_version == REQUIRED_PYBINDGEN_VERSION): |
1b45505f9a52
Don't allow pybindgen version greater than our requested version, to avoid python scanning generating backward incompatible API defs.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4440
diff
changeset
|
174 |
Logs.warn("pybindgen (found %s), (need %s)" % |
3408 | 175 |
(pybindgen_version_str, |
176 |
'.'.join([str(x) for x in REQUIRED_PYBINDGEN_VERSION]))) |
|
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
177 |
conf.report_optional_feature("python", "Python Bindings", False, |
4457
1b45505f9a52
Don't allow pybindgen version greater than our requested version, to avoid python scanning generating backward incompatible API defs.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4440
diff
changeset
|
178 |
"PyBindGen version not correct and newer version could not be retrieved") |
4116
6f8542536217
Try to guess pybindgen location (more #478)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4104
diff
changeset
|
179 |
return |
3408 | 180 |
|
5767
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
181 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
182 |
def test(t1, t2): |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
183 |
test_program = ''' |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
184 |
#include <stdint.h> |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
185 |
#include <vector> |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
186 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
187 |
int main () |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
188 |
{ |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
189 |
std::vector< %(type1)s > t = std::vector< %(type2)s > (); |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
190 |
return 0; |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
191 |
} |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
192 |
''' % dict(type1=t1, type2=t2) |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
193 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
194 |
try: |
11458
126b15bc1efc
Fix Python bindings wscript and waf-tools for Waf 1.8
Vedran Miletić <rivanvx@gmail.com>
parents:
11074
diff
changeset
|
195 |
ret = conf.check(compiler='cxx', fragment=test_program, features='cxx') |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
196 |
except Errors.ConfigurationError: |
11458
126b15bc1efc
Fix Python bindings wscript and waf-tools for Waf 1.8
Vedran Miletić <rivanvx@gmail.com>
parents:
11074
diff
changeset
|
197 |
ret = False |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
198 |
conf.msg('Checking for types %s and %s equivalence' % (t1, t2), (ret and 'no' or 'yes')) |
11458
126b15bc1efc
Fix Python bindings wscript and waf-tools for Waf 1.8
Vedran Miletić <rivanvx@gmail.com>
parents:
11074
diff
changeset
|
199 |
return ret |
5767
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
200 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
201 |
uint64_is_long = test("uint64_t", "unsigned long") |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
202 |
uint64_is_long_long = test("uint64_t", "unsigned long long") |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
203 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
204 |
if uint64_is_long: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
205 |
conf.env['PYTHON_BINDINGS_APIDEFS'] = 'gcc-LP64' |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
206 |
elif uint64_is_long_long: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
207 |
conf.env['PYTHON_BINDINGS_APIDEFS'] = 'gcc-ILP32' |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
208 |
else: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
209 |
conf.env['PYTHON_BINDINGS_APIDEFS'] = None |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
210 |
if conf.env['PYTHON_BINDINGS_APIDEFS'] is None: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
211 |
msg = 'none available' |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
212 |
else: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
213 |
msg = conf.env['PYTHON_BINDINGS_APIDEFS'] |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
214 |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
215 |
conf.msg('Checking for the apidefs that can be used for Python bindings', msg) |
5767
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
216 |
|
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
217 |
if conf.env['PYTHON_BINDINGS_APIDEFS'] is None: |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
218 |
conf.report_optional_feature("python", "Python Bindings", False, |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
219 |
"No apidefs are available that can be used in this system") |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
220 |
return |
0c70949a5006
Improved detection of apidefs to use for python (Bug 734)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5753
diff
changeset
|
221 |
|
6919
82217d4007bc
Bug 1076 - Waf gives an error if you enable only a single module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6918
diff
changeset
|
222 |
|
3408 | 223 |
## If all has gone well, we finally enable the Python bindings |
224 |
conf.env['ENABLE_PYTHON_BINDINGS'] = True |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
225 |
conf.report_optional_feature("python", "Python Bindings", True, None) |
3408 | 226 |
|
7408
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
227 |
|
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
228 |
# check cxxabi stuff (which Mac OS X Lion breaks) |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
229 |
fragment = r""" |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
230 |
# include <cxxabi.h> |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
231 |
int main () |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
232 |
{ |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
233 |
const abi::__si_class_type_info *_typeinfo __attribute__((unused)) = NULL; |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
234 |
return 0; |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
235 |
} |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
236 |
""" |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
237 |
gcc_rtti_abi = conf.check_nonfatal(fragment=fragment, msg="Checking for internal GCC cxxabi", |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
238 |
okmsg="complete", errmsg='incomplete', |
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
239 |
mandatory=False) |
7408
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
240 |
conf.env["GCC_RTTI_ABI_COMPLETE"] = str(bool(gcc_rtti_abi)) |
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
241 |
|
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
242 |
|
4f1f961b6cdc
Bug 1224 - Ns-3-allinone fails to compile on Lion
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7373
diff
changeset
|
243 |
|
3408 | 244 |
## Check for pygccxml |
245 |
try: |
|
246 |
conf.check_python_module('pygccxml') |
|
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
247 |
except Errors.ConfigurationError: |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
248 |
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False, |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
249 |
"Missing 'pygccxml' Python module") |
3408 | 250 |
return |
251 |
||
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
252 |
out = subprocess.Popen([conf.env['PYTHON'][0], "-c", |
3408 | 253 |
"import pygccxml; print pygccxml.__version__"], |
254 |
stdout=subprocess.PIPE).communicate()[0] |
|
255 |
pygccxml_version_str = out.strip() |
|
11074
ff5ee93352fe
Bug 2013: pygccxml versions > 1.0.0 prepend a 'v' to version number
Ben Newton <bn@cs.unc.edu>
parents:
10973
diff
changeset
|
256 |
# Bug 2013: pygccxml versions > 1.0.0 prepend a 'v' to version number |
ff5ee93352fe
Bug 2013: pygccxml versions > 1.0.0 prepend a 'v' to version number
Ben Newton <bn@cs.unc.edu>
parents:
10973
diff
changeset
|
257 |
pygccxml_version_str = pygccxml_version_str.lstrip('v') |
3408 | 258 |
pygccxml_version = tuple([int(x) for x in pygccxml_version_str.split('.')]) |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
259 |
conf.msg('Checking for pygccxml version', pygccxml_version_str) |
3408 | 260 |
if not (pygccxml_version >= REQUIRED_PYGCCXML_VERSION): |
4067
165b38956c24
Convert warning to Logs.warn (waf api change)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4066
diff
changeset
|
261 |
Logs.warn("pygccxml (found %s) is too old (need %s) => " |
3408 | 262 |
"automatic scanning of API definitions will not be possible" % |
263 |
(pygccxml_version_str, |
|
264 |
'.'.join([str(x) for x in REQUIRED_PYGCCXML_VERSION]))) |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
265 |
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False, |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
266 |
"pygccxml too old") |
3408 | 267 |
return |
10969
99f95535826f
Python bindings: fix generation of callback wrappers with the newest pybindgen
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10820
diff
changeset
|
268 |
|
3408 | 269 |
|
270 |
## Check gccxml version |
|
7494
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
271 |
try: |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
272 |
gccxml = conf.find_program('gccxml', var='GCCXML') |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
273 |
except WafError: |
d93f5e8e0a59
waf-1.6: Mac OSX and other fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7490
diff
changeset
|
274 |
gccxml = None |
3408 | 275 |
if not gccxml: |
4067
165b38956c24
Convert warning to Logs.warn (waf api change)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4066
diff
changeset
|
276 |
Logs.warn("gccxml missing; automatic scanning of API definitions will not be possible") |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
277 |
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False, |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
278 |
"gccxml missing") |
3408 | 279 |
return |
280 |
||
11459
b08e8279b57d
Fix printing of gccxml version (Waf 1.8 API change)
Vedran Miletić <rivanvx@gmail.com>
parents:
11458
diff
changeset
|
281 |
gccxml_version_line = os.popen(gccxml[0] + " --version").readline().strip() |
3408 | 282 |
m = re.match( "^GCC-XML version (\d\.\d(\.\d)?)$", gccxml_version_line) |
283 |
gccxml_version = m.group(1) |
|
284 |
gccxml_version_ok = ([int(s) for s in gccxml_version.split('.')] >= [0, 9]) |
|
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
285 |
conf.msg('Checking for gccxml version', gccxml_version) |
3408 | 286 |
if not gccxml_version_ok: |
4067
165b38956c24
Convert warning to Logs.warn (waf api change)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4066
diff
changeset
|
287 |
Logs.warn("gccxml too old, need version >= 0.9; automatic scanning of API definitions will not be possible") |
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
288 |
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False, |
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
289 |
"gccxml too old") |
3408 | 290 |
return |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
291 |
|
3408 | 292 |
## If we reached |
293 |
conf.env['ENABLE_PYTHON_SCANNING'] = True |
|
3625
30afad8324d5
Add a summary of optional features at the end of the configuration stage.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3624
diff
changeset
|
294 |
conf.report_optional_feature("pygccxml", "Python API Scanning Support", True, None) |
3408 | 295 |
|
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
296 |
# --------------------- |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
297 |
|
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
298 |
def get_headers_map(bld): |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
299 |
headers_map = {} # header => module |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
300 |
for ns3headers in bld.all_task_gen: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
301 |
if 'ns3header' in getattr(ns3headers, "features", []): |
6970
d00c79a3cf1f
Make sure --python-scan ignores -test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6961
diff
changeset
|
302 |
if ns3headers.module.endswith('-test'): |
d00c79a3cf1f
Make sure --python-scan ignores -test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6961
diff
changeset
|
303 |
continue |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
304 |
for h in ns3headers.to_list(ns3headers.headers): |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
305 |
headers_map[os.path.basename(h)] = ns3headers.module |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
306 |
return headers_map |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
307 |
|
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
308 |
def get_module_path(bld, module): |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
309 |
for ns3headers in bld.all_task_gen: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
310 |
if 'ns3header' in getattr(ns3headers, "features", []): |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
311 |
if ns3headers.module == module: |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
312 |
break |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
313 |
else: |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
314 |
raise ValueError("Module %r not found" % module) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
315 |
return ns3headers.path.abspath() |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
316 |
|
10214
045d74ea9550
waf --apiscan will no longer try to abort waf build at the end of scanning, to avoid the waf hang. Fixes #1622.
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10212
diff
changeset
|
317 |
class apiscan_task(Task.Task): |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
318 |
"""Uses gccxml to scan the file 'everything.h' and extract API definitions. |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
319 |
""" |
7487
82cd20da9650
Upgrade to waf-1.6.7, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7470
diff
changeset
|
320 |
after = 'gen_ns3_module_header ns3header' |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
321 |
before = 'cxx command' |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
322 |
color = "BLUE" |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
323 |
def __init__(self, curdirnode, env, bld, target, cflags, module): |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
324 |
self.bld = bld |
10214
045d74ea9550
waf --apiscan will no longer try to abort waf build at the end of scanning, to avoid the waf hang. Fixes #1622.
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10212
diff
changeset
|
325 |
super(apiscan_task, self).__init__(generator=self, env=env) |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
326 |
self.curdirnode = curdirnode |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
327 |
self.env = env |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
328 |
self.target = target |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
329 |
self.cflags = cflags |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
330 |
self.module = module |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
331 |
|
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
332 |
def display(self): |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
333 |
return 'api-scan-%s\n' % (self.target,) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
334 |
|
9721
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
335 |
def uid(self): |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
336 |
try: |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
337 |
return self.uid_ |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
338 |
except AttributeError: |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
339 |
m = Utils.md5() |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
340 |
up = m.update |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
341 |
up(self.__class__.__name__.encode()) |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
342 |
up(self.curdirnode.abspath().encode()) |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
343 |
up(self.target) |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
344 |
self.uid_ = m.digest() |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
345 |
return self.uid_ |
337ed5271d36
bug 1562: waf upgrade, patch to launch apiscan task
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
9295
diff
changeset
|
346 |
|
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
347 |
def run(self): |
10214
045d74ea9550
waf --apiscan will no longer try to abort waf build at the end of scanning, to avoid the waf hang. Fixes #1622.
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10212
diff
changeset
|
348 |
self.inputs = [self.bld.bldnode.find_resource("ns3/{0}-module.h".format(self.module))] |
045d74ea9550
waf --apiscan will no longer try to abort waf build at the end of scanning, to avoid the waf hang. Fixes #1622.
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10212
diff
changeset
|
349 |
self.outputs = [self.bld.srcnode.find_resource("src/{}/bindings/modulegen__{}.py".format(self.module, self.target))] |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
350 |
top_builddir = self.bld.bldnode.abspath() |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
351 |
module_path = get_module_path(self.bld, self.module) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
352 |
headers_map = get_headers_map(self.bld) |
6926
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
353 |
scan_header = os.path.join(top_builddir, "ns3", "%s-module.h" % self.module) |
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
354 |
|
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
355 |
if not os.path.exists(scan_header): |
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
356 |
Logs.error("Cannot apiscan module %r: %s does not exist" % (self.module, scan_header)) |
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
357 |
return 0 |
1b32cc1532a9
Modular bindings: before scanning a module, check that xxx-module.h exists, skip the scanning if it doesn't
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6923
diff
changeset
|
358 |
|
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
359 |
argv = [ |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
360 |
self.env['PYTHON'][0], |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
361 |
os.path.join(self.curdirnode.abspath(), 'ns3modulescan-modular.py'), # scanning script |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
362 |
top_builddir, |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
363 |
self.module, |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
364 |
repr(get_headers_map(self.bld)), |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
365 |
os.path.join(module_path, "bindings", 'modulegen__%s.py' % (self.target)), # output file |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
366 |
self.cflags, |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
367 |
] |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
368 |
scan = subprocess.Popen(argv, stdin=subprocess.PIPE) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
369 |
retval = scan.wait() |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
370 |
return retval |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
371 |
|
10398
458687e0055d
bug 1622: make apiscan Task always run
Tom Henderson <tomh@tomh.org>
parents:
10214
diff
changeset
|
372 |
def runnable_status(self): |
10423
dface7efc30d
update comment to align with ns-3.18.1
Tom Henderson <tomh@tomh.org>
parents:
10398
diff
changeset
|
373 |
# By default, Waf Task will skip running a task if the signature of |
dface7efc30d
update comment to align with ns-3.18.1
Tom Henderson <tomh@tomh.org>
parents:
10398
diff
changeset
|
374 |
# the build has not changed. We want this task to always run if |
dface7efc30d
update comment to align with ns-3.18.1
Tom Henderson <tomh@tomh.org>
parents:
10398
diff
changeset
|
375 |
# invoked by the user, particularly since --apiscan=all will require |
dface7efc30d
update comment to align with ns-3.18.1
Tom Henderson <tomh@tomh.org>
parents:
10398
diff
changeset
|
376 |
# invoking this task many times, once per module. |
10398
458687e0055d
bug 1622: make apiscan Task always run
Tom Henderson <tomh@tomh.org>
parents:
10214
diff
changeset
|
377 |
return RUN_ME |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
378 |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4312
diff
changeset
|
379 |
def get_modules_and_headers(bld): |
3408 | 380 |
""" |
381 |
Gets a dict of |
|
382 |
module_name => ([module_dep1, module_dep2, ...], [module_header1, module_header2, ...]) |
|
383 |
tuples, one for each module. |
|
384 |
""" |
|
385 |
||
386 |
retval = {} |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4312
diff
changeset
|
387 |
for module in bld.all_task_gen: |
3408 | 388 |
if not module.name.startswith('ns3-'): |
389 |
continue |
|
6970
d00c79a3cf1f
Make sure --python-scan ignores -test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6961
diff
changeset
|
390 |
if module.name.endswith('-test'): |
d00c79a3cf1f
Make sure --python-scan ignores -test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6961
diff
changeset
|
391 |
continue |
3408 | 392 |
module_name = module.name[4:] # strip the ns3- prefix |
393 |
## find the headers object for this module |
|
394 |
headers = [] |
|
4326
179f86838e62
Upgrade to WAF 1.5.4
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4312
diff
changeset
|
395 |
for ns3headers in bld.all_task_gen: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
396 |
if 'ns3header' not in getattr(ns3headers, "features", []): |
3408 | 397 |
continue |
398 |
if ns3headers.module != module_name: |
|
399 |
continue |
|
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
400 |
for source in ns3headers.to_list(ns3headers.headers): |
6797
613a82415ae3
Fix Python scanning to allow apidefs to be placed on the right module instead of the main ns3module.cc file, for new-style modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
401 |
headers.append(os.path.basename(source)) |
3408 | 402 |
retval[module_name] = (list(module.module_deps), headers) |
403 |
return retval |
|
404 |
||
405 |
||
3541
15fe83e15ff5
Don't scan python bindings until the everything.h file to be scanned is generated. Closes #288.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3540
diff
changeset
|
406 |
|
5249
85cde7d987ed
Python: allow multiple api definitions directories, one per data model.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5203
diff
changeset
|
407 |
|
6961
ca0f33d08fd0
Modular bindings: don't always generate compat ns3.py, only when needed
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6960
diff
changeset
|
408 |
class gen_ns3_compat_pymod_task(Task.Task): |
6897
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
409 |
"""Generates a 'ns3.py' compatibility module.""" |
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
410 |
before = 'cxx' |
6897
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
411 |
color = 'BLUE' |
10969
99f95535826f
Python bindings: fix generation of callback wrappers with the newest pybindgen
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10820
diff
changeset
|
412 |
|
6897
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
413 |
def run(self): |
6961
ca0f33d08fd0
Modular bindings: don't always generate compat ns3.py, only when needed
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6960
diff
changeset
|
414 |
assert len(self.outputs) == 1 |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
415 |
outfile = file(self.outputs[0].abspath(), "w") |
6897
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
416 |
print >> outfile, "import warnings" |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
417 |
print >> outfile, 'warnings.warn("the ns3 module is a compatibility layer '\ |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
418 |
'and should not be used in newly written code", DeprecationWarning, stacklevel=2)' |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
419 |
print >> outfile |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
420 |
for module in self.bld.env['PYTHON_MODULES_BUILT']: |
6902
3aa6e43dfe41
Modular bindings: handle module names with hyphens
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6901
diff
changeset
|
421 |
print >> outfile, "from ns.%s import *" % (module.replace('-', '_')) |
6897
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
422 |
outfile.close() |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
423 |
return 0 |
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
424 |
|
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
425 |
|
f338f17b0238
Modular bindings: generate a compatibility 'ns3' module that imports the modular bindings
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6893
diff
changeset
|
426 |
|
3408 | 427 |
def build(bld): |
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3977
diff
changeset
|
428 |
if Options.options.python_disable: |
3408 | 429 |
return |
430 |
||
4064
10222f483860
Upgrade to new WAF, work in progress
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3977
diff
changeset
|
431 |
env = bld.env |
3873
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
432 |
set_pybindgen_pythonpath(env) |
2ad80d9647f0
Add a --with-pybindgen option, to allow external pybindgen to be used instead of fetching it from the network
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3868
diff
changeset
|
433 |
|
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
434 |
if Options.options.apiscan: |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
435 |
if not env['ENABLE_PYTHON_SCANNING']: |
7555
9dfb9d9c295f
Fix typos: Utils.WafError -> WafError
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7545
diff
changeset
|
436 |
raise WafError("Cannot re-scan python bindings: (py)gccxml not available") |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
437 |
scan_targets = [] |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
438 |
if sys.platform == 'cygwin': |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
439 |
scan_targets.append(('gcc_cygwin', '')) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
440 |
else: |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
441 |
import struct |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
442 |
if struct.calcsize('I') == 4 and struct.calcsize('L') == 8 and struct.calcsize('P') == 8: |
10639
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
443 |
if not Options.options.no32bit_scan: |
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
444 |
scan_targets.append(('gcc_ILP32', '-m32')) |
6600e199f788
Add option to disable scanning for 32-bit bindings on 64-bit platforms
Gustavo Carneiro <gjcarneiro@gmail.com>
parents:
10629
diff
changeset
|
445 |
scan_targets.append(('gcc_LP64', '-m64')) |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
446 |
elif struct.calcsize('I') == 4 and struct.calcsize('L') == 4 and struct.calcsize('P') == 4: |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
447 |
scan_targets.append(('gcc_ILP32', '')) |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
448 |
else: |
7555
9dfb9d9c295f
Fix typos: Utils.WafError -> WafError
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7545
diff
changeset
|
449 |
raise WafError("Cannot scan python bindings for unsupported data model") |
6927
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
450 |
|
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
451 |
test_module_path = bld.path.find_dir("../../src/test") |
6923
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
452 |
if Options.options.apiscan == 'all': |
6927
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
453 |
scan_modules = [] |
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
454 |
for mod in bld.all_task_gen: |
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
455 |
if not mod.name.startswith('ns3-'): |
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
456 |
continue |
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
457 |
if mod.path.is_child_of(test_module_path): |
1bde2ae9c25b
Make ./waf --apiscan=all skip the test modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6926
diff
changeset
|
458 |
continue |
6928
c305a6f33912
./waf --apiscan=all: don't scan modules ending in -test
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6927
diff
changeset
|
459 |
if mod.name.endswith('-test'): |
c305a6f33912
./waf --apiscan=all: don't scan modules ending in -test
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6927
diff
changeset
|
460 |
continue |
6933
4bbaa92c3220
./waf --apiscan=all: now only scans modules that have bld.ns3_python_bindings() in their wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6928
diff
changeset
|
461 |
bindings_enabled = (mod.name in env.MODULAR_BINDINGS_MODULES) |
4bbaa92c3220
./waf --apiscan=all: now only scans modules that have bld.ns3_python_bindings() in their wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6928
diff
changeset
|
462 |
#print mod.name, bindings_enabled |
4bbaa92c3220
./waf --apiscan=all: now only scans modules that have bld.ns3_python_bindings() in their wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6928
diff
changeset
|
463 |
if bindings_enabled: |
4bbaa92c3220
./waf --apiscan=all: now only scans modules that have bld.ns3_python_bindings() in their wscript
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6928
diff
changeset
|
464 |
scan_modules.append(mod.name.split('ns3-')[1]) |
6923
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
465 |
else: |
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
466 |
scan_modules = Options.options.apiscan.split(',') |
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
467 |
print "Modules to scan: ", scan_modules |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
468 |
for target, cflags in scan_targets: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
469 |
group = bld.get_group(bld.current_group) |
6923
57c9dfe52e67
Modular bindings: add support for the apiscan target 'all', that means scan all ns-3 modules
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6922
diff
changeset
|
470 |
for module in scan_modules: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
471 |
group.append(apiscan_task(bld.path, env, bld, target, cflags, module)) |
6874
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
472 |
return |
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
473 |
|
c7537e62f2fa
Start of work on modular Python bindings, unstable
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6591
diff
changeset
|
474 |
|
7470
234c01373116
Re-enable the 'ns3' compatility python module, previously accidentally disabled
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7468
diff
changeset
|
475 |
if env['ENABLE_PYTHON_BINDINGS']: |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
476 |
task = gen_ns3_compat_pymod_task(env=env.derive()) |
6961
ca0f33d08fd0
Modular bindings: don't always generate compat ns3.py, only when needed
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6960
diff
changeset
|
477 |
task.set_outputs(bld.path.find_or_declare("ns3.py")) |
ca0f33d08fd0
Modular bindings: don't always generate compat ns3.py, only when needed
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6960
diff
changeset
|
478 |
task.dep_vars = ['PYTHON_MODULES_BUILT'] |
7490
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
479 |
task.bld = bld |
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
480 |
grp = bld.get_group(bld.current_group) |
886cf992ade6
waf 1.6: fix python bindings apiscan
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7489
diff
changeset
|
481 |
grp.append(task) |
6961
ca0f33d08fd0
Modular bindings: don't always generate compat ns3.py, only when needed
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6960
diff
changeset
|
482 |
|
9278
0a749c0f1afd
Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally
Alexander Afanasyev <alexander.afanasyev@ucla.edu>
parents:
8896
diff
changeset
|
483 |
bld(features='copy', source="ns__init__.py", target='ns/__init__.py') |
7676
e1e64c0fa1da
Install the ns/__init__.py file also in PYTHONARCHDIR; fixes #1329.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7672
diff
changeset
|
484 |
bld.install_as('${PYTHONARCHDIR}/ns/__init__.py', 'ns__init__.py') |
7536
1f697c6f0b12
Bug 1257 - waf install __init__ Python files even with --disable-python
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7517
diff
changeset
|
485 |
|
1f697c6f0b12
Bug 1257 - waf install __init__ Python files even with --disable-python
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7517
diff
changeset
|
486 |
|
7451
7e112cf83737
Bug 1240 - remove monolithic python bindings from waf
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7408
diff
changeset
|
487 |
# note: the actual build commands for the python bindings are in |
7e112cf83737
Bug 1240 - remove monolithic python bindings from waf
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7408
diff
changeset
|
488 |
# src/wscript, not here. |
7e112cf83737
Bug 1240 - remove monolithic python bindings from waf
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
7408
diff
changeset
|
489 |