aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-07-14 23:33:05 +0100
committerEli Schwartz <eschwartz93@gmail.com>2024-07-19 01:36:41 -0400
commit7a306e1a46a91dadb77656a6998a8dcaa6482b8f (patch)
treeeaed74716dc509a9e1c3d73808175fd1160282db
parent2548f921a29babe665593e5dcf401eb27aedd174 (diff)
downloadmeson-7a306e1a46a91dadb77656a6998a8dcaa6482b8f.zip
meson-7a306e1a46a91dadb77656a6998a8dcaa6482b8f.tar.gz
meson-7a306e1a46a91dadb77656a6998a8dcaa6482b8f.tar.bz2
compilers: handle -Wno-attributes= for GCC
For other reasons, Meson transforms "-Wno-x" into "-Wx -Wno-x" for GCC, but this breaks with "-Wno-attributes=x" with: ``` cc1plus: error: arguments ignored for '-Wattributes='; use '-Wno-attributes=' instead ``` Suppress that workaround for -Wno-attributes=. Closes: https://github.com/mesonbuild/meson/issues/13022
-rw-r--r--mesonbuild/compilers/mixins/clike.py6
-rw-r--r--test cases/common/104 has arg/meson.build6
2 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py
index 1fddb0f..9f5fc50 100644
--- a/mesonbuild/compilers/mixins/clike.py
+++ b/mesonbuild/compilers/mixins/clike.py
@@ -1268,8 +1268,10 @@ class CLikeCompiler(Compiler):
for arg in args:
# 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-'):
+ # check the equivalent enable flag too "-Wforgotten-towel".
+ # Make an exception for -Wno-attributes=x as -Wattributes=x is invalid
+ # for GCC at least.
+ 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 ba07311..c85ec9f 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.