# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
#
# Modified to never use included libintl.
# Owen Taylor <otaylor@redhat.com>, 12/15/1998
# once we've installed glib-gettext.m4 :-( ]
#
+AC_DEFUN([AM_GLIB_LC_MESSAGES],
+ [if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+dnl AM_GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
# serial 5
AC_DEFUN(AM_GLIB_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
+ dnl NLS is obligatory
+ [USE_NLS=yes
AC_SUBST(USE_NLS)
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
-# AC_DEFINE(ENABLE_NLS)
-# AC_MSG_CHECKING([whether included gettext is requested])
-# AC_ARG_WITH(included-gettext,
-# [ --with-included-gettext use the GNU gettext library included here],
-# nls_cv_force_use_gnu_gettext=$withval,
-# nls_cv_force_use_gnu_gettext=no)
-# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
- nls_cv_force_use_gnu_gettext="no"
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")],
- gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)])
-
- if test "$gt_cv_func_dgettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for dgettext in libintl],
- gt_cv_func_dgettext_libintl,
- [AC_CHECK_LIB(intl, dgettext,
- gt_cv_func_dgettext_libintl=yes,
- gt_cv_func_dgettext_libintl=no)],
- gt_cv_func_dgettext_libintl=no)])
- fi
-
- if test "$gt_cv_func_dgettext_libintl" = "yes"; then
- LIBS="$LIBS -lintl";
- fi
-
- if test "$gt_cv_func_dgettext_libc" = "yes" \
- || test "$gt_cv_func_dgettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT)
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
+ dnl Figure out what method
+ nls_cv_force_use_gnu_gettext="no"
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If gettext or catgets are available (in this order) we
+ dnl use this. Else we have to fall back to GNU NLS library.
+ dnl catgets is only used if permitted by option --with-catgets.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+ CATOBJEXT=NONE
+ XGETTEXT=:
+
+ AC_CHECK_HEADER(libintl.h,
+ [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)])
+
+ gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ if test "$gt_cv_func_dgettext_libc" != "yes" ; then
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])
+
+ if test "$gt_cv_func_dgettext_libc" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ LIBS="$LIBS -lintl $libintl_extra_libs";
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AM_GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ AC_CHECK_FUNCS(dcgettext)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ AM_GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ INSTOBJEXT=.mo
fi
-
- # Added by Martin Baulig 12/15/98 for libc5 systems
- if test "$gt_cv_func_dgettext_libc" != "yes" \
- && test "$gt_cv_func_dgettext_libintl" = "yes"; then
- INTLLIBS=-lintl
- LIBS=`echo $LIBS | sed -e 's/-lintl//'`
- fi
- ])
-
-# if test "$CATOBJEXT" = "NONE"; then
-# AC_MSG_CHECKING([whether catgets can be used])
-# AC_ARG_WITH(catgets,
-# [ --with-catgets use catgets functions if available],
-# nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
-# AC_MSG_RESULT($nls_cv_use_catgets)
-#
-# if test "$nls_cv_use_catgets" = "yes"; then
-# dnl No gettext in C library. Try catgets next.
-# AC_CHECK_LIB(i, main)
-# AC_CHECK_FUNC(catgets,
-# [AC_DEFINE(HAVE_CATGETS)
-# INTLOBJS="\$(CATOBJS)"
-# AC_PATH_PROG(GENCAT, gencat, no)dnl
-# if test "$GENCAT" != "no"; then
-# AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
-# if test "$GMSGFMT" = "no"; then
-# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
-# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
-# fi
-# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
-# USE_INCLUDED_LIBINTL=yes
-# CATOBJEXT=.cat
-# INSTOBJEXT=.cat
-# DATADIRNAME=lib
-# INTLDEPS='$(top_builddir)/intl/libintl.a'
-# INTLLIBS=$INTLDEPS
-# LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-# nls_cv_header_intl=intl/libintl.h
-# nls_cv_header_libgt=intl/libgettext.h
-# fi
-# ])
-# fi
-# fi
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
+ fi
+
+ # Added by Martin Baulig 12/15/98 for libc5 systems
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ && test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+ fi
+ ])
+
+ if test "$CATOBJEXT" = "NONE"; then
+ dnl Neither gettext nor catgets in included in the C library.
+ dnl Fall back on GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" != "yes"; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ else
+ dnl Unset this variable since we use the non-zero value as a flag.
+ CATOBJEXT=
+ fi
- if test "$nls_cv_use_gnu_gettext" != "yes"; then
- AC_DEFINE(ENABLE_NLS)
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is no GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
else
- dnl Unset this variable since we use the non-zero value as a flag.
- CATOBJEXT=
-# dnl Mark actions used to generate GNU NLS library.
-# INTLOBJS="\$(GETTOBJS)"
-# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
-# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
-# AC_SUBST(MSGFMT)
-# USE_INCLUDED_LIBINTL=yes
-# CATOBJEXT=.gmo
-# INSTOBJEXT=.mo
-# DATADIRNAME=share
-# INTLDEPS='$(top_builddir)/intl/libintl.a'
-# INTLLIBS=$INTLDEPS
-# LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-# nls_cv_header_intl=intl/libintl.h
-# nls_cv_header_libgt=intl/libgettext.h
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
fi
+ fi
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext program is not GNU xgettext; ignore it])
- XGETTEXT=":"
- fi
- fi
+ # We need to process the po/ directory.
+ POSUB=po
- # We need to process the po/ directory.
- POSUB=po
- else
- DATADIRNAME=share
-# nls_cv_header_intl=intl/libintl.h
-# nls_cv_header_libgt=intl/libgettext.h
- fi
-# AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
AC_OUTPUT_COMMANDS(
- [case "$CONFIG_FILES" in *po/Makefile.in*)
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
esac])
-
-# # If this is used in GNU gettext we have to set USE_NLS to `yes'
-# # because some of the sources are only built for this goal.
-# if test "$PACKAGE" = gettext; then
-# USE_NLS=yes
-# USE_INCLUDED_LIBINTL=yes
-# fi
-
dnl These rules are solely for the distribution goal. While doing this
dnl we only have to keep exactly one list of the available catalogs
dnl in configure.in.
done
dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
AC_SUBST(CATALOGS)
AC_SUBST(CATOBJEXT)
AC_SUBST(DATADIRNAME)
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
-# AC_REQUIRE([AC_ISC_POSIX])dnl
AC_REQUIRE([AC_HEADER_STDC])dnl
AC_REQUIRE([AC_C_CONST])dnl
AC_REQUIRE([AC_C_INLINE])dnl
AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
strdup __argz_count __argz_stringify __argz_next])
-# if test "${ac_cv_func_stpcpy+set}" != "set"; then
-# AC_CHECK_FUNCS(stpcpy)
-# fi
-# if test "${ac_cv_func_stpcpy}" = "yes"; then
-# AC_DEFINE(HAVE_STPCPY)
-# fi
-
- AM_LC_MESSAGES
+ AM_GLIB_LC_MESSAGES
AM_GLIB_WITH_NLS
if test "x$CATOBJEXT" != "x"; then
fi
fi
-# dnl The reference to <locale.h> in the installed <libintl.h> file
-# dnl must be resolved because we cannot expect the users of this
-# dnl to define HAVE_LOCALE_H.
-# if test $ac_cv_header_locale_h = yes; then
-# INCLUDE_LOCALE_H="#include <locale.h>"
-# else
-# INCLUDE_LOCALE_H="\
-#/* The system does not provide the header <locale.h>. Take care yourself. */"
-# fi
-# AC_SUBST(INCLUDE_LOCALE_H)
-
dnl Determine which catalog format we have (if any is needed)
dnl For now we know about two different formats:
dnl Linux libc-5 and the normal X/Open format
dnl cannot handle comments.
sed -e '/^#/d' $srcdir/po/$msgformat-msg.sed > po/po2msg.sed
fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po/po2tbl.sed.in > po/po2tbl.sed
-
-# dnl In the intl/Makefile.in we have a special dependency which makes
-# dnl only sense for gettext. We comment this out for non-gettext
-# dnl packages.
-# if test "$PACKAGE" = "gettext"; then
-# GT_NO="#NO#"
-# GT_YES=
-# else
-# GT_NO=
-# GT_YES="#YES#"
-# fi
-# AC_SUBST(GT_NO)
-# AC_SUBST(GT_YES)
dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
fi
AC_SUBST(MKINSTALLDIRS)
-# dnl *** For now the libtool support in intl/Makefile is not for real.
-# l=
-# AC_SUBST(l)
-
dnl Generate list of files to be processed by xgettext which will
dnl be included in po/Makefile.
test -d po || mkdir po
< $srcdir/po/POTFILES.in > po/POTFILES
])
+
+dnl @synopsis AC_FUNC_VSNPRINTF_C99
+dnl
+dnl Check whether there is a vsnprintf() function with C99 semantics installed.
+dnl
+AC_DEFUN([AC_FUNC_VSNPRINTF_C99],
+[AC_CACHE_CHECK(for C99 vsnprintf,
+ ac_cv_func_vsnprintf_c99,
+[AC_TRY_RUN(
+[#include <stdio.h>
+#include <stdarg.h>
+
+int
+doit(char * s, ...)
+{
+ char buffer[32];
+ va_list args;
+ int r;
+
+ va_start(args, s);
+ r = vsnprintf(buffer, 5, s, args);
+ va_end(args);
+
+ if (r != 7)
+ exit(1);
+
+ exit(0);
+}
+
+int
+main(void)
+{
+ doit("1234567");
+ exit(1);
+}], ac_cv_func_vsnprintf_c99=yes, ac_cv_func_vsnprintf_c99=no, ac_cv_func_vsnprintf_c99=no)])
+dnl Note that the default is to be pessimistic in the case of cross compilation.
+dnl If you know that the target has a C99 vsnprintf(), you can get around this
+dnl by setting ac_func_vsnprintf_c99 to yes, as described in the Autoconf manual.
+if test $ac_cv_func_vsnprintf_c99 = yes; then
+ AC_DEFINE(HAVE_C99_VSNPRINTF, 1,
+ [Define if you have a version of the vsnprintf function
+ with semantics as specified by the ISO C99 standard.])
+fi
+])# AC_FUNC_VSNPRINTF_C99
+
+
+dnl @synopsis AC_FUNC_PRINTF_UNIX98
+dnl
+dnl Check whether the printf() family supports Unix98 %n$ positional parameters
+dnl
+AC_DEFUN([AC_FUNC_PRINTF_UNIX98],
+[AC_CACHE_CHECK(whether printf supports positional parameters,
+ ac_cv_func_printf_unix98,
+[AC_TRY_RUN(
+[#include <stdio.h>
+
+int
+main (void)
+{
+ char buffer[128];
+
+ sprintf (buffer, "%2\$d %3\$d %1\$d", 1, 2, 3);
+ if (strcmp ("2 3 1", buffer) == 0)
+ exit (0);
+ exit (1);
+}], ac_cv_func_printf_unix98=yes, ac_cv_func_printf_unix98=no, ac_cv_func_printf_unix98=no)])
+dnl Note that the default is to be pessimistic in the case of cross compilation.
+dnl If you know that the target printf() supports positional parameters, you can get around
+dnl this by setting ac_func_printf_unix98 to yes, as described in the Autoconf manual.
+if test $ac_cv_func_printf_unix98 = yes; then
+ AC_DEFINE(HAVE_UNIX98_PRINTF, 1,
+ [Define if your printf function family supports positional parameters
+ as specified by Unix98.])
+fi
+])# AC_FUNC_PRINTF_UNIX98
+
+
+
+