]> Savannah Git Hosting - gnulib.git/commitdiff
bison-i18n: Add support for cross-compilation.
authorBruno Haible <bruno@clisp.org>
Sat, 2 May 2020 15:23:01 +0000 (17:23 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 2 May 2020 15:23:01 +0000 (17:23 +0200)
Reported by Hongxu Jia <hongxu.jia@windriver.com> in
<https://lists.gnu.org/archive/html/bison-patches/2016-02/msg00000.html>
via Akim Demaille <akim@lrde.epita.fr>.

* 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
m4/bison-i18n.m4

index 033f3be48e41618ea89f09eb6ed7c9e26da30f6f..6c0f620785e14f6aa8fa67907d0e5c5053308845 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2020-05-02  Bruno Haible  <bruno@clisp.org>
+
+       bison-i18n: Add support for cross-compilation.
+       Reported by Hongxu Jia <hongxu.jia@windriver.com> in
+       <https://lists.gnu.org/archive/html/bison-patches/2016-02/msg00000.html>
+       via Akim Demaille <akim@lrde.epita.fr>.
+       * 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  <bruno@clisp.org>
 
        list: Add remove_first and remove_last operations.
index 0abdcc42ce3e31ac6f8a39d29b57a65211c4f994..6a5c27df5575dba38e3f4175c10094fcd4929674 100644 (file)
@@ -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],