# \ingroup builder
import SCons.Builder, SCons.Action, SCons.Environment, SCons.Node.FS
+try:
+ from SCons.Tool.install import installFunc, stringFunc
+except:
+ installFunc = SCons.Environment.installFunc
+ stringFunc = SCons.Environment.installString
def recursiveChildren(f):
rv = {}
return [ f for f in files
if f.get_suffix() in extensions ]
+def filterIncludesInv(files, extensions):
+ return [ f for f in files
+ if '.' + str(f).split('.',1)[-1] not in extensions ]
+
def filterDirectory(files, dir):
return [ f for f in files
if f.abspath.startswith(dir.abspath) ]
def emitter(target, source, env):
source = recursiveChildren(source)
source = filterIncludes(source, env['CPP_INCLUDE_EXTENSIONS'])
+ source = filterIncludesInv(source, env['CPP_EXCLUDE_EXTENSIONS'])
source = filterDirectory(source, env['INSTALL_BASE'])
source = excludeDirectories(source, env['INCLUDE_IGNORED_DIRECTORIES'])
self.source = source
def __call__(self, target, source, env):
- SCons.Environment.installFunc([self.target], [self.source], env)
+ installFunc([self.target], [self.source], env)
def generator(target, source, env, for_signature):
return [ SCons.Action.Action( Installer(trg, src),
- lambda a,b,c,s=SCons.Environment.installString([trg], [src], env):s )
+ lambda a,b,c,s=stringFunc([trg], [src], env):s )
for trg, src in zip(target,source) ]
InstallIncludes = SCons.Builder.Builder(emitter = emitter,