aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-10-22 22:33:58 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-10-25 23:55:16 +0200
commit062512a0f1b391cb5b2aa9b652b2aad28988ca69 (patch)
tree587755ada817ae47712bac1deb0f7e9531454f11 /interpreter.py
parent4286bdb86f150395d9209c3b9ee077cbc10cea33 (diff)
downloadmeson-062512a0f1b391cb5b2aa9b652b2aad28988ca69.zip
meson-062512a0f1b391cb5b2aa9b652b2aad28988ca69.tar.gz
meson-062512a0f1b391cb5b2aa9b652b2aad28988ca69.tar.bz2
Use project default settings in compile tests unless told not to. Closes #296.
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/interpreter.py b/interpreter.py
index 402f24e..55168b8 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -583,6 +583,18 @@ class CompilerHolder(InterpreterObject):
def cmd_array_method(self, args, kwargs):
return self.compiler.exelist
+ def determine_args(self, kwargs):
+ nobuiltins = kwargs.get('no_builtin_args', False)
+ if not isinstance(nobuiltins, bool):
+ raise InterpreterException('Type of no_builtin_args not a boolean.')
+ args = []
+ if not nobuiltins:
+ opts = self.environment.coredata.compiler_options
+ args += self.compiler.get_option_compile_args(opts)
+ args += self.compiler.get_option_link_args(opts)
+ args += mesonlib.stringlistify(kwargs.get('args', []))
+ return args
+
def alignment_method(self, args, kwargs):
if len(args) != 1:
raise InterpreterException('Alignment method takes exactly one positional argument.')
@@ -601,7 +613,7 @@ class CompilerHolder(InterpreterObject):
testname = kwargs.get('name', '')
if not isinstance(testname, str):
raise InterpreterException('Testname argument must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
result = self.compiler.run(code, extra_args)
if len(testname) > 0:
if not result.compiled:
@@ -625,7 +637,7 @@ class CompilerHolder(InterpreterObject):
prefix = kwargs.get('prefix', '')
if not isinstance(prefix, str):
raise InterpreterException('Prefix argument of has_function must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
had = self.compiler.has_member(typename, membername, prefix, extra_args)
if had:
hadtxt = mlog.green('YES')
@@ -643,7 +655,7 @@ class CompilerHolder(InterpreterObject):
prefix = kwargs.get('prefix', '')
if not isinstance(prefix, str):
raise InterpreterException('Prefix argument of has_function must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
had = self.compiler.has_function(funcname, prefix, self.environment, extra_args)
if had:
hadtxt = mlog.green('YES')
@@ -660,7 +672,7 @@ class CompilerHolder(InterpreterObject):
prefix = kwargs.get('prefix', '')
if not isinstance(prefix, str):
raise InterpreterException('Prefix argument of has_type must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
had = self.compiler.has_type(typename, prefix, extra_args)
if had:
hadtxt = mlog.green('YES')
@@ -677,7 +689,7 @@ class CompilerHolder(InterpreterObject):
prefix = kwargs.get('prefix', '')
if not isinstance(prefix, str):
raise InterpreterException('Prefix argument of sizeof must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
esize = self.compiler.sizeof(element, prefix, self.environment, extra_args)
mlog.log('Checking for size of "%s": %d' % (element, esize))
return esize
@@ -690,7 +702,7 @@ class CompilerHolder(InterpreterObject):
testname = kwargs.get('name', '')
if not isinstance(testname, str):
raise InterpreterException('Testname argument must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
result = self.compiler.compiles(code, extra_args)
if len(testname) > 0:
if result:
@@ -708,7 +720,7 @@ class CompilerHolder(InterpreterObject):
testname = kwargs.get('name', '')
if not isinstance(testname, str):
raise InterpreterException('Testname argument must be a string.')
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
result = self.compiler.links(code, extra_args)
if len(testname) > 0:
if result:
@@ -723,7 +735,7 @@ class CompilerHolder(InterpreterObject):
raise InterpreterException('has_header method takes exactly one argument.')
check_stringlist(args)
string = args[0]
- extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ extra_args = self.determine_args(kwargs)
haz = self.compiler.has_header(string, extra_args)
if haz:
h = mlog.green('YES')
@@ -1329,7 +1341,8 @@ class Interpreter():
setattr(self.coredata, key, value)
# If this was set on the command line, do not override.
else:
- self.environment.cmd_line_options.projectoptions.insert(0, option)
+ newoptions = [option] + self.environment.cmd_line_options.projectoptions
+ self.environment.cmd_line_options.projectoptions = newoptions
@stringArgs