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
pull/6018/head
Michael Lenczewski 6 years ago committed by Dylan Baker
parent b6af3f3810
commit 763c1e3280
  1. 12
      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

Loading…
Cancel
Save