blob: a7cb43fe6e1458602541fb8b8fa2b50818f2ac63 [file] [log] [blame]
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
import os.path
top = '..'
def build(bld):
# Single object tools:
# tools/example-tool.cpp is a self-contained tool with a main() function
# and is built as build/bin/example-tool.
# These tools cannot be unit-tested.
for tool in bld.path.ant_glob('*.cpp'):
name = tool.change_ext('').path_from(bld.path.get_bld())
bld.program(name=name,
target='../bin/%s' % name,
source=[tool],
use='ndns-objects')
# Sub-directory tools:
# tools/example-tool/**/*.cpp is compiled and linked into build/bin/example-tool.
# tools/example-tool/main.cpp must exist and must contain the main() function.
# All other objects are collected into 'tools-objects' and can be unit-tested.
testableObjects = []
for subdir in bld.path.ant_glob('*', dir=True, src=False):
mainFile = subdir.find_node('main.cpp')
if mainFile is None:
continue # not a C++ tool
name = subdir.path_from(bld.path)
srcFiles = subdir.ant_glob('**/*.cpp', excl=['main.cpp'])
srcObjects = ''
if srcFiles:
srcObjects = 'tools-%s-objects' % name
bld.objects(target=srcObjects,
source=srcFiles,
use='ndn-cxx',
includes=name)
testableObjects.append(srcObjects)
bld.program(name=name,
target='../bin/%s' % name,
source=[mainFile],
use='ndns-objects ' + srcObjects,
includes=name)
bld.objects(target='tools-objects',
source=[],
export_includes='.',
use=testableObjects)