summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Tool/__init__.py')
-rw-r--r--src/engine/SCons/Tool/__init__.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index afad44c..2adaacb 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -45,24 +45,35 @@ import SCons.Errors
import SCons.Defaults
class ToolSpec:
- def __init__(self, name):
+ def __init__(self, name, **kw):
self.name = name
+ # remember these so we can merge them into the call
+ self.init_kw = kw
def __call__(self, env, *args, **kw):
+ if self.init_kw is not None:
+ # Merge call kws into init kws;
+ # but don't bash self.init_kw.
+ if kw is not None:
+ call_kw = kw
+ kw = self.init_kw.copy()
+ kw.update(call_kw)
+ else:
+ kw = self.init_kw
env.Append(TOOLS = [ self.name ])
apply(self.generate, ( env, ) + args, kw)
def __str__(self):
return self.name
-def Tool(name, toolpath=[]):
+def Tool(name, toolpath=[], **kw):
"Select a canned Tool specification, optionally searching in toolpath."
try:
file, path, desc = imp.find_module(name, toolpath)
try:
module = imp.load_module(name, file, path, desc)
- spec = ToolSpec(name)
+ spec = apply(ToolSpec, (name,), kw)
spec.generate = module.generate
spec.exists = module.exists
return spec
@@ -83,7 +94,7 @@ def Tool(name, toolpath=[]):
raise SCons.Errors.UserError, "No tool named '%s': %s" % (name, e)
if file:
file.close()
- spec = ToolSpec(name)
+ spec = apply(ToolSpec, (name,), kw)
spec.generate = sys.modules[full_name].generate
spec.exists = sys.modules[full_name].exists
return spec