92 lines
3.6 KiB
Text
92 lines
3.6 KiB
Text
# serial 10
|
|
|
|
# Copyright (C) 2002-2006, 2008-2021 Free Software Foundation, Inc.
|
|
# This file is free software; the Free Software Foundation
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
|
|
# There are two types of parser skeletons:
|
|
#
|
|
# * Those that can be used with any Yacc implementation, including bison.
|
|
# For these, in the configure.ac, up to Autoconf 2.69, you could use
|
|
# AC_PROG_YACC
|
|
# In newer Autoconf versions, however, this macro is broken. See
|
|
# https://lists.gnu.org/archive/html/autoconf-patches/2013-03/msg00000.html
|
|
# https://lists.gnu.org/archive/html/bug-autoconf/2018-12/msg00001.html
|
|
# In the Makefile.am you could use
|
|
# $(SHELL) $(YLWRAP) $(srcdir)/foo.y \
|
|
# y.tab.c foo.c \
|
|
# y.tab.h foo.h \
|
|
# y.output foo.output \
|
|
# -- $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
|
# or similar.
|
|
#
|
|
# * Those that make use of Bison extensions. For example,
|
|
# - %define api.pure requires bison 2.7 or newer,
|
|
# - %precedence requires bison 3.0 or newer.
|
|
# For these, in the configure.ac you will need an invocation of
|
|
# gl_PROG_BISON([VARIABLE], [MIN_BISON_VERSION])
|
|
# Example:
|
|
# gl_PROG_BISON([PARSE_DATETIME_BISON], [2.4])
|
|
# With this preparation, in the Makefile.am there are two ways to formulate
|
|
# the invocation. Both are direct, without use of 'ylwrap'.
|
|
# (a) You can invoke
|
|
# $(VARIABLE) -d $(SOME_BISON_OPTIONS) --output foo.c $(srcdir)/foo.y
|
|
# or similar.
|
|
# (b) If you want the invocation to honor an YFLAGS=... parameter passed to
|
|
# 'configure' or an YFLAGS environment variable present at 'configure'
|
|
# time, add an invocation of gl_BISON to the configure.ac, and write
|
|
# $(VARIABLE) -d $(YFLAGS) $(AM_YFLAGS) $(srcdir)/foo.y
|
|
# or similar.
|
|
|
|
# This macro defines the autoconf variable VARIABLE to 'bison' if the specified
|
|
# minimum version of bison is found in $PATH, or to ':' otherwise.
|
|
AC_DEFUN([gl_PROG_BISON],
|
|
[
|
|
AC_CHECK_PROGS([$1], [bison])
|
|
if test -z "$[$1]"; then
|
|
ac_verc_fail=yes
|
|
else
|
|
cat >conftest.y <<_ACEOF
|
|
%require "$2"
|
|
%%
|
|
exp:
|
|
_ACEOF
|
|
AC_MSG_CHECKING([for bison $2 or newer])
|
|
ac_prog_version=`$$1 --version 2>&1 | sed -n 's/^.*GNU Bison.* \([[0-9]]*\.[[0-9.]]*\).*$/\1/p'`
|
|
: ${ac_prog_version:='v. ?.??'}
|
|
if $$1 conftest.y -o conftest.c 2>/dev/null; then
|
|
ac_prog_version="$ac_prog_version, ok"
|
|
ac_verc_fail=no
|
|
else
|
|
ac_prog_version="$ac_prog_version, bad"
|
|
ac_verc_fail=yes
|
|
fi
|
|
rm -f conftest.y conftest.c
|
|
AC_MSG_RESULT([$ac_prog_version])
|
|
fi
|
|
if test $ac_verc_fail = yes; then
|
|
[$1]=:
|
|
fi
|
|
AC_SUBST([$1])
|
|
])
|
|
|
|
# This macro sets the autoconf variables YACC (for old-style yacc Makefile
|
|
# rules) and YFLAGS (to allow options to be passed as 'configure' time).
|
|
AC_DEFUN([gl_BISON],
|
|
[
|
|
: ${YACC='bison -o y.tab.c'}
|
|
dnl
|
|
dnl Declaring YACC & YFLAGS precious will not be necessary after GNULIB
|
|
dnl requires an Autoconf greater than 2.59c, but it will probably still be
|
|
dnl useful to override the description of YACC in the --help output, re
|
|
dnl parse-datetime.y assuming 'bison -o y.tab.c'.
|
|
AC_ARG_VAR([YACC],
|
|
[The "Yet Another C Compiler" implementation to use. Defaults to
|
|
'bison -o y.tab.c'. Values other than 'bison -o y.tab.c' will most likely
|
|
break on most systems.])dnl
|
|
AC_ARG_VAR([YFLAGS],
|
|
[YFLAGS contains the list arguments that will be passed by default to Bison.
|
|
This script will default YFLAGS to the empty string to avoid a default value of
|
|
'-d' given by some make applications.])dnl
|
|
])
|