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 <br...@clisp.org> 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