# -*- 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
###########################################################################
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:
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',
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")
+SConscript("doclib/SConscript")
+if os.path.exists('SConscript.local') : SConscript('SConscript.local')
-if os.path.exists('SConscript.local'):
- SConscript('SConscript.local')
+SConscript("senf/SConscript")
-SConscript(list(set(glob.glob("*/SConscript")) - set(initSConscripts)))
+SConscript("Examples/SConscript")
+SConscript("HowTos/SConscript")
-# 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;
$$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"))