aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/rewriter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-01-30 16:16:08 +0100
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-01-31 15:43:04 +0100
commit8224ecfbe6e1811680113740341a277407904eb9 (patch)
treeba7bb8e00f088cf7b60970485d88d2c7bb895749 /mesonbuild/rewriter.py
parent4bfe0a25681f1abb8710aba1a89220dc328ee589 (diff)
downloadmeson-8224ecfbe6e1811680113740341a277407904eb9.zip
meson-8224ecfbe6e1811680113740341a277407904eb9.tar.gz
meson-8224ecfbe6e1811680113740341a277407904eb9.tar.bz2
Some fixes and assignment based target find
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r--mesonbuild/rewriter.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py
index 277835c..3426896 100644
--- a/mesonbuild/rewriter.py
+++ b/mesonbuild/rewriter.py
@@ -99,10 +99,26 @@ class Rewriter:
self.interpreter.ast.accept(self.id_generator)
def find_target(self, target: str):
- for i in self.interpreter.targets:
- if target == i['name'] or target == i['id']:
- return i
- return None
+ def check_list(name: str):
+ for i in self.interpreter.targets:
+ if name == i['name'] or name == i['id']:
+ return i
+ return None
+
+ tgt = check_list(target)
+ if tgt is not None:
+ return tgt
+
+ # Check the assignments
+ if target in self.interpreter.assignments:
+ node = self.interpreter.assignments[target][0]
+ print(node)
+ if isinstance(node, mparser.FunctionNode):
+ if node.func_name in ['executable', 'jar', 'library', 'shared_library', 'shared_module', 'static_library', 'both_libraries']:
+ name = self.interpreter.flatten_args(node.args)[0]
+ tgt = check_list(name)
+
+ return tgt
@RequiredKeys(rewriter_keys['target'])
def process_target(self, cmd):