2 # \brief BoostUnitTests build
4 ## \package senfscons.BoostUnitTests
5 # \brief Builder utilizing the <a href="http://www.boost.org/libs/test/doc/index.html">Boost.Test</a> unit-test framework
7 # The BoostUnitTests builder will build a unit-test executable using
9 # href="http://www.boost.org/libs/test/doc/index.html">Boost.Test</a>
10 # library. After building, the unit-test will be executed.
12 # This builder is used by the SENFSCons.Object() helper to build the
15 # \par Construction Envrionment Variables:
16 # <table class="senf">
17 # <tr><td>\c BOOSTTESTLIB</td><td>Name of the library to use, defaults to \c boost_unit_test_framework</td></tr>
18 # <tr><td>\c BOOSTTESTARGS</td><td>Command line arguments of the test, defaults to <tt>--build_info=yes --log_level=test_suite</tt></td></tr>
21 # \todo This is not really a builder. This should be rewritten as one
24 import SCons.Script.SConscript
29 def BoostUnitTests(env, target=None, source=None, **kw):
30 target = env.arg2nodes(target)[0]
32 binnode = target.dir.File('.' + target.name + '.bin')
33 stampnode = target.dir.File('.' + target.name + '.stamp')
35 bin = env.Program(binnode, source,
36 LIBS = env['LIBS'] + [ '$TEST_EXTRA_LIBS' ],
37 _LIBFLAGS = ' -Wl,-Bstatic -l$BOOSTTESTLIB -Wl,-Bdynamic ' + env['_LIBFLAGS'],
40 stamp = env.Command(stampnode, bin,
41 [ '$SOURCE $BOOSTTESTARGS',
45 return env.Command(env.File(target), stamp, [ 'true' ])
48 env['BOOSTTESTLIB'] = 'boost_unit_test_framework'
49 env['BOOSTTESTARGS'] = [ '--build_info=yes', '--log_level=test_suite' ]
50 env['BUILDERS']['BoostUnitTests'] = BoostUnitTests