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

top = '..'

def build(bld):
    # List all .cpp files (whole example in one .cpp)
    for ex in bld.path.ant_glob('*.cpp'):
        name = ex.change_ext('').path_from(bld.path.get_bld())
        bld.program(name=f'example-{name}',
                    target=name,
                    source=[ex],
                    use='ndn-cxx',
                    install_path=None)

    # List all directories (example can have multiple .cpp in the directory)
    for subdir in bld.path.ant_glob('*', dir=True, src=False):
        name = subdir.path_from(bld.path)
        bld.program(name=f'example-{name}',
                    target=name,
                    source=subdir.ant_glob('**/*.cpp'),
                    use='ndn-cxx',
                    includes=name,
                    install_path=None)
