diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-21 22:52:27 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-22 16:41:25 +0100 |
commit | 0ce663239371576fcf4ad751d548cf2424525053 (patch) | |
tree | f7898be6e47bf6efb5362698656355e1562c561c /mesonbuild/rewriter.py | |
parent | 86d5799bc4d945927e26fdcb6e239905e0aa8146 (diff) | |
download | meson-0ce663239371576fcf4ad751d548cf2424525053.zip meson-0ce663239371576fcf4ad751d548cf2424525053.tar.gz meson-0ce663239371576fcf4ad751d548cf2424525053.tar.bz2 |
Added suport for adding sources to a target
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r-- | mesonbuild/rewriter.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py index 37099ce..9650d89 100644 --- a/mesonbuild/rewriter.py +++ b/mesonbuild/rewriter.py @@ -86,6 +86,7 @@ class Rewriter: self.sourcedir = sourcedir self.interpreter = IntrospectionInterpreter(sourcedir, '', generator) self.id_generator = AstIDGenerator() + self.modefied_nodes = [] self.functions = { 'target': self.process_target, } @@ -117,7 +118,31 @@ class Rewriter: pprint(target) if cmd['operation'] == 'src_add': - mlog.warning('TODO') + node = None + if target['sources']: + node = target['sources'][0] + else: + node = target['node'] + assert(node is not None) + + # Generate the new String nodes + to_append = [] + for i in cmd['sources']: + mlog.log(' -- Adding source', mlog.green(i), 'at', + mlog.yellow('{}:{}'.format(os.path.join(node.subdir, environment.build_filename), node.lineno))) + token = mparser.Token('string', node.subdir, 0, 0, 0, None, i) + to_append += [mparser.StringNode(token)] + + # Append to the AST at the right place + if isinstance(node, mparser.FunctionNode): + node.args.arguments += to_append + elif isinstance(node, mparser.ArrayNode): + node.args.arguments += to_append + elif isinstance(node, mparser.ArgumentNode): + node.arguments += to_append + + # Mark the node as modified + self.modefied_nodes += [node] elif cmd['operation'] == 'src_rm': mlog.warning('TODO') elif cmd['operation'] == 'test': |