[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: warnings.m4: check the compiler, not the preprocessor.
From: |
Akim Demaille |
Subject: |
Re: warnings.m4: check the compiler, not the preprocessor. |
Date: |
Mon, 16 Apr 2012 11:28:13 +0200 |
The attached patch enhances warnings.m4 in several important
ways:
- gl_COMPILER_OPTION_IF allows to define more fined
grained tests on the behavior of the compiler. Forcing
the result to be an assignment to a variable (which is
AC_SUBST) does not seem to offer the orthogonal design
one would expect. This would be useful elsewhere, for
instance in manywarnings, as I have already reported it
(see below, and
http://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00198.html)
- separating the diagnostic part from the action part
provides a cleaner way to implement test cases.
- separating the diagnostic part from the action part
helps extending both in a cleaner way:
- it allowed me to cleanly integrate the missing
AC_SUBST for WARN_CFLAGS instead of leaving this
to modules/warnings
- it will make it easier to check for the answers
of the compiler on stderr
- the added parameter to gl_WARN_ADD allows to fine
tune whether a given warning is wanted or not, as
was explained in the message I am responding to.
If there are flaws in this patch to address, I'd be happy to!
Akim
Le 9 avr. 2012 à 09:52, Akim Demaille a écrit :
>
> Le 30 mars 2012 à 11:55, Akim Demaille a écrit :
>
>> Le 30 mars 2012 à 11:18, Bruno Haible a écrit :
>>
>>>> 0002-warnings.m4-exhibit-an-if-else-interface.patch
>>>
>>> What is the point of this patch? Those who want to assign to a different
>>> variable than WARN_CFLAGS can already do so through gl_WARN_ADD. Your
>>> patch looks like unneeded complexity to me.
>>
>> On the other hand it provides a more classical interface,
>> if one wants to issue a warning or a error message if some
>> option is not supported. Besides, it prepares for more
>> changes if we want to make more complex check on the way
>> the compiler supports the option (as I suggested earlier).
>> It allows to clear separate the test part from the action
>> part. More lines, but I would argue that it is not
>> added complexity, but are less complexity.
>>
>> It would allow to remove some useless duplication in gnulib.
>> Say manywarnings:
>>
>> dnl First, check -W -Werror -Wno-missing-field-initializers is supported
>> dnl with the current $CC $CFLAGS $CPPFLAGS.
>> AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
>> AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
>> gl_save_CFLAGS="$CFLAGS"
>> CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
>> AC_COMPILE_IFELSE(
>> [AC_LANG_PROGRAM([[]], [[]])],
>> [gl_cv_cc_nomfi_supported=yes],
>> [gl_cv_cc_nomfi_supported=no])
>> CFLAGS="$gl_save_CFLAGS"])
>> AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
>>
>> Actually, it would be even helpful to be able to provide
>> the code to compile, instead of just AC_LANG_PROGRAM.
>
> Well, I hit a case where I would like to specify the
> program to compile: G++ 4.7 supports a warning about
> 0 being used as a pointer type, even when it does not
> support nullptr because its C++11 mode is not activated.
>
> In other words, I'd like this warning provided that
> nullptr is supported. This is easy to do with the
> following proposed patch.
>
> <0001-warnings.m4-provide-a-means-to-specify-the-program-t.patch>
>