## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-

def build(bld):

    module = bld.create_ns3_module('lte', ['core', 'network', 'spectrum', 'stats', 'buildings', 'virtual-net-device','point-to-point','applications','internet','csma'])
    module.source = [
        'model/lte-common.cc',
        'model/lte-spectrum-phy.cc',
        'model/lte-spectrum-signal-parameters.cc',
        'model/lte-phy.cc',
        'model/lte-enb-phy.cc',
        'model/lte-ue-phy.cc',
        'model/lte-spectrum-value-helper.cc',
        'model/lte-amc.cc',
        'model/lte-enb-rrc.cc',
        'model/lte-ue-rrc.cc',
        'model/lte-rlc-sap.cc',
        'model/lte-rlc.cc',
        'model/lte-rlc-sequence-number.cc',
        'model/lte-rlc-header.cc',
        'model/lte-rlc-am-header.cc',
        'model/lte-rlc-um.cc',
        'model/lte-rlc-am.cc',
        'model/lte-rlc-tag.cc',
        'model/lte-rlc-sdu-status-tag.cc',
        'model/lte-pdcp-sap.cc',
        'model/lte-pdcp.cc',
        'model/lte-pdcp-header.cc',
        'model/lte-pdcp-tag.cc',
        'model/eps-bearer.cc',
        'model/lte-radio-bearer-info.cc',
        'model/lte-net-device.cc',
        'model/lte-enb-net-device.cc',
        'model/lte-ue-net-device.cc',
        'model/ideal-control-messages.cc',
        'helper/lte-helper.cc',
        'helper/lte-stats-calculator.cc',
        'helper/epc-helper.cc',
        'helper/radio-bearer-stats-calculator.cc',
        'helper/mac-stats-calculator.cc',
        'helper/radio-environment-map-helper.cc',
        'helper/lte-hex-grid-enb-topology-helper.cc',
        'model/rem-spectrum-phy.cc',
        'model/ff-mac-csched-sap.cc',
        'model/ff-mac-sched-sap.cc',
        'model/lte-mac-sap.cc',
        'model/ff-mac-scheduler.cc',
        'model/lte-enb-cmac-sap.cc',
        'model/lte-ue-cmac-sap.cc',
        'model/rr-ff-mac-scheduler.cc',
        'model/lte-enb-mac.cc',
        'model/lte-ue-mac.cc',
        'model/lte-radio-bearer-tag.cc',
        'model/lte-phy-tag.cc',
        'model/lte-enb-phy-sap.cc',
        'model/lte-ue-phy-sap.cc',
        'model/lte-interference.cc',
        'model/lte-sinr-chunk-processor.cc',
        'model/pf-ff-mac-scheduler.cc',
        'model/epc-gtpu-header.cc',
        'model/trace-fading-loss-model.cc',
        'model/epc-enb-application.cc',
        'model/epc-sgw-pgw-application.cc',
        'model/epc-tft.cc',
        'model/epc-tft-classifier.cc',
        'model/lte-mi-error-model.cc'
        ]

    module_test = bld.create_ns3_module_test_library('lte')
    module_test.source = [
        'test/lte-test-downlink-sinr.cc',
        'test/lte-test-uplink-sinr.cc',
        'test/lte-test-link-adaptation.cc',
        'test/lte-test-interference.cc',
        'test/lte-test-sinr-chunk-processor.cc',
        'test/lte-test-ue-phy.cc',
        'test/lte-test-rr-ff-mac-scheduler.cc',
        'test/lte-test-pf-ff-mac-scheduler.cc',
        'test/lte-test-earfcn.cc',
        'test/lte-test-spectrum-value-helper.cc',
        'test/lte-test-pathloss-model.cc',
        'test/lte-test-entities.cc',
        'test/lte-simple-helper.cc',
        'test/lte-simple-net-device.cc',
        'test/lte-test-rlc-um-transmitter.cc',
        'test/lte-test-rlc-am-transmitter.cc',
        'test/lte-test-rlc-um-e2e.cc',
        'test/lte-test-rlc-am-e2e.cc',
        'test/epc-test-gtpu.cc',
        'test/test-epc-tft-classifier.cc',
        'test/epc-test-s1u-downlink.cc',
        'test/epc-test-s1u-uplink.cc',
        'test/test-lte-epc-e2e-data.cc',
        'test/test-lte-antenna.cc',
        'test/lte-test-phy-error-model.cc',
        'test/lte-test-mimo.cc'
        ]

    headers = bld.new_task_gen(features=['ns3header'])
    headers.module = 'lte'
    headers.source = [
        'model/lte-common.h',
        'model/lte-spectrum-phy.h',
        'model/lte-spectrum-signal-parameters.h',
        'model/lte-phy.h',
        'model/lte-enb-phy.h',
        'model/lte-ue-phy.h',
        'model/lte-spectrum-value-helper.h',
        'model/lte-amc.h',
        'model/lte-enb-rrc.h',
        'model/lte-ue-rrc.h',
        'model/lte-rlc-sap.h',
        'model/lte-rlc.h',
        'model/lte-rlc-header.h',
        'model/lte-rlc-sequence-number.h',
        'model/lte-rlc-am-header.h',
        'model/lte-rlc-um.h',
        'model/lte-rlc-am.h',
        'model/lte-rlc-tag.h',
        'model/lte-rlc-sdu-status-tag.h',
        'model/lte-pdcp-sap.h',
        'model/lte-pdcp.h',
        'model/lte-pdcp-header.h',
        'model/lte-pdcp-tag.h',
        'model/eps-bearer.h',
        'model/lte-radio-bearer-info.h',
        'model/lte-net-device.h',
        'model/lte-enb-net-device.h',
        'model/lte-ue-net-device.h',
        'model/ideal-control-messages.h',
        'helper/lte-helper.h',
        'helper/lte-stats-calculator.h',
        'helper/epc-helper.h',
        'helper/mac-stats-calculator.h',
        'helper/radio-bearer-stats-calculator.h',
        'helper/radio-environment-map-helper.h',
        'helper/lte-hex-grid-enb-topology-helper.h',
        'model/rem-spectrum-phy.h',
        'model/ff-mac-common.h',
        'model/ff-mac-csched-sap.h',
        'model/ff-mac-sched-sap.h',
        'model/lte-enb-cmac-sap.h',
        'model/lte-ue-cmac-sap.h',
        'model/lte-mac-sap.h',
        'model/ff-mac-scheduler.h',
        'model/rr-ff-mac-scheduler.h',
        'model/lte-enb-mac.h',
        'model/lte-ue-mac.h',
        'model/lte-radio-bearer-tag.h',
        'model/lte-phy-tag.h',
        'model/lte-enb-phy-sap.h',
        'model/lte-ue-phy-sap.h',
        'model/lte-interference.h',
        'model/lte-sinr-chunk-processor.h',
        'model/pf-ff-mac-scheduler.h',
        'model/trace-fading-loss-model.h',
        'model/epc-gtpu-header.h',
        'model/epc-enb-application.h',
        'model/epc-sgw-pgw-application.h',
        'model/epc-tft.h',
        'model/epc-tft-classifier.h',
        'model/lte-mi-error-model.h',
        ]

    if (bld.env['ENABLE_EXAMPLES']):
      bld.add_subdirs('examples')

    bld.ns3_python_bindings()
