X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senfscons%2FBoostUnitTests.py;fp=senfscons%2FBoostUnitTests.py;h=427dacf9d6e4a5aa5b56ffe94a8cfcd0e5fbe808;hb=06367434e38b54b3fd4cea32bd4b67121b4349cd;hp=1e28824f68d946e7052c16f6b087b9b286c59031;hpb=b1f9349b1f3521d58cbef52ead0f2e5303a58c9e;p=senf.git diff --git a/senfscons/BoostUnitTests.py b/senfscons/BoostUnitTests.py index 1e28824..427dacf 100644 --- a/senfscons/BoostUnitTests.py +++ b/senfscons/BoostUnitTests.py @@ -26,37 +26,28 @@ import SCons.Defaults import os.path import os -def BoostUnitTests(env, target, objects, test_sources=None, LIBS = [], OBJECTS = [], DEPENDS = [], **kw): - path, name = os.path.split(target) - if test_sources: - if type(test_sources) is not type([]): - test_sources = [ test_sources ] - else: - test_sources = [] - testEnv = env.Clone(**kw) - testEnv.Prepend(_LIBFLAGS = ' -Wl,-Bstatic -l$BOOSTTESTLIB -Wl,-Bdynamic ') - testEnv.Prepend(LIBS = LIBS) - testEnv.Append(LIBS = env['TEST_EXTRA_LIBS']) - all_objects = [] - if not objects: - objects = [] - all_objects = objects + env.Object(test_sources) + OBJECTS - binName = os.path.join(path,'.' + name +'.bin') - testRunner = testEnv.Program(binName, all_objects) - stamp = os.path.join(path,'.' + os.path.splitext(name)[0]+'.stamp') - if DEPENDS: - env.Depends(testRunner, DEPENDS) - return env.Command([ stamp ], testRunner, - [ '$SOURCE $BOOSTTESTARGS', - 'touch $TARGET' ]) - -def dispatcher(*arg,**kw): - return BoostUnitTests(*arg,**kw) +def BoostUnitTests(env, target=None, source=None, **kw): + target = env.arg2nodes(target)[0] + + binnode = target.dir.File('.' + target.name + '.bin') + stampnode = target.dir.File('.' + target.name + '.stamp') + + bin = env.Program(binnode, source, + LIBS = env['LIBS'] + [ '$TEST_EXTRA_LIBS' ], + _LIBFLAGS = ' -Wl,-Bstatic -l$BOOSTTESTLIB -Wl,-Bdynamic ' + env['_LIBFLAGS'], + **kw) + + stamp = env.Command(stampnode, bin, + [ '$SOURCE $BOOSTTESTARGS', + 'touch $TARGET' ], + **kw) + + return env.Command(env.File(target), stamp, [ 'true' ]) def generate(env): env['BOOSTTESTLIB'] = 'boost_unit_test_framework' env['BOOSTTESTARGS'] = [ '--build_info=yes', '--log_level=test_suite' ] - env.__class__.BoostUnitTests = dispatcher + env['BUILDERS']['BoostUnitTests'] = BoostUnitTests def exists(env): return 1