aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2017-03-12 13:31:03 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2017-04-04 22:30:13 +0530
commitde47541e6cee66e17b44981b9264f0ea75181b06 (patch)
tree08ebc1e51b7c7009097b04555656428d452bc9ff /mesonbuild/interpreter.py
parentd0d7cbd88b71379704cf1e456da749aacdb6687d (diff)
downloadmeson-de47541e6cee66e17b44981b9264f0ea75181b06.zip
meson-de47541e6cee66e17b44981b9264f0ea75181b06.tar.gz
meson-de47541e6cee66e17b44981b9264f0ea75181b06.tar.bz2
New compiler function: cc.get_define()
Runs the pre-processor and fetches the value of the define. Can find any arbitrary value and returns it as a string.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0c6d980..959ce6a 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -634,6 +634,7 @@ class CompilerHolder(InterpreterObject):
'get_id': self.get_id_method,
'compute_int': self.compute_int_method,
'sizeof': self.sizeof_method,
+ 'get_define': self.get_define_method,
'has_header': self.has_header_method,
'has_header_symbol': self.has_header_symbol_method,
'run': self.run_method,
@@ -865,6 +866,20 @@ class CompilerHolder(InterpreterObject):
mlog.log('Checking for size of "%s": %d' % (element, esize))
return esize
+ def get_define_method(self, args, kwargs):
+ if len(args) != 1:
+ raise InterpreterException('get_define() takes exactly one argument.')
+ check_stringlist(args)
+ element = args[0]
+ prefix = kwargs.get('prefix', '')
+ if not isinstance(prefix, str):
+ raise InterpreterException('Prefix argument of get_define() must be a string.')
+ extra_args = self.determine_args(kwargs)
+ deps = self.determine_dependencies(kwargs)
+ value = self.compiler.get_define(element, prefix, self.environment, extra_args, deps)
+ mlog.log('Checking for value of define "%s": %s' % (element, value))
+ return value
+
def compiles_method(self, args, kwargs):
if len(args) != 1:
raise InterpreterException('compiles method takes exactly one argument.')