diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py index 70e81a4b85d9..c48514680869 100644 --- a/mesonbuild/compilers/mixins/clike.py +++ b/mesonbuild/compilers/mixins/clike.py @@ -1269,7 +1269,7 @@ def _has_multi_arguments(self, args: T.List[str], env: 'Environment', code: str) # some compilers, e.g. GCC, don't warn for unsupported warning-disable # flags, so when we are testing a flag like "-Wno-forgotten-towel", also # check the equivalent enable flag too "-Wforgotten-towel" - if arg.startswith('-Wno-'): + if arg.startswith('-Wno-') and not arg.startswith('-Wno-attributes='): new_args.append('-W' + arg[5:]) if arg.startswith('-Wl,'): mlog.warning(f'{arg} looks like a linker argument, ' diff --git a/test cases/common/104 has arg/meson.build b/test cases/common/104 has arg/meson.build index ba0731111d21..c85ec9f25ab8 100644 --- a/test cases/common/104 has arg/meson.build +++ b/test cases/common/104 has arg/meson.build @@ -52,6 +52,12 @@ if cc.get_id() == 'gcc' assert(not cc.has_multi_arguments(['-Wno-pragmas', '-Wno-lol-meson-test-flags']), 'should error out even if some -Wno args are valid') endif +if cpp.get_id() == 'gcc' and cpp.version().version_compare('>=12.1.0') + # Handle special -Wno-attributes=foo where -Wattributes=foo is invalid + # i.e. our usual -Wno-foo -Wfoo hack doesn't work for -Wattributes=foo. + assert(cpp.has_argument('-Wno-attributes=meson::i_do_not_exist')) +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.