719
# Macro to add for using GNU gettext.
720
# Ulrich Drepper <drepper@cygnus.com>, 1995.
722
# This file can be copied and used freely without restrictions. It can
723
# be used in projects which are not available under the GNU General Public
724
# License or the GNU Library General Public License but which still want
725
# to provide support for the GNU gettext functionality.
726
# Please note that the actual code of the GNU gettext library is covered
727
# by the GNU Library General Public License, and the rest of the GNU
728
# gettext package package is covered by the GNU General Public License.
729
# They are *not* in the public domain.
733
dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]).
734
dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library
735
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
736
dnl depending on --{enable,disable}-{shared,static} and on the presence of
737
dnl AM-DISABLE-SHARED). Otherwise, a static library
738
dnl $(top_builddir)/intl/libintl.a will be created.
739
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
740
dnl implementations (in libc or libintl) without the ngettext() function
742
dnl LIBDIR is used to find the intl libraries. If empty,
743
dnl the value `$(top_builddir)/intl/' is used.
745
dnl The result of the configuration is one of three cases:
746
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
748
dnl Catalog format: GNU --> install in $(datadir)
749
dnl Catalog extension: .mo after installation, .gmo in source tree
750
dnl 2) GNU gettext has been found in the system's C library.
751
dnl Catalog format: GNU --> install in $(datadir)
752
dnl Catalog extension: .mo after installation, .gmo in source tree
753
dnl 3) No internationalization, always use English msgid.
754
dnl Catalog format: none
755
dnl Catalog extension: none
756
dnl The use of .gmo is historical (it was needed to avoid overwriting the
757
dnl GNU format catalogs when building on a platform with an X/Open gettext),
758
dnl but we keep it in order not to force irrelevant filename changes on the
761
AC_DEFUN([AM_WITH_NLS],
762
[AC_MSG_CHECKING([whether NLS is requested])
763
dnl Default is enabled NLS
765
[ --disable-nls do not use Native Language Support],
766
USE_NLS=$enableval, USE_NLS=yes)
767
AC_MSG_RESULT($USE_NLS)
770
BUILD_INCLUDED_LIBINTL=no
771
USE_INCLUDED_LIBINTL=no
774
dnl If we use NLS figure out what method
775
if test "$USE_NLS" = "yes"; then
776
AC_DEFINE(ENABLE_NLS, 1,
777
[Define to 1 if translation of program messages to the user's native language
779
AC_MSG_CHECKING([whether included gettext is requested])
780
AC_ARG_WITH(included-gettext,
781
[ --with-included-gettext use the GNU gettext library included here],
782
nls_cv_force_use_gnu_gettext=$withval,
783
nls_cv_force_use_gnu_gettext=no)
784
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
786
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
787
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
788
dnl User does not insist on using GNU NLS library. Figure out what
789
dnl to use. If GNU gettext is available we use this. Else we have
790
dnl to fall back to GNU NLS library.
793
dnl Add a version number to the cache macros.
794
define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc])
795
define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl])
797
AC_CHECK_HEADER(libintl.h,
798
[AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
799
[AC_TRY_LINK([#include <libintl.h>
800
extern int _nl_msg_cat_cntr;],
801
[bindtextdomain ("", "");
802
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
803
gt_cv_func_gnugettext_libc=yes,
804
gt_cv_func_gnugettext_libc=no)])
806
if test "$gt_cv_func_gnugettext_libc" != "yes"; then
807
AC_CACHE_CHECK([for GNU gettext in libintl],
808
gt_cv_func_gnugettext_libintl,
809
[gt_save_LIBS="$LIBS"
810
LIBS="$LIBS -lintl $LIBICONV"
811
AC_TRY_LINK([#include <libintl.h>
812
extern int _nl_msg_cat_cntr;],
813
[bindtextdomain ("", "");
814
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
815
gt_cv_func_gnugettext_libintl=yes,
816
gt_cv_func_gnugettext_libintl=no)
817
LIBS="$gt_save_LIBS"])
820
dnl If an already present or preinstalled GNU gettext() is found,
821
dnl use it. But if this macro is used in GNU gettext, and GNU
822
dnl gettext is already preinstalled in libintl, we update this
823
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
824
if test "$gt_cv_func_gnugettext_libc" = "yes" \
825
|| { test "$gt_cv_func_gnugettext_libintl" = "yes" \
826
&& test "$PACKAGE" != gettext; }; then
827
AC_DEFINE(HAVE_GETTEXT, 1,
828
[Define if the GNU gettext() function is already present or preinstalled.])
830
if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
831
dnl If iconv() is in a separate libiconv library, then anyone
832
dnl linking with libintl{.a,.so} also needs to link with
834
INTLLIBS="-lintl $LIBICONV"
838
LIBS="$LIBS $INTLLIBS"
839
AC_CHECK_FUNCS(dcgettext)
842
dnl Search for GNU msgfmt in the PATH.
843
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
844
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
845
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
847
dnl Search for GNU xgettext in the PATH.
848
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
849
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
855
if test "$CATOBJEXT" = "NONE"; then
856
dnl GNU gettext is not found in the C library.
857
dnl Fall back on GNU gettext library.
858
nls_cv_use_gnu_gettext=yes
862
if test "$nls_cv_use_gnu_gettext" = "yes"; then
863
dnl Mark actions used to generate GNU NLS library.
864
INTLOBJS="\$(GETTOBJS)"
865
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
866
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
867
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
868
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
869
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
871
BUILD_INCLUDED_LIBINTL=yes
872
USE_INCLUDED_LIBINTL=yes
874
INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV"
875
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
878
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
879
dnl Test whether we really found GNU msgfmt.
880
if test "$GMSGFMT" != ":"; then
881
dnl If it is no GNU msgfmt we define it as : so that the
882
dnl Makefiles still can work.
883
if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then
887
[found msgfmt program is not GNU msgfmt; ignore it])
892
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
893
dnl Test whether we really found GNU xgettext.
894
if test "$XGETTEXT" != ":"; then
895
dnl If it is no GNU xgettext we define it as : so that the
896
dnl Makefiles still can work.
897
if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then
901
[found xgettext program is not GNU xgettext; ignore it])
906
dnl We need to process the po/ directory.
910
[for ac_file in $CONFIG_FILES; do
911
# Support "outfile[:infile[:infile...]]"
913
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
915
# PO directories have a Makefile.in generated from Makefile.in.in.
916
case "$ac_file" in */Makefile.in)
917
# Adjust a relative srcdir.
918
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
919
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
920
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
921
# In autoconf-2.13 it is called $ac_given_srcdir.
922
# In autoconf-2.50 it is called $srcdir.
923
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
924
case "$ac_given_srcdir" in
925
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
926
/*) top_srcdir="$ac_given_srcdir" ;;
927
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
929
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
930
rm -f "$ac_dir/POTFILES"
931
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
932
sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES"
933
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
934
sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
941
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
942
dnl to 'yes' because some of the testsuite requires it.
943
if test "$PACKAGE" = gettext; then
944
BUILD_INCLUDED_LIBINTL=yes
947
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
948
dnl because plural.y uses bison specific features. It requires at least
949
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
951
dnl bison is only needed for the maintainer (who touches plural.y). But in
952
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
953
dnl the rule in general Makefile. Now, some people carelessly touch the
954
dnl files or have a broken "make" program, hence the plural.c rule will
955
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
956
dnl present or too old.
957
AC_CHECK_PROGS([INTLBISON], [bison])
958
if test -z "$INTLBISON"; then
961
dnl Found it, now check the version.
962
AC_MSG_CHECKING([version of bison])
963
changequote(<<,>>)dnl
964
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
965
case $ac_prog_version in
966
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
967
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
969
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
970
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
972
AC_MSG_RESULT([$ac_prog_version])
974
if test $ac_verc_fail = yes; then
978
dnl These rules are solely for the distribution goal. While doing this
979
dnl we only have to keep exactly one list of the available catalogs
981
for lang in $ALL_LINGUAS; do
982
GMOFILES="$GMOFILES $lang.gmo"
983
POFILES="$POFILES $lang.po"
986
dnl Make all variables we use known to autoconf.
987
AC_SUBST(BUILD_INCLUDED_LIBINTL)
988
AC_SUBST(USE_INCLUDED_LIBINTL)
997
dnl For backward compatibility. Some configure.ins may be using this.
1001
dnl For backward compatibility. Some Makefiles may be using this.
1003
AC_SUBST(DATADIRNAME)
1005
dnl For backward compatibility. Some Makefiles may be using this.
1007
AC_SUBST(INSTOBJEXT)
1009
dnl For backward compatibility. Some Makefiles may be using this.
1014
dnl Usage: Just like AM_WITH_NLS, which see.
1015
AC_DEFUN([AM_GNU_GETTEXT],
1016
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1017
AC_REQUIRE([AC_PROG_CC])dnl
1018
AC_REQUIRE([AC_CANONICAL_HOST])dnl
1019
AC_REQUIRE([AC_PROG_RANLIB])dnl
1020
AC_REQUIRE([AC_ISC_POSIX])dnl
1021
AC_REQUIRE([AC_HEADER_STDC])dnl
1022
AC_REQUIRE([AC_C_CONST])dnl
1023
AC_REQUIRE([AC_C_INLINE])dnl
1024
AC_REQUIRE([AC_TYPE_OFF_T])dnl
1025
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
1026
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
1027
AC_REQUIRE([AC_FUNC_MMAP])dnl
1028
AC_REQUIRE([jm_GLIBC21])dnl
1030
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
1031
stdlib.h string.h unistd.h sys/param.h])
1032
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \
1033
getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
1034
strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
1039
AM_WITH_NLS([$1],[$2],[$3])
1041
if test "x$CATOBJEXT" != "x"; then
1042
if test "x$ALL_LINGUAS" = "x"; then
1045
AC_MSG_CHECKING(for catalogs to be installed)
1047
for presentlang in $ALL_LINGUAS; do
1049
for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do
1050
# Use the presentlang catalog if desiredlang is
1051
# a. equal to presentlang, or
1052
# b. a variant of presentlang (because in this case,
1053
# presentlang can be used as a fallback for messages
1054
# which are not translated in the desiredlang catalog).
1055
case "$desiredlang" in
1056
"$presentlang"*) useit=yes;;
1059
if test $useit = yes; then
1060
NEW_LINGUAS="$NEW_LINGUAS $presentlang"
1063
LINGUAS=$NEW_LINGUAS
1064
AC_MSG_RESULT($LINGUAS)
1067
dnl Construct list of names of catalog files to be constructed.
1068
if test -n "$LINGUAS"; then
1069
for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
1073
dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
1074
dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
1075
dnl Try to locate is.
1077
if test -n "$ac_aux_dir"; then
1078
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
1080
if test -z "$MKINSTALLDIRS"; then
1081
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
1083
AC_SUBST(MKINSTALLDIRS)
1085
dnl Enable libtool support if the surrounding package wishes it.
1086
INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], [])
1087
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
1090
dnl this check it required by the gettext macro
1093
# Test for the GNU C Library, version 2.1 or newer.
1094
# From Bruno Haible.
1096
AC_DEFUN([jm_GLIBC21],
1098
AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
1099
ac_cv_gnu_library_2_1,
1100
[AC_EGREP_CPP([Lucky GNU user],
1102
#include <features.h>
1103
#ifdef __GNU_LIBRARY__
1104
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
1109
ac_cv_gnu_library_2_1=yes,
1110
ac_cv_gnu_library_2_1=no)
1114
GLIBC21="$ac_cv_gnu_library_2_1"