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

def build(bld):
    module = bld.create_ns3_module('NDNabstraction', ['applications', 'core', 'network', 'internet', 'point-to-point'])
    module.includes = '.'
    module.source = [
        'model/ccn/ccn_charbuf.cc',
		'model/ccn/ccn_name_util.cc',
		'model/ccn/ccn_coding.cc',
		'model/ccn/ccn_indexbuf.cc',
		'model/ccn/ccn_random.cc',
		'model/ccn/ccn_buf_decoder.cc',
		'model/ccn/ccn_buf_encoder.cc',
        
        'model/ndn_face.cc',
        'model/interest-packet.cc',
        'model/ndn_contentpacket.cc',
        'model/ndn_timeoutheader.cc',
        'model/ndn_nonceheader.cc',
        'model/name-components.cc',
        'model/ndn_contentstore.cc',

        'apps/stupid-interest-generator.cc',
        'apps/stupid-interest-sink.cc',
        ]

    module_test = bld.create_ns3_module_test_library('NDNabstraction')
    module_test.source = [
        'test/ndnabstraction-basictest.cc',
		]

    headers = bld.new_task_gen('ns3header')
    headers.module = 'NDNabstraction'
    headers.source = [
        'model/ccn/ccn.h',
		'model/ccn/ccn_charbuf.h',
		'model/ccn/ccn_coding.h',
		'model/ccn/ccn_name_util.h',
		'model/ccn/ccn_indexbuf.h',
		'model/ccn/ccn_random.h',

        'model/ndn_face.h',
        'model/interest-packet.h',
        'model/ndn_contentpacket.h',
        'model/ndn_timeoutheader.h',
        'model/ndn_nonceheader.h',
        'model/name-components.h',
        #'model/ndn_hashhelper.h',
        'model/ndn_contentstore.h',
        'model/uthash.h',
        # 'helper/ndnabstraction-helper.h',
        'helper/ndn_stupidinterestgenerator_helper.h',

        'apps/stupid-interest-generator.h',
        'apps/stupid-interest-sink.h'
        ]


    if bld.env['ENABLE_OPENSSL']:
        module.uselib = 'OPENSSL'

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

    bld.ns3_python_bindings()
    #bld.env['CXXFLAGS']=[filter(lambda x: x not in bld.env, sublist) for sublist in [['-Wall'], ['-Werror'], ['-Wextra']]]
    # bld.env['CXXFLAGS']=[]
    # bld.env['CFLAGS']=[]
    

