1## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2
3def configure(conf):
4    have_sqlite3 = conf.check_cfg(package='sqlite3', uselib_store='SQLITE3',
5                                  args=['--cflags', '--libs'],
6                                  mandatory=False)
7
8    conf.env['SQLITE_STATS'] = have_sqlite3
9    have_sem = conf.check_nonfatal(header_name='semaphore.h', define_name='HAVE_SEMAPHORE_H')
10    conf.env['SEMAPHORE_ENABLED'] = have_sem
11    conf.report_optional_feature("SQLiteStats", "SQLite stats support",
12                                 conf.env['SQLITE_STATS'] and conf.env['SEMAPHORE_ENABLED'],
13                                 "library 'sqlite3' and/or semaphore.h not found")
14
15def build(bld):
16    obj = bld.create_ns3_module('stats', ['core'])
17    obj.source = [
18        'helper/file-helper.cc',
19        'helper/gnuplot-helper.cc',
20        'model/data-calculator.cc',
21        'model/time-data-calculators.cc',
22        'model/data-output-interface.cc',
23        'model/omnet-data-output.cc',
24        'model/data-collector.cc',
25        'model/gnuplot.cc',
26        'model/data-collection-object.cc',
27        'model/probe.cc',
28        'model/boolean-probe.cc',
29        'model/double-probe.cc',
30        'model/time-probe.cc',
31        'model/uinteger-8-probe.cc',
32        'model/uinteger-16-probe.cc',
33        'model/uinteger-32-probe.cc',
34        'model/time-series-adaptor.cc',
35        'model/file-aggregator.cc',
36        'model/gnuplot-aggregator.cc',
37        'model/get-wildcard-matches.cc',
38        'model/histogram.cc',
39        ]
40
41    module_test = bld.create_ns3_module_test_library('stats')
42    module_test.source = [
43        'test/basic-data-calculators-test-suite.cc',
44        'test/average-test-suite.cc',
45        'test/double-probe-test-suite.cc',
46        'test/histogram-test-suite.cc',
47        ]
48
49    # Tests encapsulating example programs should be listed here
50    if (bld.env['ENABLE_EXAMPLES']):
51        module_test.source.extend([
52        #   'test/stats-examples-test-suite.cc',
53            ])
54
55    headers = bld(features='ns3header')
56    headers.module = 'stats'
57    headers.source = [
58        'helper/file-helper.h',
59        'helper/gnuplot-helper.h',
60        'model/data-calculator.h',
61        'model/time-data-calculators.h',
62        'model/basic-data-calculators.h',
63        'model/data-output-interface.h',
64        'model/omnet-data-output.h',
65        'model/data-collector.h',
66        'model/gnuplot.h',
67        'model/average.h',
68        'model/data-collection-object.h',
69        'model/probe.h',
70        'model/boolean-probe.h',
71        'model/double-probe.h',
72        'model/time-probe.h',
73        'model/uinteger-8-probe.h',
74        'model/uinteger-16-probe.h',
75        'model/uinteger-32-probe.h',
76        'model/time-series-adaptor.h',
77        'model/file-aggregator.h',
78        'model/gnuplot-aggregator.h',
79        'model/get-wildcard-matches.h',
80        'model/histogram.h',
81        ]
82
83    if bld.env['SQLITE_STATS']:
84        headers.source.append('model/sqlite-data-output.h')
85        obj.source.append('model/sqlite-data-output.cc')
86        obj.use.append('SQLITE3')
87
88    if bld.env['SQLITE_STATS'] and bld.env['SEMAPHORE_ENABLED']:
89        obj.source.append('model/sqlite-output.cc')
90        headers.source.append('model/sqlite-output.h')
91
92    if (bld.env['ENABLE_EXAMPLES']):
93        bld.recurse('examples')
94
95    bld.ns3_python_bindings()
96