[Mesa-dev] [PATCH] configure: avoid testing for negative compiler options

Dylan Baker dylan at pnwbakers.com
Wed Nov 29 19:51:46 UTC 2017


Quoting Marc Dietrich (2017-11-29 05:47:55)
> gcc seems to always accept unsupported negative compiler warning options:
> 
> echo "int i;" | gcc -c -xc -Wno-bob - # no error
> echo "int i;" | gcc -c -xc -Walice -  # unsupported compiler option
> 
> Inverting the options fixes the tests.
> 
> Signed-off-by: Marc Dietrich <marvin24 at gmx.de>
> ---
>  configure.ac | 4 ++--
>  meson.build  | 4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 1344c12884..c025d9c766 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -394,8 +394,8 @@ esac
>  AC_SUBST([VISIBILITY_CFLAGS])
>  AC_SUBST([VISIBILITY_CXXFLAGS])
>  
> -AX_CHECK_COMPILE_FLAG([-Wno-override-init],                    [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"])         # gcc
> -AX_CHECK_COMPILE_FLAG([-Wno-initializer-overrides],            [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
> +AX_CHECK_COMPILE_FLAG([-Woverride-init],                    [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"])         # gcc
> +AX_CHECK_COMPILE_FLAG([-Winitializer-overrides],            [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
>  AC_SUBST([WNO_OVERRIDE_INIT])

This is correct I think.

>  
>  dnl
> diff --git a/meson.build b/meson.build
> index bba9a292aa..e69ef6a14b 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -683,7 +683,7 @@ endif
>  cpp = meson.get_compiler('cpp')
>  cpp_args = []
>  foreach a : ['-Wall', '-fno-math-errno', '-fno-trapping-math',
> -             '-Qunused-arguments', '-Wno-non-virtual-dtor']
> +             '-Qunused-arguments', '-Wnon-virtual-dtor']
>    if cpp.has_argument(a)
>      cpp_args += a
>    endif

This inverts the meaning of the test, instead remove it from the list and do
something like:

if cpp.has_argument('-Wnon-virtual-dtor')
  cpp_args += '-Wno-non-virtual-dtor')
endif

> @@ -708,7 +708,7 @@ foreach a : ['-Werror=pointer-arith', '-Werror=vla']
>  endforeach
>  
>  no_override_init_args = []
> -foreach a : ['-Wno-override-init', '-Wno-initializer-overrides']
> +foreach a : ['-Woverride-init', '-Winitializer-overrides']

Same here, but you can do something like:

foreach a : ['override-init', 'initializer-overrides']
  if cc.has_argument('-W0 at 0'.format(a))
    no_override_init_args += '-Wno- at 0@'.format(a)
  endif
endforeach

Please be sure to add a comment explaining why this is necessary, preferably in
both places in meson and in configure.ac

And thank you for looking into this. The warnings about those arguments were
annoying me to no end.

Dylan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171129/ed594bc5/attachment.sig>


More information about the mesa-dev mailing list