summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2008-10-01 02:47:36 (GMT)
committerGary Oberbrunner <garyo@oberbrunner.com>2008-10-01 02:47:36 (GMT)
commitded68b2d8674e37df7b7f0c5a9b5bf49780bcd02 (patch)
treea552c544668ca726e3bb1508645fafd711d62d0a /src/engine/SCons
parentc0e7371604c74acdb3e6e941f3356328d240ca3d (diff)
downloadSCons-ded68b2d8674e37df7b7f0c5a9b5bf49780bcd02.zip
SCons-ded68b2d8674e37df7b7f0c5a9b5bf49780bcd02.tar.gz
SCons-ded68b2d8674e37df7b7f0c5a9b5bf49780bcd02.tar.bz2
Add ability to use "$SOURCE" when specifying a target to a builder; fixes #2219.
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Builder.py2
-rw-r--r--src/engine/SCons/Subst.py13
2 files changed, 12 insertions, 3 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 977bdea..05a3ed1 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -505,7 +505,7 @@ class BuilderBase:
tlist = [ t_from_s(pre, suf, splitext) ]
else:
target = self._adjustixes(target, pre, suf, self.ensure_suffix)
- tlist = env.arg2nodes(target, target_factory)
+ tlist = env.arg2nodes(target, target_factory, target=target, source=source)
if self.emitter:
# The emitter is going to do str(node), but because we're
diff --git a/src/engine/SCons/Subst.py b/src/engine/SCons/Subst.py
index 8646f62..752bbff 100644
--- a/src/engine/SCons/Subst.py
+++ b/src/engine/SCons/Subst.py
@@ -270,7 +270,13 @@ def subst_dict(target, source):
dict = {}
if target:
- tnl = NLWrapper(target, lambda x: x.get_subst_proxy())
+ def get_tgt_subst_proxy(thing):
+ try:
+ subst_proxy = thing.get_subst_proxy()
+ except AttributeError:
+ subst_proxy = thing # probably a string, just return it
+ return subst_proxy
+ tnl = NLWrapper(target, get_tgt_subst_proxy)
dict['TARGETS'] = Targets_or_Sources(tnl)
dict['TARGET'] = Target_or_Source(tnl)
else:
@@ -285,7 +291,10 @@ def subst_dict(target, source):
pass
else:
node = rfile()
- return node.get_subst_proxy()
+ try:
+ return node.get_subst_proxy()
+ except AttributeError:
+ return node # probably a String, just return it
snl = NLWrapper(source, get_src_subst_proxy)
dict['SOURCES'] = Targets_or_Sources(snl)
dict['SOURCE'] = Target_or_Source(snl)