diff options
-rw-r--r-- | mesonbuild/compilers.py | 8 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 11 |
2 files changed, 10 insertions, 9 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index bbe6a72..5cb5325 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -638,13 +638,11 @@ class CCompiler(Compiler): code = 'int main(int argc, char **argv) { int class=0; return class; }\n' return self.sanity_check_impl(work_dir, environment, 'sanitycheckc.c', code) - def has_header(self, hname, env, extra_args=None, dependencies=None): + def has_header(self, hname, prefix, env, extra_args=None, dependencies=None): if extra_args is None: extra_args = [] - templ = '''#include<%s> -int someSymbolHereJustForFun; -''' - return self.compiles(templ % hname, env, extra_args, dependencies) + code = '{}\n#include<{}>\nint someUselessSymbol;'.format(prefix, hname) + return self.compiles(code, env, extra_args, dependencies) def has_header_symbol(self, hname, symbol, prefix, env, extra_args=None, dependencies=None): if extra_args is None: diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 0030660..17711c4 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -896,15 +896,18 @@ class CompilerHolder(InterpreterObject): if len(args) != 1: raise InterpreterException('has_header method takes exactly one argument.') check_stringlist(args) - string = args[0] + hname = args[0] + prefix = kwargs.get('prefix', '') + if not isinstance(prefix, str): + raise InterpreterException('Prefix argument of has_header must be a string.') extra_args = self.determine_args(kwargs) deps = self.determine_dependencies(kwargs, allowed_dep_types=(dependencies.Dependency,)) - haz = self.compiler.has_header(string, self.environment, extra_args, deps) + haz = self.compiler.has_header(hname, prefix, self.environment, extra_args, deps) if haz: h = mlog.green('YES') else: h = mlog.red('NO') - mlog.log('Has header "%s":' % string, h) + mlog.log('Has header "%s":' % hname, h) return haz def has_header_symbol_method(self, args, kwargs): @@ -915,7 +918,7 @@ class CompilerHolder(InterpreterObject): symbol = args[1] prefix = kwargs.get('prefix', '') if not isinstance(prefix, str): - raise InterpreterException('Prefix argument of has_function must be a string.') + raise InterpreterException('Prefix argument of has_header_symbol must be a string.') extra_args = self.determine_args(kwargs) deps = self.determine_dependencies(kwargs, allowed_dep_types=(dependencies.Dependency,)) haz = self.compiler.has_header_symbol(hname, symbol, prefix, self.environment, extra_args, deps) |