diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-31 15:57:02 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-31 15:57:02 +0100 |
commit | 8c364952af536cbf9271e76d74501091f2d6ae45 (patch) | |
tree | 4bfb52910c78840e4bd3845e62a55fc7b142646b /mesonbuild/rewriter.py | |
parent | 56558652460104cbc74a4f1fa328d3aa34eebf0c (diff) | |
download | meson-8c364952af536cbf9271e76d74501091f2d6ae45.zip meson-8c364952af536cbf9271e76d74501091f2d6ae45.tar.gz meson-8c364952af536cbf9271e76d74501091f2d6ae45.tar.bz2 |
Added dependecy kwargs support
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r-- | mesonbuild/rewriter.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py index 4a7f595..2e8aedd 100644 --- a/mesonbuild/rewriter.py +++ b/mesonbuild/rewriter.py @@ -345,6 +345,27 @@ class Rewriter: return tgt + def find_dependency(self, dependency: str): + def check_list(name: str): + for i in self.interpreter.dependencies: + if name == i['name']: + return i + return None + + dep = check_list(dependency) + if dep is not None: + return dep + + # Check the assignments + if dependency in self.interpreter.assignments: + node = self.interpreter.assignments[dependency][0] + if isinstance(node, mparser.FunctionNode): + if node.func_name in ['dependency']: + name = self.interpreter.flatten_args(node.args)[0] + dep = check_list(name) + + return dep + @RequiredKeys(rewriter_keys['kwargs']) def process_kwargs(self, cmd): mlog.log('Processing function type', mlog.bold(cmd['function']), 'with id', mlog.cyan("'" + cmd['id'] + "'")) @@ -364,6 +385,11 @@ class Rewriter: if tmp: node = tmp['node'] arg_node = node.args + elif cmd['function'] == 'dependency': + tmp = self.find_dependency(cmd['id']) + if tmp: + node = tmp['node'] + arg_node = node.args if not node: mlog.error('Unable to find the function node') assert(isinstance(node, mparser.FunctionNode)) |