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

def build(bld):
    helper = bld.create_ns3_module('helper', ['internet-stack', 'wifi', 'point-to-point', 'csma', 'olsr', 'global-routing', 'onoff', 'packet-sink', 'udp-echo'])
    helper.source = [
        'node-container.cc',
        'net-device-container.cc',
        'wifi-helper.cc',
        'olsr-helper.cc',
        'point-to-point-helper.cc',
        'csma-helper.cc',
        'mobility-helper.cc',
        'ns2-mobility-helper.cc',
        'ipv4-address-helper.cc',
        'ipv4-static-routing-helper.cc',
        'internet-stack-helper.cc',
        'application-container.cc',
        'on-off-helper.cc',
        'packet-sink-helper.cc',
        'packet-socket-helper.cc',
        'ipv4-interface-container.cc',
        'udp-echo-helper.cc',
        'bridge-helper.cc',
        'yans-wifi-helper.cc',
        'v4ping-helper.cc',
        'nqos-wifi-mac-helper.cc',
        'qos-wifi-mac-helper.cc',
        'ipv4-nix-vector-helper.cc',
        'ipv4-global-routing-helper.cc',
        'ipv4-list-routing-helper.cc',
        'ipv4-routing-helper.cc',
        'aodv-helper.cc',
        'mesh-helper.cc',
        'dot11s-installer.cc',
        'flame-installer.cc',
        'athstats-helper.cc',
        'ipv6-address-helper.cc',
        'ipv6-interface-container.cc',
        'ipv6-static-routing-helper.cc',
        'ipv6-list-routing-helper.cc',
        'ipv6-routing-helper.cc',
        'ping6-helper.cc',
        'flow-monitor-helper.cc',
        'animation-interface.cc',
        'canvas-location.cc',
        'point-to-point-dumbbell-helper.cc',
        'point-to-point-grid-helper.cc',
        'point-to-point-star-helper.cc',
        'csma-star-helper.cc',
        'udp-client-server-helper.cc',
        ]

    headers = bld.new_task_gen('ns3header')
    headers.module = 'helper'
    headers.source = [
        'node-container.h',
        'net-device-container.h',
        'wifi-helper.h',
        'olsr-helper.h',
        'point-to-point-helper.h',
        'csma-helper.h',
        'mobility-helper.h',
        'ns2-mobility-helper.h',
        'ipv4-address-helper.h',
        'ipv4-static-routing-helper.h',
        'internet-stack-helper.h',
        'application-container.h',
        'on-off-helper.h',
        'packet-sink-helper.h',
        'packet-socket-helper.h',
        'ipv4-interface-container.h',
        'udp-echo-helper.h',
        'bridge-helper.h',
        'yans-wifi-helper.h',
        'v4ping-helper.h',
        'nqos-wifi-mac-helper.h',
        'qos-wifi-mac-helper.h',
        'ipv4-nix-vector-helper.h',
	'ipv4-global-routing-helper.h',
        'ipv4-list-routing-helper.h',
        'ipv4-routing-helper.h',
        'aodv-helper.h',
        'mesh-helper.h',
        'mesh-stack-installer.h',
        'dot11s-installer.h',
        'flame-installer.h',
        'athstats-helper.h',
        'ipv6-address-helper.h',
        'ipv6-interface-container.h',
        'ipv6-static-routing-helper.h',
        'ipv6-list-routing-helper.h',
        'ipv6-routing-helper.h',
        'ping6-helper.h',
        'flow-monitor-helper.h',
        'animation-interface.h',
        'canvas-location.h',
        'point-to-point-dumbbell-helper.h',
        'point-to-point-grid-helper.h',
        'point-to-point-star-helper.h',
        'csma-star-helper.h',
        'udp-client-server-helper.h',
        ]

    env = bld.env_of_name('default')
    if env['ENABLE_EMU']:
        helper.source.extend([
                'emu-helper.cc',
                ])
        headers.source.extend([
                'emu-helper.h',
                ])
    if env['ENABLE_TAP']:
        helper.source.extend([
                'tap-bridge-helper.cc',
                ])
        headers.source.extend([
                'tap-bridge-helper.h',
                ])

def configure(conf):
    conf.check(header_name='sys/socket.h', define_name='HAVE_SYS_SOCKET_H')
    conf.check(header_name='netinet/in.h', define_name='HAVE_NETINET_IN_H')
    conf.write_config_header('ns3/net-anim-config.h', top=True)

