summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Builder.py31
-rw-r--r--src/engine/SCons/Node/__init__.py4
2 files changed, 17 insertions, 18 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index d73917c..bb68c93 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -258,32 +258,27 @@ class BuilderBase:
pre = self.get_prefix(env, args)
suf = self.get_suffix(env, args)
- tlist = SCons.Node.arg2nodes(adjustixes(target,
- pre, suf),
- self.target_factory)
src_suf = self.get_src_suffix(env, args)
- slist = SCons.Node.arg2nodes(adjustixes(source,
- None,
- src_suf),
- self.source_factory)
if self.emitter:
+ # pass the targets and sources to the emitter as strings
+ # rather than nodes since str(node) doesn't work
+ # properly from any directory other than the top directory,
+ # and emitters are called "in" the SConscript directory:
+ tlist = adjustixes(target, pre, suf)
+ slist = adjustixes(source, None, src_suf)
+
emit_args = { 'target' : tlist,
'source' : slist,
'env' : env }
emit_args.update(args)
target, source = apply(self.emitter, (), emit_args)
- # Have to run it through again in case the
- # function returns non-Node targets/sources.
- tlist = SCons.Node.arg2nodes(adjustixes(target,
- pre, suf),
- self.target_factory)
- slist = SCons.Node.arg2nodes(adjustixes(source,
- None,
- src_suf),
- self.source_factory)
-
- return tlist, slist
+ tlist = SCons.Node.arg2nodes(adjustixes(target, pre, suf),
+ self.target_factory)
+ slist = SCons.Node.arg2nodes(adjustixes(source, None, src_suf),
+ self.source_factory)
+
+ return tlist, slist
def __call__(self, env, target = None, source = None, **kw):
tlist, slist = self._create_nodes(env, kw, target, source)
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 68a55f8..8e3ba7e 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -198,7 +198,11 @@ class Node:
if calc.current(self, calc.bsig(self)):
return
else:
+ # one of this node's sources has changed, so
+ # we need to recalculate the implicit deps,
+ # and the bsig:
self.implicit = []
+ self.bsig = None
for child in self.children(scan=0):
self._add_child(self.implicit,