SConstruct
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--
change yans namespace to ns3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
		print
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