# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- from waflib import Utils, Context top = '..' TOOLS_DEPENDENCY = 'core-objects NDN_CXX BOOST LIBRESOLV' def build(bld): # single object tools # tools/example-tool.cpp should a self-contained tool with a main function # and it's built into build/bin/example-tool. # These tools cannot be unit-tested. for i in bld.path.ant_glob(['*.cpp']): name = str(i)[:-len(".cpp")] bld(features='cxx cxxprogram', target="../bin/%s" % name, source=[i], use=TOOLS_DEPENDENCY ) # sub-directory tools # tools/example-tool/**/*.cpp is compiled and linked into build/bin/example-tool # tools/example-tool/main.cpp must exist and it should contain the main function. # All other objects are collected into 'tools-objects' and can be unit-tested. testableObjects = [] for name in bld.path.ant_glob(['*'], dir=True, src=False): mainFile = bld.path.find_node(['%s/main.cpp' % name]) if mainFile is None: continue # not a C++ tool srcFiles = bld.path.ant_glob(['%s/**/*.cpp' % name], excl=['%s/main.cpp' % name]) if len(srcFiles) > 0: srcObjects = 'tools-%s-objects' % name bld(features='cxx', name=srcObjects, source=srcFiles, use=TOOLS_DEPENDENCY, includes='%s' % name, ) testableObjects.append(srcObjects) bld(features='cxx cxxprogram', target="../bin/%s" % name, source=[mainFile], use=TOOLS_DEPENDENCY + ' ' + srcObjects, includes='%s' % name, ) else: bld(features='cxx cxxprogram', target="../bin/%s" % name, source=[mainFile], use=TOOLS_DEPENDENCY, includes='%s' % name, ) bld(name='tools-objects', export_includes='.', use=testableObjects) bld(features="subst", source=bld.path.ant_glob(['*.sh', '*.py']), target=['../bin/%s' % node.change_ext('') for node in bld.path.ant_glob(['*.sh', '*.py'])], install_path="${BINDIR}", chmod=Utils.O755, VERSION=Context.g_module.VERSION ) bld.install_files("${DATAROOTDIR}/ndn", bld.path.ant_glob('nfd-status-http-server-files/*'))