mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Import latest m4/m4.m4.
* m4/m4.m4: Copy from autoconf 2.64. * configure.ac (M4_GNU_OPTION): New define. * src/output.c (output_skeleton): Use it to resolve FIXME. * NEWS: Mention this. Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2009-08-20 Eric Blake <ebb9@byu.net>
|
||||
|
||||
Import latest m4/m4.m4.
|
||||
* m4/m4.m4: Copy from autoconf 2.64.
|
||||
* configure.ac (M4_GNU_OPTION): New define.
|
||||
* src/output.c (output_skeleton): Use it to resolve FIXME.
|
||||
* NEWS: Mention this.
|
||||
|
||||
2009-08-19 Joel E. Denny <jdenny@clemson.edu>
|
||||
|
||||
Fix complaints about escape sequences.
|
||||
|
||||
2
NEWS
2
NEWS
@@ -3,6 +3,8 @@ Bison News
|
||||
|
||||
* Changes in version 2.4.2 (????-??-??):
|
||||
|
||||
** Detection of GNU M4 1.4.6 or newer during configure is improved.
|
||||
|
||||
** %code is now a permanent feature.
|
||||
|
||||
A traditional Yacc prologue directive is written in the form:
|
||||
|
||||
@@ -94,6 +94,8 @@ AC_PROG_YACC
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_GNU_M4
|
||||
AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the GNU M4 executable name.])
|
||||
AC_DEFINE_UNQUOTED([M4_GNU_OPTION], ["$M4_GNU"], [Define to "-g" if GNU M4
|
||||
supports -g, otherwise to "".])
|
||||
AM_MISSING_PROG([HELP2MAN], [help2man])
|
||||
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||
AC_SUBST([XSLTPROC])
|
||||
|
||||
52
m4/m4.m4
52
m4/m4.m4
@@ -1,34 +1,60 @@
|
||||
# m4.m4 serial 5
|
||||
dnl Copyright (C) 2000, 2006, 2007, 2008-2009 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
# m4.m4 serial 9
|
||||
|
||||
# Copyright (C) 2000, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# are permitted in any medium without royalty provided the copyright
|
||||
# notice and this notice are preserved. This file is offered as-is,
|
||||
# without warranty of any kind.
|
||||
|
||||
# AC_PROG_GNU_M4
|
||||
# --------------
|
||||
# Check for GNU M4, at least 1.4.5 (all earlier versions had a bug in
|
||||
# trace support:
|
||||
# http://lists.gnu.org/archive/html/bug-gnu-utils/2006-11/msg00096.html)
|
||||
# Check for GNU M4, at least 1.4.6 (all earlier versions had bugs in
|
||||
# trace support and regexp support):
|
||||
# http://lists.gnu.org/archive/html/bug-gnu-utils/2006-11/msg00096.html
|
||||
# http://lists.gnu.org/archive/html/bug-autoconf/2009-07/msg00023.html
|
||||
# Also, check whether --error-output (through 1.4.x) or --debugfile (2.0)
|
||||
# is supported, and AC_SUBST M4_DEBUGFILE accordingly.
|
||||
AC_DEFUN([AC_PROG_GNU_M4],
|
||||
[AC_ARG_VAR([M4], [Location of GNU M4 1.4.5 or later. Defaults to the first
|
||||
[AC_ARG_VAR([M4], [Location of GNU M4 1.4.6 or later. Defaults to the first
|
||||
program of `m4', `gm4', or `gnum4' on PATH that meets Autoconf needs.])
|
||||
AC_CACHE_CHECK([for GNU M4 that supports accurate traces], [ac_cv_path_M4],
|
||||
[rm -f conftest.m4f
|
||||
ac_had_posixly_correct=${POSIXLY_CORRECT:+yes}
|
||||
AS_UNSET([POSIXLY_CORRECT])
|
||||
AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4 gnum4],
|
||||
[dnl Creative quoting here to avoid raw dnl and ifdef in configure.
|
||||
# Root out GNU M4 1.4.4, as well as non-GNU m4 that ignore -t, -F.
|
||||
ac_snippet=change'quote(<,>)in''dir(<if''def>,mac,bug)d'nl
|
||||
# Root out GNU M4 1.4.5, as well as non-GNU m4 that ignore -t, -F.
|
||||
ac_snippet=change'quote(<,>)in''dir(<if''def>,mac,bug)'
|
||||
ac_snippet=${ac_snippet}pat'subst(a,\(b\)\|\(a\),\1)d'nl
|
||||
test -z "`$ac_path_M4 -F conftest.m4f </dev/null 2>&1`" \
|
||||
&& test -z "`echo $ac_snippet | $ac_path_M4 --trace=mac 2>&1`" \
|
||||
&& test -f conftest.m4f \
|
||||
&& ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:
|
||||
rm -f conftest.m4f],
|
||||
[AC_MSG_ERROR([no acceptable m4 could be found in \$PATH.
|
||||
GNU M4 1.4.5 or later is required; 1.4.11 is recommended])])])
|
||||
GNU M4 1.4.6 or later is required; 1.4.13 is recommended])])])
|
||||
M4=$ac_cv_path_M4
|
||||
AC_CACHE_CHECK([whether $ac_cv_path_M4 accepts --gnu],
|
||||
[ac_cv_prog_gnu_m4_gnu],
|
||||
[case `$M4 --help < /dev/null 2>&1` in
|
||||
*--gnu*) ac_cv_prog_gnu_m4_gnu=yes ;;
|
||||
*) ac_cv_prog_gnu_m4_gnu=no ;;
|
||||
esac])
|
||||
if test "$ac_cv_prog_gnu_m4_gnu" = yes; then
|
||||
M4_GNU=--gnu
|
||||
else
|
||||
M4_GNU=
|
||||
fi
|
||||
AC_SUBST([M4_GNU])
|
||||
if test x$ac_had_posixly_correct = xyes; then
|
||||
POSIXLY_CORRECT=:
|
||||
if test $ac_cv_prog_gnu_m4_gnu = no; then
|
||||
AC_MSG_WARN([The version of M4 that was found does not support -g.])
|
||||
AC_MSG_WARN([Using it with POSIXLY_CORRECT set may cause problems.])
|
||||
fi
|
||||
fi
|
||||
AC_CACHE_CHECK([how m4 supports trace files], [ac_cv_prog_gnu_m4_debugfile],
|
||||
[case `$M4 --help < /dev/null 2>&1` in
|
||||
*debugfile*) ac_cv_prog_gnu_m4_debugfile=--debugfile ;;
|
||||
|
||||
33
src/output.c
33
src/output.c
@@ -473,7 +473,7 @@ output_skeleton (void)
|
||||
FILE *in;
|
||||
FILE *out;
|
||||
int filter_fd[2];
|
||||
char const *argv[9];
|
||||
char const *argv[10];
|
||||
pid_t pid;
|
||||
|
||||
/* Compute the names of the package data dir and skeleton files. */
|
||||
@@ -524,6 +524,19 @@ output_skeleton (void)
|
||||
{
|
||||
int i = 0;
|
||||
argv[i++] = m4;
|
||||
|
||||
/* When POSIXLY_CORRECT is set, GNU M4 1.6 and later disable GNU
|
||||
extensions, which Bison's skeletons depend on. With older M4,
|
||||
it has no effect. M4 1.4.12 added a -g/--gnu command-line
|
||||
option to make it explicit that a program wants GNU M4
|
||||
extensions even when POSIXLY_CORRECT is set.
|
||||
|
||||
See the thread starting at
|
||||
<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>
|
||||
for details. */
|
||||
if (*M4_GNU_OPTION)
|
||||
argv[i++] = M4_GNU_OPTION;
|
||||
|
||||
argv[i++] = "-I";
|
||||
argv[i++] = pkgdatadir;
|
||||
if (trace_flag & trace_m4)
|
||||
@@ -534,25 +547,7 @@ output_skeleton (void)
|
||||
argv[i++] = full_skeleton;
|
||||
argv[i++] = NULL;
|
||||
}
|
||||
/* When POSIXLY_CORRECT is set, some future versions of GNU M4 (most likely
|
||||
2.0) may drop some of the GNU extensions that Bison's skeletons depend
|
||||
upon. So that the next release of Bison is forward compatible with those
|
||||
future versions of GNU M4, we unset POSIXLY_CORRECT here.
|
||||
|
||||
FIXME: A user might set POSIXLY_CORRECT to affect processes run from
|
||||
macros like m4_syscmd in a custom skeleton. For now, Bison makes no
|
||||
promises about the behavior of custom skeletons, so this scenario is not a
|
||||
concern. However, we eventually want to eliminate this shortcoming. The
|
||||
next release of GNU M4 (1.4.12 or 1.6) will accept the -g command-line
|
||||
option as a no-op, and later releases will accept it to indicate that
|
||||
POSIXLY_CORRECT should be ignored. Once the GNU M4 versions that accept
|
||||
-g are pervasive, Bison should use -g instead of unsetting
|
||||
POSIXLY_CORRECT.
|
||||
|
||||
See the thread starting at
|
||||
<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>
|
||||
for details. */
|
||||
unsetenv ("POSIXLY_CORRECT");
|
||||
init_subpipe ();
|
||||
pid = create_subpipe (argv, filter_fd);
|
||||
free (full_m4sugar);
|
||||
|
||||
Reference in New Issue
Block a user