X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=SConstruct;h=1fd27f0a0a51a003000f0c1a2ce977e39a9f217e;hb=1d41d158d2b9c45b5c900320aae4dea1c9091261;hp=d9e8cc3b66dec3d7100f857b1211a059a4f6b9ea;hpb=86f66d5102f4881dda4b91893e7eaba53a98cf12;p=senf.git diff --git a/SConstruct b/SConstruct index d9e8cc3..1fd27f0 100644 --- a/SConstruct +++ b/SConstruct @@ -21,6 +21,7 @@ prepare Create all target files not part of the repository default Build all default targets (like calling scons with no arguments) examples Build all examples all_tests Build and run unit tests for all modules +test_changes Build tests only for files with local changes (queries svn or git) all_docs Build documentation for all modules all Build everything install_all Install SENF into $$PREFIX @@ -49,8 +50,9 @@ env.Append( CPPPATH = [ '$BUILDDIR', '#' ], LOCALLIBDIR = '$BUILDDIR', LIBPATH = [ '$LOCALLIBDIR' ], - LIBS = [ '$LIBSENF$LIBADDSUFFIX', 'rt', '$BOOSTREGEXLIB', - '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB', '$BOOSTFSLIB' ], + LIBS = [ '$LIBSENF$LIBADDSUFFIX', '$EXTRA_LIBS' ], + EXTRA_LIBS = [ 'rt', '$BOOSTREGEXLIB', '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB', + '$BOOSTFSLIB' ], TEST_EXTRA_LIBS = [ ], VALGRINDARGS = [ '--num-callers=50' ], @@ -100,7 +102,8 @@ env.SetDefault( LCOV = "lcov", GENHTML = "genhtml", SCONSBIN = env.File("#/tools/scons"), - SCONSARGS = [ '-Q', '-j$CONCURRENCY_LEVEL', 'debug=$debug', 'final=$final' ], + SCONSARGS = [ '-Q', '-j$CONCURRENCY_LEVEL', 'debug=$debug', 'final=$final' ] + \ + [ '%s=%s' % (k,v) for k,v in ARGUMENTS.iteritems() ], SCONS = "@$SCONSBIN $SCONSARGS", CONCURRENCY_LEVEL = env.GetOption('num_jobs') or 1, TOPDIR = env.Dir('#').abspath, @@ -115,8 +118,14 @@ senfutil.parseArguments( BoolVariable('final', 'Build final (optimized) build', False), BoolVariable('debug', 'Link in debug symbols', False), BoolVariable('syslayout', 'Install in to system layout directories (lib/, include/ etc)', False), + BoolVariable('sparse_tests', 'Link tests against object files and not the senf lib', False) ) +if 'test_changes' in COMMAND_LINE_TARGETS and not env.has_key('only_tests'): + import SparseTestHack + env['only_tests'] = " ".join(x.abspath for x in SparseTestHack.findSCMChanges(env)) + +if env.has_key('only_tests') : env['sparse_tests'] = True Export('env') # Create Doxyfile.local otherwise doxygen will barf on this non-existent file @@ -134,6 +143,9 @@ SConscriptChdir(0) SConscript("debian/SConscript") SConscriptChdir(1) if os.path.exists('SConscript.local') : SConscript('SConscript.local') +if env['sparse_tests']: + import SparseTestHack + SparseTestHack.setup(env) if env.subst('$BUILDDIR') == '#': SConscript("SConscript") else: @@ -141,6 +153,9 @@ else: SConscript("Examples/SConscript") SConscript("HowTos/SConscript") SConscript("doclib/SConscript") +if env['sparse_tests']: + verbose = 'test_changes' in COMMAND_LINE_TARGETS + SparseTestHack.build(env, verbose, verbose) ########################################################################### # Define build targets @@ -156,6 +171,7 @@ env.Install('${INCLUDEINSTALLDIR}', 'boost') env.Alias('install_all', env.FindInstalledFiles()) env.Alias('default', DEFAULT_TARGETS) env.Alias('all_tests', env.FindAllBoostUnitTests()) +env.Alias('test_changes', 'all_tests') env.Alias('all', [ 'default', 'all_tests', 'examples', 'all_docs' ]) #### prepare @@ -212,5 +228,8 @@ for target in COMMAND_LINE_TARGETS: cwd=env.GetLaunchDir() home=os.environ['HOME']+'/' if cwd.startswith(home) : cwd = cwd[len(home):] + args = [ '$SCONSARGS' ] + if env.GetLaunchDir() != os.getcwd(): + args.append('-u') env.PhonyTarget(target, [], [ "ssh $HOST scons $SCONSARGS -C $DIR $RTARGET" ], - HOST=host, RTARGET=realtarget, DIR=cwd) + HOST=host, RTARGET=realtarget, DIR=cwd, SCONSARGS=args)