binutils-gdb/intl/configure.ac
Jakub Jelinek 830c5a1ffb intl: Allow building both with old bison and bison >= 3 [PR92008]
bison 3 apparently made a backwards incompatible change, dropped
YYLEX_PARAM/YYPARSE_PARAM support and instead needs %param or %lex-param
and %parse-param.  Furthermore, there is no easy way to conditionalize
on bison version in the *.y files.
While e.g. glibc bumped bison requirement and just has the bison 3
compatible version, Richi said there are still systems with older bison
where we want to build gcc.

So, this patch instead determines during configure bison version, and
depending on that when building plural.c (if building it at all) tweaks
what is passed over to bison if needed.

Tested with both bison 3 and bison 1.35, in each case with reconfiguring
intl and building with make all-yes (as in my setup intl isn't normally
used).

intl/ChangeLog
2020-04-16  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/92008
	* configure.ac: Add check for bison >= 3, AC_DEFINE HAVE_BISON3
	and AC_SUBST BISON3_YES and BISON3_NO.
	* Makefile.in (.y.c): Prefix $(YACC) invocation with @BISON3_NO@,
	add @BISON3_YES@ prefixed rule to adjust the *.y source using sed
	and adjust output afterwards.
	* plural-exp.h (PLURAL_PARSE): If HAVE_BISON3 is defined, use
	struct parse_args * type for arg instead of void *.
	* plural.y: Add magic /* BISON3 ... */ comments with bison >= 3
	directives.
	(YYLEX_PARAM, YYPARSE_PARAM): Don't define if HAVE_BISON3 is defined.
	(yylex, yyerror): Adjust prototypes and definitions if HAVE_BISON3
	is defined.
	* plural.c: Regenerated.
	* config.h.in: Regenerated.
	* configure: Regenerated.
2021-02-10 15:26:56 +00:00

74 lines
2.2 KiB
Text

AC_INIT
AC_USE_SYSTEM_EXTENSIONS
AC_CONFIG_SRCDIR(gettext.c)
AC_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR(../config)
AM_GNU_GETTEXT_VERSION(0.12.1)
AM_GNU_GETTEXT([], [need-ngettext])
# This replaces the extensive use of DEFS in the original Makefile.in.
AC_DEFINE(IN_LIBINTL, 1, [Define because this is libintl.])
AC_DEFINE(IN_LIBRARY, 1, [Define because this is a library.])
AC_DEFINE(DEPENDS_ON_LIBICONV, 1, [Define because we depend on libiconv.])
AC_DEFINE(ENABLE_RELOCATABLE, 1, [Define to enable relocation.])
AC_DEFINE(NO_XMALLOC, 1, [Define if there is no xmalloc.])
AC_DEFINE(set_relocation_prefix, libintl_set_relocation_prefix,
[Define this entry point correctly.])
AC_DEFINE(relocate, libintl_relocate,
[Define this entry point correctly.])
MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal])
AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf])
AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader])
AC_ARG_ENABLE(maintainer-mode,
[ --enable-maintainer-mode enable rules only needed by maintainers],,
enable_maintainer_mode=no)
if test "x$enable_maintainer_mode" = xno; then
MAINT='#'
else
MAINT=
fi
AC_SUBST(MAINT)
# Additional info for config.intl.
AC_SUBST(LIBINTL_DEP)
AC_SUBST(INCINTL)
LIBINTL_DEP=
INCINTL=
case $USE_INCLUDED_LIBINTL in
yes)
LIBINTL=`echo $LIBINTL | sed 's,${top_builddir},&/..,' `
LTLIBINTL=`echo $LTLIBINTL | sed 's,${top_builddir},&/..,' `
LIBINTL_DEP='${top_builddir}/../intl/libintl.a'
INCINTL='-I${top_builddir}/../intl'
;;
esac
BISON3_YES='#'
BISON3_NO=
if test "$INTLBISON" != :; then
ac_bison3=no
AC_MSG_CHECKING([bison 3 or later])
changequote(<<,>>)dnl
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
[3-9].*)
changequote([,])dnl
ac_prog_version="$ac_prog_version, bison3"; ac_bison3=yes;;
*) ac_prog_version="$ac_prog_version, old";;
esac
AC_MSG_RESULT([$ac_prog_version])
if test $ac_bison3 = yes; then
AC_DEFINE(HAVE_BISON3, 1, [Define if bison 3 or later is used.])
BISON3_YES=
BISON3_NO='#'
fi
fi
AC_SUBST(BISON3_YES)
AC_SUBST(BISON3_NO)
AC_CONFIG_FILES(Makefile config.intl)
AC_OUTPUT