summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-04-15 18:43:38 (GMT)
committerSteven Knight <knight@baldmt.com>2002-04-15 18:43:38 (GMT)
commita8176f609ff3ecc090f51830408d3b4dc6338d7e (patch)
treebab059042f2f8cbc85dcf7a619dbebbbe23dc4fb /src/engine/SCons/Node
parent05029e336146444501a66b53e4699c09d6e08977 (diff)
downloadSCons-a8176f609ff3ecc090f51830408d3b4dc6338d7e.zip
SCons-a8176f609ff3ecc090f51830408d3b4dc6338d7e.tar.gz
SCons-a8176f609ff3ecc090f51830408d3b4dc6338d7e.tar.bz2
Big change for shared libraries and a bunch of other flexibility. (Charles Crain)
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/NodeTests.py10
-rw-r--r--src/engine/SCons/Node/__init__.py39
2 files changed, 30 insertions, 19 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 447ef93..fac20e3 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -40,12 +40,13 @@ cycle_detected = None
class Builder:
def execute(self, **kw):
- global built_it, built_target, built_source
- built_it = 1
+ global built_it, built_target, built_source, built_args
+ built_it = 1
built_target = kw['target']
built_source = kw['source']
+ built_args = kw
return 0
- def get_contents(self, env):
+ def get_contents(self, env, target, source):
return 7
class NoneBuilder(Builder):
@@ -160,11 +161,14 @@ class NodeTestCase(unittest.TestCase):
node.env_set(Environment())
node.path = "qqq"
node.sources = ["rrr", "sss"]
+ node.build_args = { "foo" : 1, "bar" : 2 }
node.build()
assert built_it
assert type(built_target) == type(MyNode()), type(built_target)
assert str(built_target) == "qqq", str(built_target)
assert built_source == ["rrr", "sss"], built_source
+ assert built_args["foo"] == 1, built_args
+ assert built_args["bar"] == 2, built_args
fff = MyNode()
ggg = MyNode()
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index c8d5b2c..db52b3e 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -62,6 +62,9 @@ class Node:
build, or use to build other Nodes.
"""
+ class Attrs:
+ pass
+
def __init__(self):
self.sources = [] # source files used to build node
self.depends = [] # explicit dependencies (from Depends)
@@ -80,6 +83,22 @@ class Node:
self.precious = None
self.found_includes = {}
self.includes = None
+ self.build_args = {}
+ self.attributes = self.Attrs() # Generic place to stick information about the Node.
+
+ def generate_build_args(self):
+ dict = copy.copy(self.env.Dictionary())
+ if hasattr(self, 'dir'):
+ auto = self.env.autogenerate(dir = self.dir)
+ else:
+ auto = self.env.autogenerate()
+ dict.update(auto)
+
+ dictArgs = { 'env' : dict,
+ 'target' : self,
+ 'source' : self.sources }
+ dictArgs.update(self.build_args)
+ return dictArgs
def build(self):
"""Actually build the node. Return the status from the build."""
@@ -93,15 +112,8 @@ class Node:
stat = self.builder.status
except AttributeError:
try:
- dict = copy.copy(self.env.Dictionary())
- if hasattr(self, 'dir'):
- auto = self.env.autogenerate(dir = self.dir)
- else:
- auto = self.env.autogenerate()
- dict.update(auto)
- stat = self.builder.execute(env = dict,
- target = self,
- source = self.sources)
+ stat = apply(self.builder.execute, (),
+ self.generate_build_args())
except:
raise BuildError(self, "Exception",
sys.exc_type,
@@ -158,13 +170,8 @@ class Node:
def __init__(self, node):
self.node = node
def get_contents(self):
- dict = self.node.env.Dictionary()
- dict.update(self.node.env.autogenerate())
- try:
- dir = self.node.getcwd()
- except AttributeError:
- dir = None
- return self.node.builder.get_contents(env = dict)
+ return apply(self.node.builder.get_contents, (),
+ self.node.generate_build_args())
return Adapter(self)
def get_implicit_deps(self, env, scanner, target):