diff options
Diffstat (limited to 'mesonbuild/compilers.py')
-rw-r--r-- | mesonbuild/compilers.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index 58444bb..1c6c1da 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -902,16 +902,21 @@ int main(int argc, char **argv) { # directly try to link via main(). return self.links('int main() {{ {0}; }}'.format('__builtin_' + funcname), env, args) - def has_member(self, typename, membername, prefix, env, extra_args=None): + def has_members(self, typename, membernames, prefix, env, extra_args=None): if extra_args is None: extra_args = [] - templ = '''%s -void bar() { - %s foo; - foo.%s; -}; + templ = '''{0} +void bar() {{ + {1} {2}; + {3} +}}; ''' - return self.compiles(templ % (prefix, typename, membername), env, extra_args) + # Create code that accesses all members + members = '' + for m in membernames: + members += 'foo.{};\n'.format(m) + code = templ.format(prefix, typename, 'foo', members) + return self.compiles(code, env, extra_args) def has_type(self, typename, prefix, env, extra_args): templ = '''%s |