X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senfscons%2FSENFSCons.py;h=61f07eaa271e7d0dfcb1abb2ebb8ac0925d253a9;hb=63b650afb727cce067817ce9451eecb932446bf3;hp=aa5efa2e93b36cebf592429b7047e3554db421ca;hpb=41fe0d795abca302db24e7a955df6ef15ffed722;p=senf.git diff --git a/senfscons/SENFSCons.py b/senfscons/SENFSCons.py index aa5efa2..61f07ea 100644 --- a/senfscons/SENFSCons.py +++ b/senfscons/SENFSCons.py @@ -78,6 +78,8 @@ def InitOpts(): opts.Add('DOCINSTALLDIR', 'Documentation install dir', '$PREFIX/doc') opts.Add('CPP_INCLUDE_EXTENSIONS', 'File extensions to include in source install', [ '.h', '.hh', '.ih', '.mpp', '.cci', '.ct', '.cti', '.mpp' ]) + opts.Add('CPP_EXCLUDE_EXTENSIONS', 'File extensions to exclude from source install', + [ '.test.hh' ]) # A finalizer is any callable object. All finalizers will be called # in MakeEnvironment. We use them so every finalizer has knowledge of @@ -148,9 +150,9 @@ def FinalizeBoost(env): 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['BOOSTFSLIB'] = 'libboost_filesystem' + 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' ]) @@ -316,7 +318,7 @@ def LibPath(lib): return '$LOCALLIBDIR/lib%s.a' % lib # provide both \a sources and \a testSources. # # \ingroup target -def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = []): +def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = [], no_includes = False): if type(sources) == type(()): testSources = sources[1] sources = sources[0] @@ -360,6 +362,15 @@ def InstallIncludeFiles(env, files): src = env.File(f) env.Alias('install_all', env.Install(target.Dir(src.dir.get_path(base)), src)) +def InstallSourceIncludes(env, sources): + target = env.Dir(env['INCLUDEINSTALLDIR']).Dir( + env.Dir('.').get_path(env.Dir(env['INSTALL_BASE']))) + install = env.InstallIncludes( target = target, + source = [ type(x) is str and env.File(x) or x + for x in sources ], + INSTALL_BASE = env.Dir('.') ) + env.Alias( 'install_all', install ) + def InstallWithSources(env, targets, dir, sources, testSources = [], no_includes = False): if type(sources) is type(()): sources, testSources = sources @@ -369,17 +380,14 @@ def InstallWithSources(env, targets, dir, sources, testSources = [], no_includes testSources = [ testSources ] installs = [ env.Install(dir, targets) ] + env.Alias( 'install_all', installs[:] ) if not no_includes: - target = env.Dir(env['INCLUDEINSTALLDIR']).Dir( - env.Dir('.').get_path(env.Dir(env['INSTALL_BASE']))) - source = targets + sources = targets if testSources: - source.append( env.File('.test.bin') ) - installs.append(env.InstallIncludes( - target = target, - source = targets, - INSTALL_BASE = env.Dir('.') )) + sources.append( env.File('.test.bin') ) + installs.append( + InstallSourceIncludes(env, sources)) return installs @@ -592,8 +600,7 @@ def Lib(env, library, sources, testSources = None, LIBS = [], OBJECTS = [], no_i env.Default(lib) env.Append(ALLLIBS = library) env.Alias('default', lib) - install = InstallWithSources(env, lib, '$LIBINSTALLDIR', sources, testSources, no_includes) - env.Alias('install_all', install) + InstallWithSources(env, lib, '$LIBINSTALLDIR', sources, testSources, no_includes) return lib ## \brief Build Object from multiple sources @@ -604,8 +611,7 @@ def Object(env, target, sources, testSources = None, LIBS = [], OBJECTS = [], no ob = env.Command(target+".o", objects, "ld -r -o $TARGET $SOURCES") env.Default(ob) env.Alias('default', ob) - install = InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes) - env.Alias('install_all', install) + InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes) return ob ## \brief Build executable @@ -628,9 +634,7 @@ def Binary(env, binary, sources, testSources = None, LIBS = [], OBJECTS = [], no env.Default(program) env.Depends(program, [ env.File(LibPath(x)) for x in LIBS ]) env.Alias('default', program) - install = InstallWithSources(env, program, '$BININSTALLDIR', sources, testSources, - no_includes) - env.Alias('install_all', install) + InstallWithSources(env, program, '$BININSTALLDIR', sources, testSources, no_includes) return program def AllIncludesHH(env, headers):