diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-10-22 22:33:58 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-10-25 23:55:16 +0200 |
commit | 062512a0f1b391cb5b2aa9b652b2aad28988ca69 (patch) | |
tree | 587755ada817ae47712bac1deb0f7e9531454f11 /interpreter.py | |
parent | 4286bdb86f150395d9209c3b9ee077cbc10cea33 (diff) | |
download | meson-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.py | 31 |
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 |