X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=SConstruct;h=b0f7742e87d138f3f901eb2e56530f70bdcb5e16;hb=164fe477094d42463722584e527a02379ab5d985;hp=ebb1fab9e88f12035f1942513658f5b71fa72e0b;hpb=2c5ee014ddfed45406e238029600346c99870229;p=senf.git diff --git a/SConstruct b/SConstruct index ebb1fab..b0f7742 100644 --- a/SConstruct +++ b/SConstruct @@ -1,8 +1,6 @@ # -*- python -*- -import sys, glob, os.path, datetime, pwd, time, fnmatch, string -sys.path.append(Dir('#/senfscons').abspath) -sys.path.append(Dir('#/doclib').abspath) +import sys, glob, os.path, fnmatch import SENFSCons, senfutil ########################################################################### @@ -11,14 +9,14 @@ import SENFSCons, senfutil env = Environment() # Load all the local SCons tools -env.Tool('Doxygen', [ 'senfscons' ]) -env.Tool('Dia2Png', [ 'senfscons' ]) -env.Tool('PkgDraw', [ 'senfscons' ]) -env.Tool('CopyToDir', [ 'senfscons' ]) -env.Tool('CompileCheck', [ 'senfscons' ]) -env.Tool('Boost', [ 'senfscons' ]) -env.Tool('BoostUnitTest', [ 'senfscons' ]) -env.Tool('InstallSubdir', [ 'senfscons' ]) +env.Tool('Doxygen') +env.Tool('Dia2Png') +env.Tool('PkgDraw') +env.Tool('InstallSubdir') +env.Tool('CopyToDir') +env.Tool('Boost') +env.Tool('CombinedObject') +env.Tool('PhonyTarget') env.Help(""" Additional top-level build targets: @@ -44,6 +42,10 @@ class BuildTypeOptions: type = env['final'] and "final" or env['debug'] and "debug" or "normal" return env[self._var + "_" + type] +env.Replace( + PKGDRAW = 'doclib/pkgdraw', +) + env.Append( ENV = { 'PATH' : os.environ.get('PATH') }, CLEAN_PATTERNS = [ '*~', '#*#', '*.pyc', 'semantic.cache', '.sconsign*', '.sconsign' ], @@ -51,9 +53,9 @@ env.Append( CPPPATH = [ '#/include' ], LOCALLIBDIR = '#', LIBPATH = [ '$LOCALLIBDIR' ], - LIBS = [ 'rt', '$BOOSTREGEXLIB', '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB', - '$BOOSTFSLIB' ], - TEST_EXTRA_LIBS = [ '$LIBSENF$LIBADDSUFFIX' ], + LIBS = [ '$LIBSENF$LIBADDSUFFIX', 'rt', '$BOOSTREGEXLIB', + '$BOOSTIOSTREAMSLIB', '$BOOSTSIGNALSLIB', '$BOOSTFSLIB' ], + TEST_EXTRA_LIBS = [ ], PREFIX = '/usr/local', LIBINSTALLDIR = '$PREFIX/lib', @@ -113,17 +115,9 @@ if not os.path.exists("Doxyfile.local"): if not env.GetOption('clean') and not os.path.exists("local_config.hh"): Execute(Touch("local_config.hh")) -########################################################################### -# Define build targets - -# Before defining any targets, check wether this is the first build in -# pristine directory tree. If so, call 'scons prepare' so the dependencies -# created later are correct (yes, this is a hack :-( ) - if not env.GetOption('clean') and not os.path.exists(".prepare-stamp") \ and not os.environ.get("SCONS") and COMMAND_LINE_TARGETS != [ 'prepare' ]: env.Execute([ "scons prepare" ]) -env.Clean('all', '.prepare-stamp') # Load SConscripts. Need to load some first (they change the global environment) initSConscripts = [ @@ -138,29 +132,30 @@ if os.path.exists('SConscript.local'): SConscript(list(set(glob.glob("*/SConscript")) - set(initSConscripts))) -# Define the main targets -env.Alias('all', [ 'default', 'all_tests', 'all_docs' ]) +########################################################################### +# Define build targets +#### doc env.Depends(SENFSCons.Doxygen(env), env.Value(env['ENV']['REVISION'])) +#### libsenf.a libsenf = env.Library(env.subst("$LIBSENF$LIBADDSUFFIX"), env['ALLOBJECTS']) env.Default(libsenf) -env.Clean('all', libsenf) -env.Alias('default', libsenf) env.InstallSubdir(target = '$INCLUDEINSTALLDIR', source = [ 'config.hh' ]) +env.Install('$LIBINSTALLDIR', libsenf) -env.Alias('install_all', env.Install('$LIBINSTALLDIR', libsenf)) - -if env.GetOption('clean'): - env.Clean('all', [ os.path.join(path,f) - for path, subdirs, files in os.walk('.') - for pattern in env['CLEAN_PATTERNS'] - for f in fnmatch.filter(files,pattern) ]) +#### install_all, default, all_tests, all +env.Alias('install_all', env.FindInstalledFiles()) +env.Alias('default', DEFAULT_TARGETS) +env.Alias('all_tests', env.FindAllBoostUnitTests()) +env.Alias('all', [ 'default', 'all_tests', 'all_docs' ]) -SENFSCons.PhonyTarget(env, 'prepare', [ 'true' ]) +#### prepare +env.PhonyTarget('prepare', [], []) -SENFSCons.PhonyTarget(env, 'valgrind', [ """ +#### valgrind +env.PhonyTarget('valgrind', [ 'all_tests' ], [ """ find -name .test.bin | while read test; do echo; @@ -170,7 +165,18 @@ SENFSCons.PhonyTarget(env, 'valgrind', [ """ $$test $BOOSTTESTARGS; [ $$? -ne 99 ] || exit 1; done -""".replace("\n"," ") ], [ 'all_tests' ]) +""".replace("\n"," ") ]) + +#### clean +env.Clean('all', '.prepare-stamp') +env.Clean('all', libsenf) +env.Clean('all', env.Dir('linklint')) # env.Dir to disambiguate from linklint PhonyTarget + +if env.GetOption('clean'): + env.Clean('all', [ os.path.join(path,f) + for path, subdirs, files in os.walk('.') + for pattern in env['CLEAN_PATTERNS'] + for f in fnmatch.filter(files,pattern) ]) if not env.GetOption('clean') and not os.path.exists(".prepare-stamp"): Execute(Touch(".prepare-stamp"))