diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-01-08 22:47:57 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-01-09 21:11:48 +0200 |
commit | fbabe8ad85725762e46b7c4c2f2c680c3351ec80 (patch) | |
tree | d8293e07d3e66096e9789e41cb04364588f2d841 /mesonbuild/interpreter.py | |
parent | 24221d71ccd341759b008cf1918826910c40247c (diff) | |
download | meson-fbabe8ad85725762e46b7c4c2f2c680c3351ec80.zip meson-fbabe8ad85725762e46b7c4c2f2c680c3351ec80.tar.gz meson-fbabe8ad85725762e46b7c4c2f2c680c3351ec80.tar.bz2 |
There are two different kinds of extensions: modules that create new
objects directly and snippets that just call into interpreter methods.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index bfc1453..29a5772 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -359,11 +359,11 @@ class BuildMachine(InterpreterObject): environment.detect_cpu_family(self.compilers), environment.detect_cpu(self.compilers), sys.byteorder) - self.methods.update({'system' : self.system_method, - 'cpu_family' : self.cpu_family_method, - 'cpu' : self.cpu_method, - 'endian' : self.endian_method, - }) + self.methods.update({'system': self.system_method, + 'cpu_family': self.cpu_family_method, + 'cpu': self.cpu_method, + 'endian': self.endian_method, + }) def cpu_family_method(self, args, kwargs): return self.held_object.cpu_family @@ -392,11 +392,11 @@ class CrossMachineInfo(InterpreterObject): cross_info['cpu_family'], cross_info['cpu'], cross_info['endian']) - self.methods.update({'system' : self.system_method, - 'cpu' : self.cpu_method, - 'cpu_family' : self.cpu_family_method, - 'endian' : self.endian_method, - }) + self.methods.update({'system': self.system_method, + 'cpu': self.cpu_method, + 'cpu_family': self.cpu_family_method, + 'endian': self.endian_method, + }) def cpu_family_method(self, args, kwargs): return self.held_object.cpu_family @@ -1011,10 +1011,12 @@ class ModuleHolder(InterpreterObject): state.build_machine = self.interpreter.builtin['build_machine'].held_object state.host_machine = self.interpreter.builtin['host_machine'].held_object state.target_machine = self.interpreter.builtin['target_machine'].held_object - state.interpreter = self.interpreter - value = fn(state, args, kwargs) - if num_targets != len(self.interpreter.build.targets): - raise InterpreterException('Extension module altered internal state illegally.') + if self.held_object.is_snippet(method_name): + value = fn(self.interpreter, state, args, kwargs) + else: + value = fn(state, args, kwargs) + if num_targets != len(self.interpreter.build.targets): + raise InterpreterException('Extension module altered internal state illegally.') return self.interpreter.module_method_callback(value) class MesonMain(InterpreterObject): |