Re: AC_PROG_YACC: use bison -o y.tab.c

Akim Demaille <[email protected]>
Newsgroups gmane.comp.parsers.bison.patches,gmane.comp.sysutils.autoconf.patches
Message-ID <[email protected]>
Ping!

Le 4 mars 2013 à 18:48, Akim Demaille <[email protected]> a écrit :

> Hi Autofolks,
> 
> The fact that Autoconf sets YACC to bison --yacc is troublesome,
> as it emasculates the Bison down to a Yacc-calf (I wouldn't like
> to be the vet performing the bollocksectomy of a Bison).
> 
> The appended patch addresses this concern by taking profit from
> the following behavior.

> Le 25 févr. 2013 à 14:26, Akim Demaille <[email protected]> a écrit :
> 
>> Actually I just found what could arguable called a bug in
>> Bison:
>> 
>>> $ ls f.y
>>> f.y
>>> $ bison -o y.tab.c -d -v f.y
>>> $ ls y.*
>>> y.output	y.tab.c		y.tab.h
>> 
>> where I would have expected "y.tab.output".  Fortunately this
>> is also what Automake/Autoconf expect.  So, if instead of -y
>> Autoconf were using '-o y.tab.c', everybody would be happy.
>> 
>> And then --yacc = '-Werror=yacc -o y.tab.c'.  I'd be happy
>> to avoid making --fixed-output-file public again, it's
>> useless.
> 
> (BTW, shouldn't the help notices such as the one for YACC
> be converted to '' instead of `'?).
> 
> commit 63683577534eba689d05c0f4e392379c53e57549
> Author: Akim Demaille <[email protected]>
> Date:   Mon Mar 4 18:35:13 2013 +0100
> 
>    AC_PROG_YACC: don't force Bison to warn against its own features
> 
>    When invoked with -y/--yacc, Bison warns when its extensions over
>    POSIX Yacc are used.  Yet many packages requiring GNU Bison use
>    Autoconf/Automake's Yacc support, which passes -y to Bison.  It turns
>    out that passing '-o y.tab.c' has exactly the desired effect:
>    generating not only y.tab.c but also y.tab.h with -d and y.output with -v.
> 
>    See http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00100.html.
> 
>    * lib/autoconf/programs.m4 (AC_PROG_YACC): Use bison -o y.tab.c.
>    * NEWS, doc/autoconf.texi: Document this change.
> 
> diff --git a/NEWS b/NEWS
> index 1780cb9..a429c7b 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -33,6 +33,11 @@ GNU Autoconf NEWS - User visible changes.
> - AC_PROG_CC_STDC, AC_PROG_CC_C89, AC_PROG_CC_C99 have been marked as obsolete.
>   Applications should use AC_PROG_CC.
> 
> +- AC_PROG_YACC now uses 'bison -o y.tab.c' instead of 'bison -y'.  Both
> +  properly generate 'y.tab.c' and possibly 'y.tab.h' and 'y.output', but
> +  the latter also enable warnings for Bison extensions.  Add -Wyacc to
> +  your YFLAGS to enable them.
> +
> - AC_USE_SYSTEM_EXTENSIONS now enables more system extensions on HP-UX,
>   MINIX 3, and OS X.
> 
> diff --git a/doc/autoconf.texi b/doc/autoconf.texi
> index bf4823d..ad22fc6 100644
> --- a/doc/autoconf.texi
> +++ b/doc/autoconf.texi
> @@ -4219,7 +4219,7 @@ and is cached in the @code{ac_cv_path_SED} variable.
> @ovindex YACC
> @caindex prog_YACC
> If @code{bison} is found, set output variable @code{YACC} to @samp{bison
> --y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
> +-o y.tab.c}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
> @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
> The result of this test can be influenced by setting the variable
> @code{YACC} or the cache variable @code{ac_cv_prog_YACC}.
> diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
> index f7af8b5..2057e78 100644
> --- a/lib/autoconf/programs.m4
> +++ b/lib/autoconf/programs.m4
> @@ -892,10 +892,10 @@ AN_PROGRAM([yacc],  [AC_PROG_YACC])
> AN_PROGRAM([byacc], [AC_PROG_YACC])
> AN_PROGRAM([bison], [AC_PROG_YACC])
> AC_DEFUN([AC_PROG_YACC],
> -[AC_CHECK_PROGS(YACC, 'bison -y' byacc, yacc)dnl
> +[AC_CHECK_PROGS(YACC, 'bison -o y.tab.c' byacc, yacc)dnl
> AC_ARG_VAR(YACC,
> [The `Yet Another Compiler Compiler' implementation to use.  Defaults to
> -the first program found out of: `bison -y', `byacc', `yacc'.])dnl
> +the first program found out of: `bison -o y.tab.c', `byacc', `yacc'.])dnl
> AC_ARG_VAR(YFLAGS,
> [The list of arguments that will be passed by default to $YACC.  This script
> will default YFLAGS to the empty string to avoid a default value of `-d' given
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.