author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Tue, 29 Aug 2006 17:55:34 +0200 | |
changeset 16 | 99e833adbb46 |
parent 15 | a5b06c32e28a |
child 18 | a579c71fdb2a |
permissions | -rw-r--r-- |
8
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
1 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
import os |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
import os.path |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
import shutil |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
class Ns3Module: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
7 |
def __init__ (self, name, dir): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
self.sources = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
self.inst_headers = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
self.headers = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
self.extra_dist = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
12 |
self.deps = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
self.external_deps = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
self.config = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
self.name = name |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
16 |
self.dir = dir |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
17 |
self.executable = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
self.library = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
19 |
def set_library (self): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
self.library = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
self.executable = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
def set_executable (self): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
self.library = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
self.executable = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
def add_config (self, config_fn): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
self.config.append (config_fn) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
def add_extra_dist (self, dist): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
self.extra_dist.append (dist) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
def add_external_dep (self, dep): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
self.external_deps.append (dep) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
def add_dep (self, dep): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
self.deps.append (dep) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
def add_deps (self, deps): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
self.deps.extend (deps) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
def add_source (self, source): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
36 |
self.sources.append (source) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
def add_sources (self, sources): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
38 |
self.sources.extend (sources) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
def add_header (self, header): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
self.headers.append (header) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
def add_headers (self, headers): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
self.headers.extend (headers) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
def add_inst_header (self, header): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
self.inst_headers.append (header) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
def add_inst_headers (self, headers): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
self.inst_headers.extend (headers) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
def MyCopyAction (target, source, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
try: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
if len (target) == len (source): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
for i in range (len(target)): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
shutil.copy (source[i].path, target[i].path) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
return 0 |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
return 'invalid target/source match' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
except: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
return 'exception' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
def MyCopyActionPrint (target, source, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
if len (target) == len (source): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
output = '' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
for i in range (len(target)): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
output = output + 'copy \'' + source[i].path + '\' to \'' + target[i].path + '\'' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
if i < len (target) - 1: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
output = output + '\n' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
66 |
return output |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
68 |
return 'error in copy' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
def GcxxEmitter (target, source, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
70 |
if os.path.exists (source[0].path): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
71 |
return [target, source] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
72 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
73 |
return [[], []] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
74 |
def MyRmTree (target, source, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
shutil.rmtree (env['RM_DIR']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
76 |
return 0 |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
def MyRmTreePrint (target, source, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
78 |
return '' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
def print_cmd_line(s, target, src, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
80 |
print 'Building ' + (' and '.join([str(x) for x in target])) + '...' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
class Ns3BuildVariant: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
83 |
def __init__ (self): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
self.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
self.gcxx_deps = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
self.gcxx_root = '' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
self.build_root = '' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
88 |
self.env = None |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
class Ns3: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
91 |
def __init__ (self): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
self.__modules = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
self.extra_dist = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
self.build_dir = 'build' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
95 |
self.version = '0.0.1' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
96 |
self.name = 'noname' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
97 |
def add (self, module): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
98 |
self.__modules.append (module) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
99 |
def add_extra_dist (self, dist): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
100 |
self.extra_dist.append (dist) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
def __get_module (self, name): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
for module in self.__modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
103 |
if module.name == name: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
return module |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
return None |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
106 |
def get_mod_output (self, module, variant): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
107 |
if module.executable: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
108 |
suffix = variant.env.subst (variant.env['PROGSUFFIX']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
109 |
filename = os.path.join (variant.build_root, 'bin', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
110 |
module.name + suffix) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
111 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
112 |
if variant.static: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
113 |
prefix = variant.env['LIBPREFIX'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
114 |
suffix = variant.env['LIBSUFFIX'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
115 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
116 |
prefix = variant.env['SHLIBPREFIX'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
117 |
suffix = variant.env['SHLIBSUFFIX'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
118 |
prefix = variant.env.subst (prefix) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
119 |
suffix = variant.env.subst (suffix) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
120 |
filename = os.path.join (variant.build_root, 'lib', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
121 |
prefix + module.name + suffix) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
122 |
return filename |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
123 |
def get_obj_builders (self, variant, module): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
124 |
env = variant.env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
125 |
objects = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
126 |
if len (module.config) > 0: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
127 |
src_config_file = os.path.join (self.build_dir, 'config', module.name + '-config.h') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
128 |
tgt_config_file = os.path.join (variant.build_root, 'include', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
129 |
'ns3', module.name + '-config.h') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
130 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
131 |
for source in module.sources: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
132 |
obj_file = os.path.splitext (source)[0] + '.o' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
133 |
tgt = os.path.join (variant.build_root, module.dir, obj_file) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
134 |
src = os.path.join (module.dir, source) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
135 |
if variant.static: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
136 |
obj_builder = env.StaticObject (target = tgt, source = src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
137 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
138 |
obj_builder = env.SharedObject (target = tgt, source = src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
139 |
if len (module.config) > 0: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
140 |
config_file = env.MyCopyBuilder (target = [tgt_config_file], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
141 |
source = [src_config_file]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
142 |
env.Depends (obj_builder, config_file) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
143 |
if variant.gcxx_deps: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
144 |
gcno_tgt = os.path.join (variant.build_root, module.dir, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
145 |
os.path.splitext (source)[0] + '.gcno') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
146 |
gcda_tgt = os.path.join (variant.build_root, module.dir, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
147 |
os.path.splitext (source)[0] + '.gcda') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
148 |
gcda_src = os.path.join (variant.gcxx_root, module.dir, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
149 |
os.path.splitext (source)[0] + '.gcda') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
150 |
gcno_src = os.path.join (variant.gcxx_root, module.dir, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
151 |
os.path.splitext (source)[0] + '.gcno') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
152 |
gcno_builder = env.CopyGcxxBuilder (target = gcno_tgt, source = gcno_src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
153 |
gcda_builder = env.CopyGcxxBuilder (target = gcda_tgt, source = gcda_src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
154 |
env.Depends (obj_builder, gcda_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
155 |
env.Depends (obj_builder, gcno_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
156 |
objects.append (obj_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
157 |
return objects |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
158 |
def get_internal_deps (self, module, hash): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
159 |
for dep_name in module.deps: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
160 |
dep = self.__get_module (dep_name) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
161 |
hash[dep_name] = dep |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
162 |
self.get_internal_deps (dep, hash) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
163 |
def get_external_deps (self, module): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
164 |
hash = {} |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
165 |
self.get_internal_deps (module, hash) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
166 |
ext_hash = {} |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
167 |
for mod in hash.values (): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
168 |
for ext_dep in mod.external_deps: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
169 |
ext_hash[ext_dep] = 1 |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
170 |
return ext_hash.keys () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
171 |
def get_sorted_deps (self, module): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
172 |
h = {} |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
173 |
self.get_internal_deps (module, h) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
174 |
modules = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
175 |
for dep in h.keys (): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
176 |
deps_copy = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
177 |
mod = h[dep] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
178 |
deps_copy.extend (mod.deps) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
179 |
modules.append ([mod, deps_copy]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
180 |
sorted = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
181 |
while len (modules) > 0: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
182 |
to_remove = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
183 |
for item in modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
184 |
if len (item[1]) == 0: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
185 |
to_remove.append (item[0].name) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
186 |
for item in to_remove: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
187 |
for i in modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
188 |
if item in i[1]: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
189 |
i[1].remove (item) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
190 |
new_modules = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
191 |
for mod in modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
192 |
found = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
193 |
for i in to_remove: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
194 |
if i == mod[0].name: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
195 |
found = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
196 |
break |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
197 |
if not found: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
198 |
new_modules.append (mod) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
199 |
modules = new_modules |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
200 |
sorted.extend (to_remove) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
201 |
sorted.reverse () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
202 |
# append external deps |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
203 |
ext_deps = self.get_external_deps (module) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
204 |
for dep in ext_deps: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
205 |
sorted.append (dep) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
206 |
return sorted |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
207 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
208 |
def gen_mod_dep (self, variant): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
209 |
build_root = variant.build_root |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
210 |
cpp_path = os.path.join (variant.build_root, 'include') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
211 |
env = variant.env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
212 |
env.Append (CPPPATH=[cpp_path]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
213 |
header_dir = os.path.join (build_root, 'include', 'ns3') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
214 |
lib_path = os.path.join (build_root, 'lib') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
215 |
module_builders = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
216 |
for module in self.__modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
217 |
objects = self.get_obj_builders (variant, module) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
218 |
libs = self.get_sorted_deps (module) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
219 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
220 |
filename = self.get_mod_output (module, variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
221 |
if module.executable: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
222 |
module_builder = env.Program (target = filename, source = objects, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
223 |
LIBPATH=lib_path, LIBS=libs, RPATH=lib_path) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
224 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
225 |
if variant.static: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
226 |
module_builder = env.StaticLibrary (target = filename, source = objects) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
227 |
else: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
228 |
module_builder = env.SharedLibrary (target = filename, source = objects, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
229 |
LIBPATH=lib_path, LIBS=libs) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
230 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
231 |
for dep_name in module.deps: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
232 |
dep = self.__get_module (dep_name) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
233 |
env.Depends (module_builder, self.get_mod_output (dep, variant)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
234 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
235 |
for header in module.inst_headers: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
236 |
tgt = os.path.join (header_dir, header) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
237 |
src = os.path.join (module.dir, header) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
238 |
#builder = env.Install (target = tgt, source = src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
239 |
header_builder = env.MyCopyBuilder (target = tgt, source = src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
240 |
env.Depends (module_builder, header_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
241 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
242 |
module_builders.append (module_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
243 |
return module_builders |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
244 |
def gen_mod_config (self, env): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
245 |
config_dir = os.path.join (self.build_dir, 'config') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
246 |
for module in self.__modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
247 |
if len (module.config) > 0: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
248 |
config_file = os.path.join (config_dir, module.name + '-config.h') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
249 |
config_file_guard = module.name + '_CONFIG_H' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
250 |
config_file_guard.upper () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
251 |
if not os.path.isfile (config_file): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
252 |
if not os.path.isdir (config_dir): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
253 |
os.makedirs (config_dir) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
254 |
outfile = open (config_file, 'w') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
255 |
outfile.write ('#ifndef ' + config_file_guard + '\n') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
256 |
outfile.write ('#define ' + config_file_guard + '\n') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
257 |
config = env.Configure () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
258 |
for fn in module.config: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
259 |
output = fn (env, config) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
260 |
for o in output: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
261 |
outfile.write (o) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
262 |
outfile.write ('\n') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
263 |
outfile.write ('#endif /*' + config_file_guard + '*/\n') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
264 |
config.Finish () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
265 |
def generate_dependencies (self): |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
266 |
env = Environment() |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
267 |
self.gen_mod_config (env) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
268 |
cc = env['CC'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
269 |
cxx = env.subst (env['CXX']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
270 |
if cc == 'cl' and cxx == 'cl': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
271 |
env = Environment (tools = ['mingw']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
272 |
cc = env['CC'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
273 |
cxx = env.subst (env['CXX']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
274 |
if cc == 'gcc' and cxx == 'g++': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
275 |
common_flags = ['-g3', '-Wall', '-Werror'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
276 |
debug_flags = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
277 |
opti_flags = ['-O3'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
278 |
elif cc == 'cl' and cxx == 'cl': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
279 |
env = Environment (ENV = os.environ) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
280 |
common_flags = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
281 |
debug_flags = ['-W1', '-GX', '-EHsc', '-D_DEBUG', '/MDd'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
282 |
opti_flags = ['-O2', '-EHsc', '-DNDEBUG', '/MD'] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
283 |
env.Append (CCFLAGS=common_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
284 |
CPPDEFINES=['RUN_SELF_TESTS'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
285 |
TARFLAGS='-c -z') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
286 |
verbose = ARGUMENTS.get('verbose', 'n') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
287 |
if verbose == 'n': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
288 |
env['PRINT_CMD_LINE_FUNC'] = print_cmd_line |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
289 |
header_builder = Builder (action = Action (MyCopyAction, strfunction = MyCopyActionPrint)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
290 |
env.Append (BUILDERS = {'MyCopyBuilder':header_builder}) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
291 |
gcxx_builder = Builder (action = Action (MyCopyAction, strfunction = MyCopyActionPrint), |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
292 |
emitter = GcxxEmitter) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
293 |
env.Append (BUILDERS = {'CopyGcxxBuilder':gcxx_builder}) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
294 |
variant = Ns3BuildVariant () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
295 |
builders = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
296 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
297 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
298 |
gcov_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
299 |
gcov_env.Append (CFLAGS=['-fprofile-arcs', '-ftest-coverage'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
300 |
CXXFLAGS=['-fprofile-arcs', '-ftest-coverage'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
301 |
LINKFLAGS=['-fprofile-arcs']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
302 |
# code coverage analysis |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
303 |
variant.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
304 |
variant.env = gcov_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
305 |
variant.build_root = os.path.join (self.build_dir, 'gcov') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
306 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
307 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
308 |
gcov_env.Alias ('gcov', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
309 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
310 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
311 |
opt_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
312 |
opt_env.Append (CFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
313 |
CXXFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
314 |
CPPDEFINES=['NDEBUG']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
315 |
# optimized static support |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
316 |
variant.static = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
317 |
variant.env = opt_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
318 |
variant.build_root = os.path.join (self.build_dir, 'opt-static') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
319 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
320 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
321 |
opt_env.Alias ('opt-static', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
322 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
323 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
324 |
opt_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
325 |
opt_env.Append (CFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
326 |
CXXFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
327 |
CPPDEFINES=['NDEBUG']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
328 |
# optimized shared support |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
329 |
variant.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
330 |
variant.env = opt_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
331 |
variant.build_root = os.path.join (self.build_dir, 'opt-shared') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
332 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
333 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
334 |
opt_env.Alias ('opt-shared', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
335 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
336 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
337 |
arc_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
338 |
arc_env.Append (CFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
339 |
CXXFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
340 |
CPPDEFINES=['NDEBUG']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
341 |
arc_env.Append (CFLAGS=['-frandom-seed=0','-fprofile-generate'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
342 |
CXXFLAGS=['-frandom-seed=0','-fprofile-generate'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
343 |
LINKFLAGS=['-frandom-seed=0', '-fprofile-generate']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
344 |
# arc profiling |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
345 |
variant.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
346 |
variant.env = arc_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
347 |
variant.build_root = os.path.join (self.build_dir, 'opt-arc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
348 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
349 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
350 |
arc_env.Alias ('opt-arc', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
351 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
352 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
353 |
arcrebuild_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
354 |
arcrebuild_env.Append (CFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
355 |
CXXFLAGS=opti_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
356 |
CPPDEFINES=['NDEBUG']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
357 |
arcrebuild_env.Append (CFLAGS=['-frandom-seed=0', '-fprofile-use'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
358 |
CXXFLAGS=['-frandom-seed=0', '-fprofile-use'], |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
359 |
LINKFLAGS=['-frandom-seed=0','-fprofile-use']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
360 |
# arc rebuild |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
361 |
variant.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
362 |
variant.env = arcrebuild_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
363 |
variant.gcxx_deps = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
364 |
variant.gcxx_root = os.path.join (self.build_dir, 'opt-arc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
365 |
variant.build_root = os.path.join (self.build_dir, 'opt-arc-rebuild') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
366 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
367 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
368 |
arcrebuild_env.Alias ('opt-arc-rebuild', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
369 |
variant.gcxx_deps = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
370 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
371 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
372 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
373 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
374 |
dbg_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
375 |
env.Append (CFLAGS=debug_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
376 |
CXXFLAGS=debug_flags,) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
377 |
# debug static support |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
378 |
variant.static = True |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
379 |
variant.env = dbg_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
380 |
variant.build_root = os.path.join (self.build_dir, 'dbg-static') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
381 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
382 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
383 |
dbg_env.Alias ('dbg-static', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
384 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
385 |
dbg_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
386 |
env.Append (CFLAGS=debug_flags, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
387 |
CXXFLAGS=debug_flags,) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
388 |
# debug shared support |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
389 |
variant.static = False |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
390 |
variant.env = dbg_env |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
391 |
variant.build_root = os.path.join (self.build_dir, 'dbg-shared') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
392 |
builders = self.gen_mod_dep (variant) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
393 |
for builder in builders: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
394 |
dbg_env.Alias ('dbg-shared', builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
395 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
396 |
env.Alias ('dbg', 'dbg-shared') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
397 |
env.Alias ('opt', 'opt-shared') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
398 |
env.Default ('dbg') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
399 |
env.Alias ('all', ['dbg-shared', 'dbg-static', 'opt-shared', 'opt-static']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
400 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
401 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
402 |
# dist support |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
403 |
dist_env = env.Copy () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
404 |
if dist_env['PLATFORM'] == 'posix': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
405 |
dist_list = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
406 |
for module in self.__modules: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
407 |
for f in module.sources: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
408 |
dist_list.append (os.path.join (module.dir, f)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
409 |
for f in module.headers: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
410 |
dist_list.append (os.path.join (module.dir, f)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
411 |
for f in module.inst_headers: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
412 |
dist_list.append (os.path.join (module.dir, f)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
413 |
for f in module.extra_dist: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
414 |
dist_list.append (os.path.join (module.dir, f)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
415 |
for f in self.extra_dist: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
416 |
dist_list.append (tag, f) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
417 |
dist_list.append ('SConstruct') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
418 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
419 |
targets = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
420 |
basename = self.name + '-' + self.version |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
421 |
for src in dist_list: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
422 |
tgt = os.path.join (basename, src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
423 |
targets.append (dist_env.MyCopyBuilder (target = tgt, source = src)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
424 |
tar = basename + '.tar.gz' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
425 |
zip = basename + '.zip' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
426 |
tmp_tar = os.path.join (self.build_dir, tar) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
427 |
tmp_zip = os.path.join (self.build_dir, zip) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
428 |
dist_tgt = [tar, zip] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
429 |
dist_src = [tmp_tar, tmp_zip] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
430 |
dist_env.Tar (tmp_tar, targets) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
431 |
dist_env.Zip (tmp_zip, targets) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
432 |
dist_builder = dist_env.MyCopyBuilder (target = dist_tgt, source = dist_src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
433 |
dist_env.Alias ('dist', dist_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
434 |
dist_env.Append (RM_DIR=basename) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
435 |
dist_env.AddPostAction (dist_builder, dist_env.Action (MyRmTree, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
436 |
strfunction = MyRmTreePrint)) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
437 |
dist_builder = dist_env.MyCopyBuilder (target = dist_tgt, source = dist_src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
438 |
dist_env.Alias ('fastdist', dist_tgt) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
439 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
440 |
# distcheck |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
441 |
distcheck_list = [] |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
442 |
for src in dist_list: |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
443 |
tgt = os.path.join (self.build_dir, basename, src) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
444 |
distcheck_list.append (tgt) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
445 |
untar = env.Command (distcheck_list, tar, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
446 |
['cd ' + self.build_dir + ' && tar -zxf ../' + tar]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
447 |
scons_dir = os.path.join (self.build_dir, basename) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
448 |
distcheck_builder = env.Command ('x',distcheck_list, |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
449 |
['cd ' + scons_dir + ' && scons']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
450 |
env.AlwaysBuild (distcheck_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
451 |
env.Alias ('distcheck', distcheck_builder) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
452 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
453 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
454 |
ns3 = Ns3 () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
455 |
ns3.build_dir = 'build-dir' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
456 |
ns3.version = '0.0.1' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
457 |
ns3.name = 'ns3' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
458 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
459 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
460 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
461 |
# The Core module |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
462 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
463 |
core = Ns3Module ('core', 'src/core') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
464 |
ns3.add (core) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
465 |
core.add_sources ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
466 |
'reference-list-test.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
467 |
'callback-test.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
468 |
'test.cc' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
469 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
470 |
env = Environment () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
471 |
if env['PLATFORM'] == 'posix': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
472 |
core.add_external_dep ('pthread') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
473 |
core.add_sources ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
474 |
'unix-system-semaphore.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
475 |
'unix-system-thread.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
476 |
'unix-system-mutex.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
477 |
'unix-exec-commands.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
478 |
'unix-wall-clock-ms.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
479 |
'unix-system-file.cc' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
480 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
481 |
elif env['PLATFORM'] == 'win32': |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
482 |
core.add_sources ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
483 |
'win32-system-semaphore.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
484 |
'win32-system-thread.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
485 |
'win32-system-mutex.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
486 |
'win32-wall-clock-ms.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
487 |
'win32-system-file.cc' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
488 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
489 |
core.add_inst_headers ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
490 |
'system-semaphore.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
491 |
'system-thread.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
492 |
'system-mutex.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
493 |
'system-file.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
494 |
'exec-commands.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
495 |
'wall-clock-ms.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
496 |
'reference-list.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
497 |
'callback.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
498 |
'test.h' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
499 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
500 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
501 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
502 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
503 |
# The Simu module |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
504 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
505 |
simu = Ns3Module ('simulator', 'src/simulator') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
506 |
ns3.add (simu) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
507 |
simu.add_dep ('core') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
508 |
simu.add_sources ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
509 |
'scheduler.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
510 |
'scheduler-list.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
511 |
'scheduler-heap.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
512 |
'scheduler-map.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
513 |
'event-impl.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
514 |
'event-tcc.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
515 |
'event-tcc-test.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
516 |
'simulator.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
517 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
518 |
simu.add_headers ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
519 |
'scheduler.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
520 |
'scheduler-heap.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
521 |
'scheduler-map.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
522 |
'scheduler-list.h' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
523 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
524 |
simu.add_inst_headers ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
525 |
'event.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
526 |
'event-impl.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
527 |
'simulator.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
528 |
'event.tcc' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
529 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
530 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
531 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
532 |
# The Common module |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
533 |
# |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
534 |
common = Ns3Module ('common', 'src/common') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
535 |
common.add_deps (['core', 'simulator']) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
536 |
ns3.add (common) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
537 |
common.add_sources ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
538 |
'buffer.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
539 |
'mac-address-factory.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
540 |
'static-position.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
541 |
'chunk.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
542 |
'mac-network-interface.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
543 |
'static-speed-position.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
544 |
'chunk-constant-data.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
545 |
'packet.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
546 |
'tags.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
547 |
'chunk-llc-snap.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
548 |
'packet-logger.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
549 |
'chunk-utils.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
550 |
'pcap-writer.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
551 |
'trace-container.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
552 |
'population-analysis.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
553 |
'traced-variable-test.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
554 |
'ipv4-address.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
555 |
'position.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
556 |
'trace-stream-test.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
557 |
'ipv4-network-interface.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
558 |
'utils.cc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
559 |
'llc-snap-encapsulation.cc', |
13
b69ebc273a06
remove dead files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
8
diff
changeset
|
560 |
'mac-address.cc' |
8
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
561 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
562 |
common.add_inst_headers ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
563 |
'ipv4-address.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
564 |
'buffer.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
565 |
'chunk.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
566 |
'tags.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
567 |
'packet.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
568 |
'ipv4-network-interface.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
569 |
'count-ptr-holder.tcc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
570 |
'ui-traced-variable.tcc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
571 |
'si-traced-variable.tcc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
572 |
'f-traced-variable.tcc', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
573 |
'callback-logger.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
574 |
'trace-container.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
575 |
'packet-logger.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
576 |
'chunk-constant-data.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
577 |
'mac-address.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
578 |
'chunk-utils.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
579 |
'llc-snap-encapsulation.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
580 |
'mac-network-interface.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
581 |
'population-analysis.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
582 |
'position.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
583 |
'trace-stream.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
584 |
'pcap-writer.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
585 |
'mac-address-factory.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
586 |
'static-position.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
587 |
'utils.h' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
588 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
589 |
common.add_headers ([ |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
590 |
'chunk-llc-snap.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
591 |
'ref-ptr.h', |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
592 |
'static-speed-position.h' |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
593 |
]) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
594 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
595 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
596 |
# utils |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
597 |
run_tests = Ns3Module ('run-tests', 'utils') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
598 |
ns3.add (run_tests) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
599 |
run_tests.set_executable () |
13
b69ebc273a06
remove dead files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
8
diff
changeset
|
600 |
run_tests.add_deps (['core', 'simulator', 'common']) |
8
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
601 |
run_tests.add_source ('run-tests.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
602 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
603 |
bench_packets = Ns3Module ('bench-packets', 'utils') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
604 |
#ns3.add (bench_packets) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
605 |
bench_packets.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
606 |
bench_packets.add_dep ('core') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
607 |
bench_packets.add_source ('bench-packets.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
608 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
609 |
bench_simu = Ns3Module ('bench-simulator', 'utils') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
610 |
ns3.add (bench_simu) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
611 |
bench_simu.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
612 |
bench_simu.add_dep ('simulator') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
613 |
bench_simu.add_source ('bench-simulator.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
614 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
615 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
616 |
# samples |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
617 |
main_callback = Ns3Module ('main-callback', 'samples') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
618 |
main_callback.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
619 |
ns3.add (main_callback) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
620 |
main_callback.add_dep ('core') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
621 |
main_callback.add_source ('main-callback.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
622 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
623 |
main_event = Ns3Module ('main-event', 'samples') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
624 |
main_event.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
625 |
ns3.add (main_event) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
626 |
main_event.add_dep ('simulator') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
627 |
main_event.add_source ('main-event.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
628 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
629 |
main_trace = Ns3Module ('main-trace', 'samples') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
630 |
ns3.add (main_trace) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
631 |
main_trace.add_dep ('common') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
632 |
main_trace.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
633 |
main_trace.add_source ('main-trace.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
634 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
635 |
main_simu = Ns3Module ('main-simulator', 'samples') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
636 |
ns3.add (main_simu) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
637 |
main_simu.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
638 |
main_simu.add_dep ('simulator') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
639 |
main_simu.add_source ('main-simulator.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
640 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
641 |
main_packet = Ns3Module ('main-packet', 'samples') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
642 |
ns3.add (main_packet) |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
643 |
main_packet.set_executable () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
644 |
main_packet.add_dep ('common') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
645 |
main_packet.add_source ('main-packet.cc') |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
646 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
647 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
648 |
ns3.generate_dependencies () |
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
649 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
650 |
|
cb4ae01ba180
add scons build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
651 |