This patch does two improvements to the 'bison-i18n' module:
- Removes the dependency to 'gettext', since that is a heavy-weight module.
- Allows users to remove the option from the AM_CPPFLAGS:
-DBISON_LOCALEDIR=$(BISON_LOCALEDIR_c_make)
2024-12-08 Bruno Haible <[email protected]>
bison-i18n: Improve usability.
* modules/bison-i18n (Depends-on): Remove 'gettext'.
* m4/bison-i18n.m4 (BISON_I18N): Instead of bailing out if there is no
AM_GNU_GETTEXT invocation, just warn. Define BISON_LOCALEDIR also in
config.h, removing the need to do it in the Makefile.
diff --git a/m4/bison-i18n.m4 b/m4/bison-i18n.m4
index e5433a686a..3c6be12a06 100644
--- a/m4/bison-i18n.m4
+++ b/m4/bison-i18n.m4
@@ -1,5 +1,5 @@
# bison-i18n.m4
-# serial 6
+# serial 7
dnl Copyright (C) 2005-2006, 2009-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,21 +11,30 @@
dnl Support for internationalization of bison-generated parsers.
dnl BISON_I18N
-dnl should be used in configure.ac, after AM_GNU_GETTEXT. If USE_NLS is yes, it
-dnl sets BISON_LOCALEDIR to indicate where to find the bison-runtime.mo files
-dnl and defines YYENABLE_NLS if there are bison-runtime.mo files at all.
+dnl should be used in configure.ac, after AM_GNU_GETTEXT (if present).
+dnl If USE_NLS is yes, it sets BISON_LOCALEDIR to indicate where to find
+dnl the bison-runtime.mo files and defines YYENABLE_NLS if there are
+dnl bison-runtime.mo files at all.
+dnl Also it defines BISON_LOCALEDIR as macro in config.h, that expands to
+dnl the corresponding C string.
AC_DEFUN([BISON_I18N],
[
if test -z "$USE_NLS"; then
- echo "The BISON-I18N macro is used without being preceded by
AM-GNU-GETTEXT." | sed -e 's/-/_/g' 1>&2
- exit 1
+ m4_ifdef([AM_GNU][_GETTEXT],
+ [AC_MSG_WARN([[The BISON_I18N macro is used without being preceded by
AM@&t@_GNU_GETTEXT.]])],
+ [AC_MSG_WARN([[The bison-i18n module has no effect in a package that is
not internationalized.]])])
fi
BISON_LOCALEDIR=
BISON_USE_NLS=no
+ dnl If "$USE_NLS" is empty at this point, it means that this macro is used
+ dnl without being preceded by AM_GNU_GETTEXT. This is OK: it happens in
+ dnl packages that are not internationalized. In this case, or when the
+ dnl package is internationalized but the user specified --disable-nls,
+ dnl proceed with an empty value.
if test "$USE_NLS" = yes; then
dnl Determine bison's 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 to 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
@@ -79,6 +88,8 @@ AC_DEFUN([BISON_I18N]
datarootdir="${gl_saved_datarootdir}"
prefix="${gl_saved_prefix}"
+ AC_DEFINE_UNQUOTED([BISON_LOCALEDIR], [${BISON_LOCALEDIR_c}],
+ [Define to the directory where to find the localizations of the
translation domain 'bison-runtime', as a C string.])
if test $BISON_USE_NLS = yes; then
AC_DEFINE([YYENABLE_NLS], [1],
[Define to 1 to internationalize bison runtime messages.])
diff --git a/modules/bison-i18n b/modules/bison-i18n
index b2bff0fadb..2d36aadd56 100644
--- a/modules/bison-i18n
+++ b/modules/bison-i18n
@@ -6,7 +6,6 @@ m4/bison-i18n.m4
m4/build-to-host.m4
Depends-on:
-gettext
configure.ac:
BISON_I18N