From acf8596eab886e80dcbca6bc8b8b28218cfce6ac Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 2 May 2020 17:23:01 +0200 Subject: [PATCH] bison-i18n: Add support for cross-compilation. Reported by Hongxu Jia in via Akim Demaille . * m4/bison-i18n.m4 (BISON_I18N): Accept a configure option --with-bison-prefix=PREFIX and use it to determine BISON_LOCALEDIR. Don't use bison's --print-localedir option when cross-compiling. Also, fix an error message and a comment. --- ChangeLog | 11 +++++++++++ m4/bison-i18n.m4 | 37 ++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 033f3be48e..6c0f620785 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2020-05-02 Bruno Haible + + bison-i18n: Add support for cross-compilation. + Reported by Hongxu Jia in + + via Akim Demaille . + * m4/bison-i18n.m4 (BISON_I18N): Accept a configure option + --with-bison-prefix=PREFIX and use it to determine BISON_LOCALEDIR. + Don't use bison's --print-localedir option when cross-compiling. + Also, fix an error message and a comment. + 2020-05-01 Bruno Haible list: Add remove_first and remove_last operations. diff --git a/m4/bison-i18n.m4 b/m4/bison-i18n.m4 index 0abdcc42ce..6a5c27df55 100644 --- a/m4/bison-i18n.m4 +++ b/m4/bison-i18n.m4 @@ -1,4 +1,4 @@ -# bison-i18n.m4 serial 3 +# bison-i18n.m4 serial 4 dnl Copyright (C) 2005-2006, 2009-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -15,31 +15,46 @@ dnl and defines YYENABLE_NLS if there are bison-runtime.mo files at all. AC_DEFUN([BISON_I18N], [ if test -z "$USE_NLS"; then - echo "The BISON-I18N macro is used without being preceded by AM-GNU-GETTEXT." 1>&2 + echo "The BISON-I18N macro is used without being preceded by AM-GNU-GETTEXT." | sed -e 's/-/_/g' 1>&2 exit 1 fi BISON_LOCALEDIR= BISON_USE_NLS=no if test "$USE_NLS" = yes; then dnl Determine bison's localedir. - dnl AC_PROG_YACC sets the YACC variable; other macros set the BISON variable. - dnl But even is YACC is called "yacc", it may be a script that invokes bison - dnl and accepts the --print-localedir option. - dnl YACC's default value is empty; BISON's default value is :. - if (${YACC-${BISON-:}} --print-localedir) >/dev/null 2>&1; then - BISON_LOCALEDIR=`${YACC-${BISON-:}} --print-localedir` + dnl Generally, accept an option --with-bison-prefix=PREFIX to indicate where + dnl find bison's runtime data. Additionally, for users who have installed + dnl bison in user directories, query the 'bison' program found in $PATH + dnl (but not when cross-compiling). + dnl Usually ${prefix}/share/locale, but can be influenced by the configure + dnl options --datarootdir and --localedir. + BISON_LOCALEDIR="${localedir}" + AC_ARG_WITH([bison-prefix], + [[ with-bison-prefix=DIR search for bison's runtime data in DIR/share]], + [if test "X$withval" != "X" && test "X$withval" != "Xno"; then + BISON_LOCALEDIR="$withval/share/locale" + fi + ]) + if test $cross_compiling != yes; then + dnl AC_PROG_YACC sets the YACC variable; other macros set the BISON + dnl variable. But even is YACC is called "yacc", it may be a script that + dnl invokes bison and accepts the --print-localedir option. + dnl YACC's default value is empty; BISON's default value is :. + if (${YACC-${BISON-:}} --print-localedir) >/dev/null 2>&1; then + BISON_LOCALEDIR=`${YACC-${BISON-:}} --print-localedir` + fi fi - AC_SUBST([BISON_LOCALEDIR]) if test -n "$BISON_LOCALEDIR"; then dnl There is no need to enable internationalization if the user doesn't dnl want message catalogs. So look at the language/locale names for - dnl which the user wants message catalogs. This is $LINGUAS. If unset - dnl or empty, he wants all of them. + dnl which the user wants message catalogs. This is $LINGUAS. If unset, + dnl he wants all of them; if non-empty, he wants some of them. USER_LINGUAS="${LINGUAS-%UNSET%}" if test -n "$USER_LINGUAS"; then BISON_USE_NLS=yes fi fi + AC_SUBST([BISON_LOCALEDIR]) fi if test $BISON_USE_NLS = yes; then AC_DEFINE([YYENABLE_NLS], [1], -- 2.39.5