X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=SConstruct;h=c0fe56581208c0f097f1bf3c2eac08681a6ee00c;hb=8c6873a925c79e6bb640f82895b31f4cbd84ef30;hp=ad342c9b0d0ca3b76552052103322953389d7153;hpb=a5d6a20ef608461a1932b4983139e8a3c1facada;p=senf.git diff --git a/SConstruct b/SConstruct index ad342c9..c0fe565 100644 --- a/SConstruct +++ b/SConstruct @@ -25,20 +25,20 @@ env.Tool('InstallDir') env.Help(""" Additional top-level build targets: -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 -all_docs Build documentation for all modules -all Build everything -install_all Install SENF into $$PREFIX -deb Build debian source and binary package -debsrc Build debian source package -debbin Build debian binary package -linklint Check links of doxygen documentation with 'linklint' -fixlinks Fix broken links in doxygen documentation -valgrind Run all tests under valgrind/memcheck -lcov Generate test coverage output in doc/lcov and lcov.info +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 +all_docs Build documentation for all modules +all Build everything +install_all Install SENF into $$PREFIX +deb Build debian source and binary package +debsrc Build debian source package +debbin Build debian binary package +linklint Check links of doxygen documentation with 'linklint' +fixlinks Fix broken links in doxygen documentation +all_valgrinds Run all tests under valgrind/memcheck +lcov Generate test coverage output in doc/lcov and lcov.info """) env.Append( @@ -52,6 +52,7 @@ env.Append( LIBS = [ '$LIBSENF$LIBADDSUFFIX', 'rt', '$BOOSTREGEXLIB', '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB', '$BOOSTFSLIB' ], TEST_EXTRA_LIBS = [ ], + VALGRINDARGS = [ '--num-callers=50' ], PREFIX = '#/dist', LIBINSTALLDIR = '$PREFIX${syslayout and "/lib" or ""}', @@ -100,6 +101,7 @@ env.SetDefault( GENHTML = "genhtml", SCONS = "./tools/scons -j$CONCURRENCY_LEVEL", CONCURRENCY_LEVEL = env.GetOption('num_jobs') or 1, + TOPDIR = env.Dir('#').abspath, ) # Set variables from command line @@ -166,24 +168,25 @@ env.Alias('all', [ 'default', 'all_tests', 'examples', 'all_docs' ]) env.PhonyTarget('prepare', [], []) #### valgrind -env.PhonyTarget('valgrind', [ 'all_tests' ], [ """ - find -name .test.bin - | while read test; do - echo; - echo "Running $$test"; - echo; - valgrind --tool=memcheck --error-exitcode=99 --suppressions=tools/valgrind.sup - $$test $BOOSTTESTARGS; - [ $$? -ne 99 ] || exit 1; - done -""".replace("\n"," ") ]) +for test in env.FindAllBoostUnitTests(): + stamp = env.Command(test[0].dir.File('.test-valgrind.stamp'), + [ test[0].dir.File('.test.bin'), 'tools/valgrind.sup' ], + [ """valgrind --tool=memcheck + --error-exitcode=99 + --suppressions=${SOURCES[1]} + $VALGRINDARGS + ${SOURCES[0]} $BOOSTTESTARGS; + [ $$? -ne 99 ] || exit 1""".replace("\n"," "), + Touch("$TARGET") ]) + alias = env.Command(test[0].dir.File('valgrind'), stamp, [ env.NopAction() ]) + env.Alias('all_valgrinds', alias) ### lcov env.PhonyTarget('lcov', [], [ '$SCONS debug=1 CCFLAGS+="-fprofile-arcs -ftest-coverage" LIBS+="gcov" all_tests', - '$LCOV --directory . --capture --output-file /tmp/senf_lcov.info --base-directory .', - '$LCOV --output-file ${TARGETS[1]} --remove /tmp/senf_lcov.info \\*/include/\\*', - '$GENHTML --output-directory ${TARGETS[0]} --title all_tests ${TARGETS[1]}', + '$LCOV --directory $TOPDIR/senf --capture --output-file /tmp/senf_lcov.info --base-directory $TOPDIR', + '$LCOV --output-file lcov.info --remove /tmp/senf_lcov.info "*/include/*" "*/boost/*" "*.test.*" ', + '$GENHTML --output-directory doc/lcov --title all_tests lcov.info', 'rm /tmp/senf_lcov.info' ]) #### clean