2007-05-07 12:01:51 +01:00
|
|
|
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
import Params
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set_options(opt):
|
|
|
|
|
opt.add_option('--high-precision-as-double',
|
|
|
|
|
help=('Whether to use a double floating point'
|
2007-06-21 12:33:50 +01:00
|
|
|
' type for high precision time values'
|
|
|
|
|
' WARNING: this option only has effect '
|
|
|
|
|
'with the configure command.'),
|
2007-05-07 12:01:51 +01:00
|
|
|
action="store_true", default=False,
|
|
|
|
|
dest='high_precision_as_double')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def configure(conf):
|
|
|
|
|
if Params.g_options.high_precision_as_double:
|
|
|
|
|
conf.add_define('USE_HIGH_PRECISION_DOUBLE', 1)
|
|
|
|
|
conf.env['USE_HIGH_PRECISION_DOUBLE'] = 1
|
|
|
|
|
highprec = 'long double'
|
|
|
|
|
else:
|
|
|
|
|
conf.env['USE_HIGH_PRECISION_DOUBLE'] = 0
|
|
|
|
|
highprec = '128-bit integer'
|
2008-08-26 15:34:57 -07:00
|
|
|
conf.check_message_custom('high precision time','implementation',highprec)
|
2007-05-07 12:01:51 +01:00
|
|
|
|
|
|
|
|
e = conf.create_header_configurator()
|
|
|
|
|
e.mandatory = False
|
|
|
|
|
e.name = 'stdint.h'
|
|
|
|
|
e.define = 'HAVE_STDINT_H'
|
|
|
|
|
e.run()
|
|
|
|
|
|
|
|
|
|
e = conf.create_header_configurator()
|
|
|
|
|
e.mandatory = False
|
|
|
|
|
e.name = 'inttypes.h'
|
|
|
|
|
e.define = 'HAVE_INTTYPES_H'
|
|
|
|
|
e.run()
|
|
|
|
|
|
|
|
|
|
e = conf.create_header_configurator()
|
|
|
|
|
e.mandatory = False
|
|
|
|
|
e.name = 'sys/inttypes.h'
|
|
|
|
|
e.define = 'HAVE_SYS_INT_TYPES_H'
|
|
|
|
|
e.run()
|
|
|
|
|
|
|
|
|
|
conf.write_config_header('ns3/simulator-config.h')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def build(bld):
|
2007-08-08 15:10:36 +01:00
|
|
|
sim = bld.create_ns3_module('simulator', ['core'])
|
2007-05-07 12:01:51 +01:00
|
|
|
sim.source = [
|
|
|
|
|
'high-precision.cc',
|
|
|
|
|
'time.cc',
|
|
|
|
|
'event-id.cc',
|
|
|
|
|
'scheduler.cc',
|
2008-04-15 10:09:42 -07:00
|
|
|
'list-scheduler.cc',
|
|
|
|
|
'map-scheduler.cc',
|
|
|
|
|
'heap-scheduler.cc',
|
2007-05-07 12:01:51 +01:00
|
|
|
'event-impl.cc',
|
|
|
|
|
'simulator.cc',
|
2008-07-18 21:51:31 -07:00
|
|
|
'default-simulator-impl.cc',
|
2008-08-26 15:34:57 -07:00
|
|
|
'realtime-simulator-impl.cc',
|
2007-09-27 12:51:17 +02:00
|
|
|
'timer.cc',
|
2007-10-10 15:04:46 +02:00
|
|
|
'watchdog.cc',
|
2008-08-26 15:34:57 -07:00
|
|
|
'synchronizer.cc',
|
|
|
|
|
'wall-clock-synchronizer.cc',
|
2007-05-07 12:01:51 +01:00
|
|
|
]
|
2007-07-20 11:12:43 +01:00
|
|
|
|
2007-05-07 12:01:51 +01:00
|
|
|
headers = bld.create_obj('ns3header')
|
2007-12-26 13:40:39 +00:00
|
|
|
headers.module = 'simulator'
|
2007-05-07 12:01:51 +01:00
|
|
|
headers.source = [
|
|
|
|
|
'high-precision.h',
|
|
|
|
|
'nstime.h',
|
|
|
|
|
'event-id.h',
|
|
|
|
|
'event-impl.h',
|
|
|
|
|
'simulator.h',
|
2008-07-17 23:52:59 -07:00
|
|
|
'simulator-impl.h',
|
2008-07-18 21:51:31 -07:00
|
|
|
'default-simulator-impl.h',
|
2008-08-26 15:34:57 -07:00
|
|
|
'realtime-simulator-impl.h',
|
2007-05-07 12:01:51 +01:00
|
|
|
'scheduler.h',
|
2008-04-15 10:09:42 -07:00
|
|
|
'list-scheduler.h',
|
|
|
|
|
'map-scheduler.h',
|
|
|
|
|
'heap-scheduler.h',
|
2007-05-07 12:01:51 +01:00
|
|
|
'simulation-singleton.h',
|
2007-10-10 13:18:15 +02:00
|
|
|
'timer.h',
|
|
|
|
|
'timer-impl.h',
|
2007-10-10 15:59:34 +02:00
|
|
|
'watchdog.h',
|
2008-08-26 15:34:57 -07:00
|
|
|
'synchronizer.h',
|
|
|
|
|
'wall-clock-synchronizer.h',
|
2007-05-07 12:01:51 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
env = bld.env_of_name('default')
|
|
|
|
|
if env['USE_HIGH_PRECISION_DOUBLE']:
|
|
|
|
|
sim.source.extend([
|
|
|
|
|
'high-precision-double.cc',
|
|
|
|
|
])
|
|
|
|
|
headers.source.extend([
|
|
|
|
|
'high-precision-double.h',
|
|
|
|
|
])
|
|
|
|
|
else:
|
|
|
|
|
sim.source.extend([
|
|
|
|
|
'high-precision-128.cc',
|
|
|
|
|
'cairo-wideint.c',
|
|
|
|
|
])
|
|
|
|
|
headers.source.extend([
|
|
|
|
|
'high-precision-128.h',
|
|
|
|
|
'cairo-wideint-private.h',
|
|
|
|
|
])
|
|
|
|
|
|