From 763c1e32809c71e266d97e99f14b588c82284195 Mon Sep 17 00:00:00 2001 From: Michael Lenczewski Date: Fri, 30 Aug 2019 12:34:13 -0500 Subject: Fix for issue 5355 compiler.get_supported_arguments reports success for certain unsupported flags when using the gnu C/ObjC, C++/ObjC++ compilers. This fix reads the stderr on the has_arguments check to ensure the arguments really are supported and not valid for the language selection --- mesonbuild/compilers/mixins/gnu.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'mesonbuild/compilers') diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py index e4ca14f..a23a24e 100644 --- a/mesonbuild/compilers/mixins/gnu.py +++ b/mesonbuild/compilers/mixins/gnu.py @@ -334,3 +334,15 @@ class GnuCompiler(GnuLikeCompiler): def openmp_flags(self) -> typing.List[str]: return ['-fopenmp'] + + def has_arguments(self, args, env, code, mode): + # For some compiler command line arguments, the GNU compilers will + # emit a warning on stderr indicating that an option is valid for a + # another language, but still complete with exit_success + with self._build_wrapper(code, env, args, None, mode, disable_cache=False, want_output=True) as p: + result = p.returncode == 0 + if self.language in {'cpp', 'objcpp'} and 'is valid for C/ObjC' in p.stde: + result = False + if self.language in {'c', 'objc'} and 'is valid for C++/ObjC++' in p.stde: + result = False + return result, p.cached -- cgit v1.1