aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/rewriter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-01-21 22:52:27 +0100
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-01-22 16:41:25 +0100
commit0ce663239371576fcf4ad751d548cf2424525053 (patch)
treef7898be6e47bf6efb5362698656355e1562c561c /mesonbuild/rewriter.py
parent86d5799bc4d945927e26fdcb6e239905e0aa8146 (diff)
downloadmeson-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.py27
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':