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

from waflib import Utils

top = '..'

def configure(conf):
    conf.find_program('sh')

def build(bld):
    for app in bld.path.ant_glob('*.cpp'):
        bld(features=['cxx', 'cxxprogram'],
            target = '%s' % (str(app.change_ext('','.cpp'))),
            source = app,
            use = 'ndn-cxx',
            )

    bld(features = "subst",
        source = bld.path.ant_glob(['wrapper/*.sh']),
        target = ['%s' % node.change_ext('', '.sh')
                  for node in bld.path.ant_glob(['wrapper/*.sh'])],
        install_path = "${BINDIR}",
        chmod = Utils.O755,
       )
