"Doxygen",
"Dia2Png",
"CopyToDir",
+ "InstallIncludes",
+ "ProgramNoScan",
]
opts = None
# libraries are provided by the distribution, you probably don't need
# to specify any parameters. If your configuration is more complex,
# refer to the <a
-# href="http://www.boost.org/tools/build/v1/build_system.htm">Boost.Build</a>
+# href="http://www.boost.org/tools/build/v2/index.html">Boost.Build</a>
# documentation for a definition of the terms used above (toolset,
# variant, runtime ...).
#
if runtime: runtime = "-" + runtime
env['BOOST_VARIANT'] = "-" + env['BOOST_TOOLSET'] + runtime
- env['BOOSTTESTLIB'] = 'libboost_unit_test_framework' + env['BOOST_VARIANT']
- env['BOOSTREGEXLIB'] = 'libboost_regex' + env['BOOST_VARIANT']
+ env['BOOSTTESTLIB'] = 'boost_unit_test_framework' + env['BOOST_VARIANT']
+ env['BOOSTREGEXLIB'] = 'boost_regex' + env['BOOST_VARIANT']
+ env['BOOSTFSLIB'] = 'boost_filesystem' + env['BOOST_VARIANT']
env.Append(LIBPATH = [ '$BOOST_LIBDIR' ],
CPPPATH = [ '$BOOST_INCLUDES' ])
env[opt.key] = SCons.Script.SConscript.Arguments.get(opt.key)
if SCons.Script.SConscript.Arguments.get('final'):
env['final'] = 1
+ env.Help("\nSupported build variables (either in SConfig or on the command line:\n")
env.Help(opts.GenerateHelpText(env))
# We want to pass the SSH_AUTH_SOCK system env-var so we can ssh
CPPDEFINES = [ 'NDEBUG' ])
else:
env.Append(CXXFLAGS = [ '-O0', '-g', '-fno-inline' ],
+ # The boost-regex library is not compiled with _GLIBCXX_DEBUG so this fails.
+ # CPPDEFINES = [ '_GLIBCXX_DEBUG' ],
LINKFLAGS = [ '-g' ])
env.Append(CPPDEFINES = [ '$EXTRA_DEFINES' ],
- LIBS = [ '$EXTRA_LIBS' ])
+ LIBS = [ '$EXTRA_LIBS' ],
+ ALLLIBS = [])
return env
#
# \ingroup target
def GlobalTargets(env):
- env.Depends(env.Alias('all'),'#')
+ env.Alias('all', [ 'default', 'all_tests', 'all_docs' ])
## \brief Return path of a built library within $LOCALLIBDIR
# \internal
objects = None
if sources:
- objects = env.Object([
- source
- for source in sources
- if not str(source).endswith('.o') ]) + [
- source
- for source in sources
- if str(source).endswith('.o') ]
-
+ obsources = [ source
+ for source in sources
+ if not str(source).endswith('.o') ]
+ objects = [ source
+ for source in sources
+ if str(source).endswith('.o') ]
+ if obsources:
+ objects += env.Object(obsources)
if testSources:
test = env.BoostUnitTests(
return objects
-def InstallWithSources(env, targets, dir, sources, testSources = []):
+def InstallIncludeFiles(env, files):
+ # Hrmpf ... why do I need this in 0.97??
+ if env.GetOption('clean'):
+ return
+ target = env.Dir(env['INCLUDEINSTALLDIR'])
+ base = env.Dir(env['INSTALL_BASE'])
+ for f in files:
+ src = env.File(f)
+ env.Alias('install_all', env.Install(target.Dir(src.dir.get_path(base)), src))
+
+def InstallWithSources(env, targets, dir, sources, testSources = [], no_includes = False):
if type(sources) is type(()):
- sources = sources[0] + sources[1]
- if testSources:
- sources += testSources
+ sources, testSources = sources
if type(sources) is not type([]):
sources = [ sources ]
-
- installs = []
- installs.append( env.Install(dir, targets) )
-
- for source in sources:
- l = len(env.Dir('#').abspath)
- source = str(source)
- while '.' in source:
- source = os.path.splitext(source)[0]
- for ext in env['CPP_INCLUDE_EXTENSIONS']:
- f = env.File(source+ext)
- if f.exists():
- installs.append(env.Install(
- '$INCLUDEINSTALLDIR' + f.dir.abspath[l:], f))
+ if type(testSources) is not type([]):
+ testSources = [ testSources ]
+
+ installs = [ env.Install(dir, targets) ]
+
+ if not no_includes:
+ target = env.Dir(env['INCLUDEINSTALLDIR']).Dir(
+ env.Dir('.').get_path(env.Dir(env['INSTALL_BASE'])))
+ source = targets
+ if testSources:
+ source.append( env.File('.test.bin') )
+ installs.append(env.InstallIncludes(
+ target = target,
+ source = targets,
+ INSTALL_BASE = env.Dir('.') ))
return installs
l = len(env.Dir('#').abspath)
if htmlnode:
env.Alias('install_all',
- env.Install( '$DOCINSTALLDIR' + htmlnode.dir.dir.abspath[l:],
- htmlnode.dir ))
+ env.Command('$DOCINSTALLDIR' + htmlnode.dir.abspath[l:], htmlnode.dir,
+ [ SCons.Defaults.Copy('$TARGET','$SOURCE') ]))
if tagnode:
env.Alias('install_all',
env.Install( '$DOCINSTALLDIR' + tagnode.dir.abspath[l:],
# The library is added to the list of default targets.
#
#\ingroup target
-def Lib(env, library, sources, testSources = None, LIBS = [], OBJECTS = []):
+def Lib(env, library, sources, testSources = None, LIBS = [], OBJECTS = [], no_includes = False):
objects = Objects(env,sources,testSources,LIBS=LIBS,OBJECTS=OBJECTS)
lib = None
if objects:
lib = env.Library(env.File(LibPath(library)),objects)
env.Default(lib)
env.Append(ALLLIBS = library)
- install = InstallWithSources(env, lib, '$LIBINSTALLDIR', sources)
+ env.Alias('default', lib)
+ install = InstallWithSources(env, lib, '$LIBINSTALLDIR', sources, testSources, no_includes)
env.Alias('install_all', install)
return lib
## \brief Build Object from multiple sources
-def Object(env, target, sources, testSources = None, LIBS = [], OBJECTS = []):
+def Object(env, target, sources, testSources = None, LIBS = [], OBJECTS = [], no_includes = False):
objects = Objects(env,sources,testSources,LIBS=LIBS,OBJECTS=OBJECTS)
ob = None
if objects:
ob = env.Command(target+".o", objects, "ld -r -o $TARGET $SOURCES")
env.Default(ob)
- install = InstallWithSources(env, ob, '$OBJINSTALLDIR', sources)
+ env.Alias('default', ob)
+ install = InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes)
env.Alias('install_all', install)
return ob
# construction environment parameters or the framework helpers.
#
# \ingroup target
-def Binary(env, binary, sources, testSources = None, LIBS = [], OBJECTS = []):
+def Binary(env, binary, sources, testSources = None, LIBS = [], OBJECTS = [], no_includes = False):
objects = Objects(env,sources,testSources,LIBS=LIBS,OBJECTS=OBJECTS)
program = None
if objects:
progEnv = env.Copy()
progEnv.Prepend(LIBS = LIBS)
- program = progEnv.Program(target=binary,source=objects+OBJECTS)
+ program = progEnv.ProgramNoScan(target=binary,source=objects+OBJECTS)
env.Default(program)
env.Depends(program, [ env.File(LibPath(x)) for x in LIBS ])
- install = InstallWithSources(env, program, '$BININSTALLDIR',
- sources, testSources)
+ env.Alias('default', program)
+ install = InstallWithSources(env, program, '$BININSTALLDIR', sources, testSources,
+ no_includes)
env.Alias('install_all', install)
return program
+
+def AllIncludesHH(env, headers):
+ headers.sort()
+ target = env.File("all_includes.hh")
+ file(target.abspath,"w").write("".join([ '#include "%s"\n' % f
+ for f in headers ]))
+ env.Clean('all', target)