X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=SConstruct;h=1c63e04011ba1f63063f82e66975009ae57a1c24;hb=75e3ce2a5296d017a459c098c40c31ae799d0823;hp=ebb1fab9e88f12035f1942513658f5b71fa72e0b;hpb=2c5ee014ddfed45406e238029600346c99870229;p=senf.git diff --git a/SConstruct b/SConstruct index ebb1fab..1c63e04 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,23 +42,27 @@ 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' ], - CPPPATH = [ '#/include' ], + CPPPATH = [ '#' ], 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', - BININSTALLDIR = '$PREFIX/bin', - INCLUDEINSTALLDIR = '$PREFIX/include', + LIBINSTALLDIR = '$PREFIX', + BININSTALLDIR = '$PREFIX', + INCLUDEINSTALLDIR = '$PREFIX', OBJINSTALLDIR = '$LIBINSTALLDIR', - DOCINSTALLDIR = '$PREFIX/doc', + DOCINSTALLDIR = '$PREFIX/docs', CPP_INCLUDE_EXTENSIONS = [ '.h', '.hh', '.ih', '.mpp', '.cci', '.ct', '.cti' ], CPP_EXCLUDE_EXTENSIONS = [ '.test.hh' ], @@ -109,58 +111,42 @@ Export('env') if not os.path.exists("Doxyfile.local"): Execute(Touch("Doxyfile.local")) -# Create local_config.h -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 = [ - "debian/SConscript", - "doclib/SConscript", -] +# Load SConscripts -SConscript(initSConscripts) +SConscript("debian/SConscript") +if os.path.exists('SConscript.local') : SConscript('SConscript.local') +SConscript("senf/SConscript") +SConscript("Examples/SConscript") +SConscript("HowTos/SConscript") +SConscript("doclib/SConscript") -if os.path.exists('SConscript.local'): - SConscript('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 = env.Library(env.subst("$LIBSENF$LIBADDSUFFIX"), env['ALLOBJECTS']) +#### libsenf.a +libsenf = env.Library("$LOCALLIBDIR/${LIBSENF}${LIBADDSUFFIX}", env['ALLOBJECTS']) env.Default(libsenf) -env.Clean('all', libsenf) -env.Alias('default', libsenf) - -env.InstallSubdir(target = '$INCLUDEINSTALLDIR', source = [ 'config.hh' ]) -env.Alias('install_all', env.Install('$LIBINSTALLDIR', libsenf)) +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 +156,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"))