| # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
| # tools/foo.cpp is a self-contained tool with a main() function |
| # and is built as build/bin/foo. These tools cannot be unit-tested. |
| for tool in bld.path.ant_glob('*.cpp'): |
| name = tool.change_ext('').path_from(bld.path.get_bld()) |
| target=f'{top}/bin/{name}', |
| # tools/foo/**/*.cpp are compiled and linked into build/bin/foo. |
| # tools/foo/main.cpp must exist and must contain the main() function. |
| # All other objects are collected into 'tools-foo-objects' and can be unit-tested. |
| for subdir in bld.path.ant_glob('*', dir=True, src=False): |
| name = subdir.path_from(bld.path) |
| subWscript = subdir.find_node('wscript') |
| # if the subdir has a wscript, delegate to it |
| mainFile = subdir.find_node('main.cpp') |
| # not a C++ tool, skip the subdir |
| srcFiles = subdir.ant_glob('**/*.cpp', excl=['main.cpp']) |
| srcObjects = f'tools-{name}-objects' |
| bld.objects(target=srcObjects, |
| target=f'{top}/bin/{name}', |
| use=f'ndn-cxx {srcObjects}') |