diff options
| author | Steven Knight <knight@baldmt.com> | 2002-04-15 18:43:38 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2002-04-15 18:43:38 (GMT) |
| commit | a8176f609ff3ecc090f51830408d3b4dc6338d7e (patch) | |
| tree | bab059042f2f8cbc85dcf7a619dbebbbe23dc4fb /src/engine/SCons/Node | |
| parent | 05029e336146444501a66b53e4699c09d6e08977 (diff) | |
| download | SCons-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.py | 10 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 39 |
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): |
