1## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2
3def build(bld):
4    obj = bld.create_ns3_module('wifi', ['network', 'propagation', 'energy', 'spectrum', 'antenna', 'mobility'])
5    obj.source = [
6        'model/wifi-utils.cc',
7        'model/wifi-information-element.cc',
8        'model/wifi-information-element-vector.cc',
9        'model/wifi-mode.cc',
10        'model/ssid.cc',
11        'model/wifi-phy.cc',
12        'model/wifi-phy-operating-channel.cc',
13        'model/wifi-phy-state-helper.cc',
14        'model/error-rate-model.cc',
15        'model/yans-error-rate-model.cc',
16        'model/nist-error-rate-model.cc',
17        'model/non-ht/dsss-error-rate-model.cc',
18        'model/table-based-error-rate-model.cc',
19        'model/interference-helper.cc',
20        'model/wifi-phy-common.cc',
21        'model/yans-wifi-phy.cc',
22        'model/yans-wifi-channel.cc',
23        'model/spectrum-wifi-phy.cc',
24        'model/wifi-spectrum-phy-interface.cc',
25        'model/wifi-spectrum-signal-parameters.cc',
26        'model/wifi-mac-header.cc',
27        'model/wifi-mac-trailer.cc',
28        'model/wifi-tx-timer.cc',
29        'model/wifi-protection.cc',
30        'model/wifi-acknowledgment.cc',
31        'model/wifi-tx-parameters.cc',
32        'model/wifi-protection-manager.cc',
33        'model/wifi-default-protection-manager.cc',
34        'model/wifi-ack-manager.cc',
35        'model/wifi-default-ack-manager.cc',
36        'model/frame-exchange-manager.cc',
37        'model/qos-frame-exchange-manager.cc',
38        'model/ht/ht-frame-exchange-manager.cc',
39        'model/vht/vht-frame-exchange-manager.cc',
40        'model/he/he-frame-exchange-manager.cc',
41        'model/he/multi-user-scheduler.cc',
42        'model/he/rr-multi-user-scheduler.cc',
43        'model/wifi-mac-queue.cc',
44        'model/mac-tx-middle.cc',
45        'model/mac-rx-middle.cc',
46        'model/txop.cc',
47        'model/supported-rates.cc',
48        'model/capability-information.cc',
49        'model/status-code.cc',
50        'model/mgt-headers.cc',
51        'model/channel-access-manager.cc',
52        'model/wifi-mac.cc',
53        'model/regular-wifi-mac.cc',
54        'model/wifi-remote-station-info.cc',
55        'model/wifi-remote-station-manager.cc',
56        'model/ap-wifi-mac.cc',
57        'model/sta-wifi-mac.cc',
58        'model/adhoc-wifi-mac.cc',
59        'model/wifi-net-device.cc',
60        'model/rate-control/arf-wifi-manager.cc',
61        'model/rate-control/aarf-wifi-manager.cc',
62        'model/rate-control/ideal-wifi-manager.cc',
63        'model/rate-control/constant-rate-wifi-manager.cc',
64        'model/rate-control/amrr-wifi-manager.cc',
65        'model/rate-control/onoe-wifi-manager.cc',
66        'model/rate-control/rraa-wifi-manager.cc',
67        'model/rate-control/aarfcd-wifi-manager.cc',
68        'model/rate-control/cara-wifi-manager.cc',
69        'model/rate-control/minstrel-wifi-manager.cc',
70        'model/rate-control/minstrel-ht-wifi-manager.cc',
71        'model/qos-utils.cc',
72        'model/qos-txop.cc',
73        'model/msdu-aggregator.cc',
74        'model/amsdu-subframe-header.cc',
75        'model/originator-block-ack-agreement.cc',
76        'model/recipient-block-ack-agreement.cc',
77        'model/ctrl-headers.cc',
78        'model/qos-blocked-destinations.cc',
79        'model/block-ack-agreement.cc',
80        'model/block-ack-manager.cc',
81        'model/block-ack-window.cc',
82        'model/block-ack-type.cc',
83        'model/snr-tag.cc',
84        'model/he/mu-snr-tag.cc',
85        'model/ht/ht-capabilities.cc',
86        'model/wifi-tx-vector.cc',
87        'model/rate-control/parf-wifi-manager.cc',
88        'model/rate-control/aparf-wifi-manager.cc',
89        'model/rate-control/rrpaa-wifi-manager.cc',
90        'model/rate-control/thompson-sampling-wifi-manager.cc',
91        'model/ampdu-subframe-header.cc',
92        'model/mpdu-aggregator.cc',
93        'model/ampdu-tag.cc',
94        'model/wifi-radio-energy-model.cc',
95        'model/wifi-tx-current-model.cc',
96        'model/vht/vht-capabilities.cc',
97        'model/non-ht/erp-information.cc',
98        'model/ht/ht-operation.cc',
99        'model/vht/vht-operation.cc',
100        'model/non-ht/dsss-parameter-set.cc',
101        'model/edca-parameter-set.cc',
102        'model/he/mu-edca-parameter-set.cc',
103        'model/he/he-capabilities.cc',
104        'model/frame-capture-model.cc',
105        'model/simple-frame-capture-model.cc',
106        'model/preamble-detection-model.cc',
107        'model/threshold-preamble-detection-model.cc',
108        'model/he/he-operation.cc',
109        'model/he/he-configuration.cc',
110        'model/extended-capabilities.cc',
111        'model/wifi-mac-queue-item.cc',
112        'model/wifi-psdu.cc',
113        'model/wifi-ppdu.cc',
114        'model/non-ht/dsss-ppdu.cc',
115        'model/non-ht/ofdm-ppdu.cc',
116        'model/non-ht/erp-ofdm-ppdu.cc',
117        'model/ht/ht-ppdu.cc',
118        'model/vht/vht-ppdu.cc',
119        'model/he/he-ppdu.cc',
120        'model/ht/ht-configuration.cc',
121        'model/vht/vht-configuration.cc',
122        'model/he/obss-pd-algorithm.cc',
123        'model/he/constant-obss-pd-algorithm.cc',
124        'model/he/he-ru.cc',
125        'model/phy-entity.cc',
126        'model/non-ht/dsss-phy.cc',
127        'model/non-ht/ofdm-phy.cc',
128        'model/non-ht/erp-ofdm-phy.cc',
129        'model/ht/ht-phy.cc',
130        'model/vht/vht-phy.cc',
131        'model/he/he-phy.cc',
132        'helper/wifi-radio-energy-model-helper.cc',
133        'helper/athstats-helper.cc',
134        'helper/wifi-helper.cc',
135        'helper/yans-wifi-helper.cc',
136        'helper/spectrum-wifi-helper.cc',
137        'helper/wifi-mac-helper.cc',
138        ]
139
140    obj_test = bld.create_ns3_module_test_library('wifi')
141    obj_test.source = [
142        'test/block-ack-test-suite.cc',
143        'test/channel-access-manager-test.cc',
144        'test/tx-duration-test.cc',
145        'test/power-rate-adaptation-test.cc',
146        'test/wifi-test.cc',
147        'test/wifi-txop-test.cc',
148        'test/spectrum-wifi-phy-test.cc',
149        'test/wifi-primary-channels-test.cc',
150        'test/wifi-aggregation-test.cc',
151        'test/wifi-error-rate-models-test.cc',
152        'test/wifi-transmit-mask-test.cc',
153        'test/wifi-phy-thresholds-test.cc',
154        'test/wifi-phy-reception-test.cc',
155        'test/inter-bss-test-suite.cc',
156        'test/wifi-mac-ofdma-test.cc',
157        'test/wifi-phy-ofdma-test.cc',
158        'test/wifi-mac-queue-test.cc',
159        ]
160
161    # Tests encapsulating example programs should be listed here
162    if (bld.env['ENABLE_EXAMPLES']):
163        obj_test.source.extend([
164        #   'test/wifi-examples-test-suite.cc',
165            ])
166
167    headers = bld(features='ns3header')
168    headers.module = 'wifi'
169    headers.source = [
170        'model/wifi-utils.h',
171        'model/wifi-information-element.h',
172        'model/wifi-information-element-vector.h',
173        'model/wifi-net-device.h',
174        'model/wifi-mode.h',
175        'model/ssid.h',
176        'model/wifi-phy-common.h',
177        'model/wifi-phy-band.h',
178        'model/wifi-standards.h',
179        'model/yans-wifi-phy.h',
180        'model/spectrum-wifi-phy.h',
181        'model/yans-wifi-channel.h',
182        'model/wifi-phy.h',
183        'model/wifi-phy-operating-channel.h',
184        'model/wifi-spectrum-phy-interface.h',
185        'model/wifi-spectrum-signal-parameters.h',
186        'model/interference-helper.h',
187        'model/wifi-remote-station-info.h',
188        'model/wifi-remote-station-manager.h',
189        'model/ap-wifi-mac.h',
190        'model/sta-wifi-mac.h',
191        'model/adhoc-wifi-mac.h',
192        'model/rate-control/arf-wifi-manager.h',
193        'model/rate-control/aarf-wifi-manager.h',
194        'model/rate-control/ideal-wifi-manager.h',
195        'model/rate-control/constant-rate-wifi-manager.h',
196        'model/rate-control/amrr-wifi-manager.h',
197        'model/rate-control/onoe-wifi-manager.h',
198        'model/rate-control/rraa-wifi-manager.h',
199        'model/rate-control/aarfcd-wifi-manager.h',
200        'model/rate-control/cara-wifi-manager.h',
201        'model/rate-control/minstrel-wifi-manager.h',
202        'model/rate-control/minstrel-ht-wifi-manager.h',
203        'model/rate-control/thompson-sampling-wifi-manager.h',
204        'model/wifi-mac.h',
205        'model/regular-wifi-mac.h',
206        'model/supported-rates.h',
207        'model/error-rate-model.h',
208        'model/yans-error-rate-model.h',
209        'model/nist-error-rate-model.h',
210        'model/non-ht/dsss-error-rate-model.h',
211        'model/table-based-error-rate-model.h',
212        'model/wifi-mac-queue.h',
213        'model/txop.h',
214        'model/wifi-mac-header.h',
215        'model/wifi-mac-trailer.h',
216        'model/wifi-phy-state-helper.h',
217        'model/qos-utils.h',
218        'model/qos-txop.h',
219        'model/msdu-aggregator.h',
220        'model/amsdu-subframe-header.h',
221        'model/mgt-headers.h',
222        'model/status-code.h',
223        'model/capability-information.h',
224        'model/channel-access-manager.h',
225        'model/mac-tx-middle.h',
226        'model/mac-rx-middle.h',
227        'model/wifi-tx-timer.h',
228        'model/wifi-protection.h',
229        'model/wifi-acknowledgment.h',
230        'model/wifi-tx-parameters.h',
231        'model/wifi-protection-manager.h',
232        'model/wifi-default-protection-manager.h',
233        'model/wifi-ack-manager.h',
234        'model/wifi-default-ack-manager.h',
235        'model/frame-exchange-manager.h',
236        'model/qos-frame-exchange-manager.h',
237        'model/ht/ht-frame-exchange-manager.h',
238        'model/vht/vht-frame-exchange-manager.h',
239        'model/he/he-frame-exchange-manager.h',
240        'model/he/multi-user-scheduler.h',
241        'model/he/rr-multi-user-scheduler.h',
242        'model/originator-block-ack-agreement.h',
243        'model/recipient-block-ack-agreement.h',
244        'model/ctrl-headers.h',
245        'model/block-ack-agreement.h',
246        'model/block-ack-manager.h',
247        'model/block-ack-window.h',
248        'model/snr-tag.h',
249        'model/he/mu-snr-tag.h',
250        'model/ht/ht-capabilities.h',
251        'model/rate-control/parf-wifi-manager.h',
252        'model/rate-control/aparf-wifi-manager.h',
253        'model/rate-control/rrpaa-wifi-manager.h',
254        'model/wifi-tx-vector.h',
255        'model/ampdu-subframe-header.h',
256        'model/mpdu-aggregator.h',
257        'model/ampdu-tag.h',
258        'model/wifi-radio-energy-model.h',
259        'model/wifi-tx-current-model.h',
260        'model/vht/vht-capabilities.h',
261        'model/non-ht/erp-information.h',
262        'model/ht/ht-operation.h',
263        'model/vht/vht-operation.h',
264        'model/non-ht/dsss-parameter-set.h',
265        'model/edca-parameter-set.h',
266        'model/he/mu-edca-parameter-set.h',
267        'model/he/he-capabilities.h',
268        'model/frame-capture-model.h',
269        'model/simple-frame-capture-model.h',
270        'model/preamble-detection-model.h',
271        'model/threshold-preamble-detection-model.h',
272        'model/qos-blocked-destinations.h',
273        'model/he/he-operation.h',
274        'model/he/he-configuration.h',
275        'model/extended-capabilities.h',
276        'model/wifi-mac-queue-item.h',
277        'model/wifi-psdu.h',
278        'model/wifi-ppdu.h',
279        'model/non-ht/dsss-ppdu.h',
280        'model/non-ht/erp-ofdm-ppdu.h',
281        'model/non-ht/ofdm-ppdu.h',
282        'model/ht/ht-ppdu.h',
283        'model/vht/vht-ppdu.h',
284        'model/he/he-ppdu.h',
285        'model/wifi-phy-state.h',
286        'model/wifi-phy-listener.h',
287        'model/block-ack-type.h',
288        'model/wifi-mpdu-type.h',
289        'model/ht/ht-configuration.h',
290        'model/vht/vht-configuration.h',
291        'model/he/obss-pd-algorithm.h',
292        'model/he/constant-obss-pd-algorithm.h',
293        'model/he/he-ru.h',
294        'model/reference/error-rate-tables.h',
295        'model/phy-entity.h',
296        'model/non-ht/dsss-phy.h',
297        'model/non-ht/ofdm-phy.h',
298        'model/non-ht/erp-ofdm-phy.h',
299        'model/ht/ht-phy.h',
300        'model/vht/vht-phy.h',
301        'model/he/he-phy.h',
302        'helper/wifi-radio-energy-model-helper.h',
303        'helper/athstats-helper.h',
304        'helper/wifi-helper.h',
305        'helper/yans-wifi-helper.h',
306        'helper/spectrum-wifi-helper.h',
307        'helper/wifi-mac-helper.h',
308        ]
309
310    if bld.env['ENABLE_GSL']:
311        obj.use.extend(['GSL', 'GSLCBLAS', 'M'])
312        obj_test.use.extend(['GSL', 'GSLCBLAS', 'M'])
313
314    if (bld.env['ENABLE_EXAMPLES']):
315        bld.recurse('examples')
316
317    bld.ns3_python_bindings()
318
319