[cairo] [PATCH 2/2] configure : fix unrecognized -Wno option

g.esp at free.fr g.esp at free.fr
Sun Oct 21 03:59:06 PDT 2012



----- Mail original -----
> De: "Chris Wilson" <chris at chris-wilson.co.uk>
> À: "Gilles Espinasse" <g.esp at free.fr>, cairo at cairographics.org
> Envoyé: Dimanche 21 Octobre 2012 10:40:50
> Objet: Re: [cairo] [PATCH 2/2] configure : fix unrecognized -Wno option
> 
> On Sat, 20 Oct 2012 20:22:51 +0200, Gilles Espinasse <g.esp at free.fr>
> wrote:
> > Signed-off-by: Gilles Espinasse <g.esp at free.fr>
> > 
> > gcc-4.4 and later accept every -Wno option
> > Test for the option without no in the name to check if the option
> > is supported.
> > 
> > Each time a warning is emitted and without this fix, on gcc-4.4
> > that will add this warning:
> > cc1: warning: unrecognized command line option
> > "-Wno-unused-but-set-variable"
> 
> I'm not convinced this is the best approach, it seems fragile to assume
> that GCC will accept all -Wno options. Could we not improve the
> detection of an unsupported flag instead? If it requires a warning to
> generate the spurious warning, maybe we should just fill the test
> code with junk...
> 
> The other question is which is the lesser evil?
> -Chris
> 
> --
> Chris Wilson, Intel Open Source Technology Centre
> 
This behavior is described in gcc-4.4 announce http://gcc.gnu.org/gcc-4.4/changes.html
and on later versions in the manual
http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Warning-Options.html#Warning-Options

A new option has even be added after gcc-4.4 to control that behavior with -Wunknown-warning/-Wno-unknown-warning but as this new option is not know on gcc-4.4, the new option can't be used there unless using the same trick aka test if -Wunknown-warning is supported and use -Wno-unknown-warning. So there is actually no gain with that option until the last supported compiler know this new option.

Detection was made in a similar way in openssh(portable) or using makefile in linux/scripts/Kbuild.include with
# cc-disable-warning
# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
cc-disable-warning = $(call try-run,\
	$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))


Gilles


More information about the cairo mailing list