Fix detection of clang "optimization arguments"

In version 3.6.0, clang added -Wignored-optimization-argument. Without
setting this flag to -Werror, "ignored optimization arguments" such as
(for example) -fpeel-loops, are accepted but warned about, leading to
noisy builds if meson thinks the flag is supported.

See also #755
pull/2215/head
Peter Harris 8 years ago committed by Jussi Pakkanen
parent 9607abbe0d
commit ee34f454ca
  1. 5
      mesonbuild/compilers/compilers.py
  2. 7
      test cases/common/112 has arg/meson.build

@ -1041,8 +1041,11 @@ class ClangCompiler:
return get_gcc_soname_args(gcc_type, prefix, shlib_name, suffix, path, soversion, is_shared_module)
def has_multi_arguments(self, args, env):
myargs = ['-Werror=unknown-warning-option', '-Werror=unused-command-line-argument']
if mesonlib.version_compare(self.version, '>=3.6.0'):
myargs.append('-Werror=ignored-optimization-argument')
return super().has_multi_arguments(
['-Werror=unknown-warning-option', '-Werror=unused-command-line-argument'] + args,
myargs + args,
env)
def has_function(self, funcname, prefix, env, extra_args=None, dependencies=None):

@ -42,3 +42,10 @@ if cc.get_id() == 'gcc'
assert(cc.has_multi_arguments(pre_arg), 'Arg that should have worked does not work.')
assert(cc.has_multi_arguments([pre_arg, arg]), 'Arg that should have worked does not work.')
endif
if cc.get_id() == 'clang' and cc.version().version_compare('<=4.0.0')
# 4.0.0 does not support -fpeel-loops. Newer versions may.
# Please adjust above version number as new versions of clang are released.
notyet_arg = '-fpeel-loops'
assert(not cc.has_argument(notyet_arg), 'Arg that should be broken (unless clang added support recently) is not.')
endif

Loading…
Cancel
Save