1 # Macro to add for using GNU gettext.
2 # Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
4 # Modified to never use included libintl.
5 # Owen Taylor <otaylor@redhat.com>, 12/15/1998
7 # Major rework to remove unused code
8 # Owen Taylor <otaylor@redhat.com>, 12/11/2002
10 # This file can be copied and used freely without restrictions. It can
11 # be used in projects which are not available under the GNU Public License
12 # but which still want to provide support for the GNU gettext functionality.
16 # We need this here as well, since someone might use autoconf-2.5x
17 # to configure GLib then an older version to configure a package
18 # using AM_GLIB_GNU_GETTEXT
22 dnl We go to great lengths to make sure that aclocal won't
23 dnl try to pull in the installed version of these macros
24 dnl when running aclocal in the glib directory.
26 m4_copy([AC_DEFUN],[glib_DEFUN])
27 m4_copy([AC_REQUIRE],[glib_REQUIRE])
29 dnl At the end, if we're not within glib, we'll define the public
30 dnl definitions in terms of our private definitions.
35 glib_DEFUN([GLIB_LC_MESSAGES],
36 [AC_CHECK_HEADERS([locale.h])
37 if test $ac_cv_header_locale_h = yes; then
38 AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
39 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
40 am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
41 if test $am_cv_val_LC_MESSAGES = yes; then
42 AC_DEFINE(HAVE_LC_MESSAGES, 1,
43 [Define if your <locale.h> file defines LC_MESSAGES.])
47 # GLIB_PATH_PROG_WITH_TEST
48 #----------------------------
49 dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
50 dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
51 glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
52 [# Extract the first word of "$2", so it can be a program name with args.
53 set dummy $2; ac_word=[$]2
54 AC_MSG_CHECKING([for $ac_word])
55 AC_CACHE_VAL(ac_cv_path_$1,
58 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
61 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
62 for ac_dir in ifelse([$5], , $PATH, [$5]); do
63 test -z "$ac_dir" && ac_dir=.
64 if test -f $ac_dir/$ac_word; then
66 ac_cv_path_$1="$ac_dir/$ac_word"
72 dnl If no 4th arg is given, leave the cache variable unset,
73 dnl so AC_PATH_PROGS will keep looking.
74 ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
79 if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
89 glib_DEFUN([GLIB_WITH_NLS],
100 AC_CHECK_HEADER(libintl.h,
101 [gt_cv_func_dgettext_libintl="no"
102 libintl_extra_libs=""
105 # First check in libc
107 AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
111 [return (int) dgettext ("","")],
112 gt_cv_func_dgettext_libc=yes,
113 gt_cv_func_dgettext_libc=no)
116 if test "$gt_cv_func_dgettext_libc" = "yes" ; then
117 AC_CHECK_FUNCS(bind_textdomain_codeset)
121 # If we don't have everything we want, check in libintl
123 if test "$gt_cv_func_dgettext_libc" != "yes" \
124 || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
126 AC_CHECK_LIB(intl, bindtextdomain,
127 [AC_CHECK_LIB(intl, dgettext,
128 gt_cv_func_dgettext_libintl=yes)])
130 if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
131 AC_MSG_CHECKING([if -liconv is needed to use gettext])
133 AC_CHECK_LIB(intl, dcgettext,
134 [gt_cv_func_dgettext_libintl=yes
135 libintl_extra_libs=-liconv],
140 # If we found libintl, then check in it for bind_textdomain_codeset();
141 # we'll prefer libc if neither have bind_textdomain_codeset(),
142 # and both have dgettext
144 if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
145 glib_save_LIBS="$LIBS"
146 LIBS="$LIBS -lintl $libintl_extra_libs"
147 unset ac_cv_func_bind_textdomain_codeset
148 AC_CHECK_FUNCS(bind_textdomain_codeset)
149 LIBS="$glib_save_LIBS"
151 if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
152 gt_cv_func_dgettext_libc=no
154 if test "$gt_cv_func_dgettext_libc" = "yes"; then
155 gt_cv_func_dgettext_libintl=no
161 if test "$gt_cv_func_dgettext_libc" = "yes" \
162 || test "$gt_cv_func_dgettext_libintl" = "yes"; then
163 gt_cv_have_gettext=yes
166 if test "$gt_cv_func_dgettext_libintl" = "yes"; then
167 INTLLIBS="-lintl $libintl_extra_libs"
170 if test "$gt_cv_have_gettext" = "yes"; then
171 AC_DEFINE(HAVE_GETTEXT,1,
172 [Define if the GNU gettext() function is already present or preinstalled.])
173 GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
174 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
175 if test "$MSGFMT" != "no"; then
176 AC_CHECK_FUNCS(dcgettext)
177 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
178 GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
179 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
180 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
181 return _nl_msg_cat_cntr],
191 if test "$gt_cv_have_gettext" = "yes" ; then
192 AC_DEFINE(ENABLE_NLS, 1,
193 [always defined to indicate that i18n is enabled])
196 dnl Test whether we really found GNU xgettext.
197 if test "$XGETTEXT" != ":"; then
198 dnl If it is not GNU xgettext we define it as : so that the
199 dnl Makefiles still can work.
200 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
204 [found xgettext program is not GNU xgettext; ignore it])
209 # We need to process the po/ directory.
213 [case "$CONFIG_FILES" in *po/Makefile.in*)
214 sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
217 dnl These rules are solely for the distribution goal. While doing this
218 dnl we only have to keep exactly one list of the available catalogs
220 for lang in $ALL_LINGUAS; do
221 GMOFILES="$GMOFILES $lang.gmo"
222 POFILES="$POFILES $lang.po"
225 dnl Make all variables we use known to autoconf.
232 AC_SUBST(PO_IN_DATADIR_TRUE)
233 AC_SUBST(PO_IN_DATADIR_FALSE)
238 # AM_GLIB_GNU_GETTEXT
239 # -------------------
240 # Do checks necessary for use of gettext. If a suitable implementation
241 # of gettext is found in either in libintl or in the C library,
242 # it will set INTLLIBS to the libraries needed for use of gettext
243 # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
244 # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
245 # on various variables needed by the Makefile.in.in installed by
248 glib_DEFUN(GLIB_GNU_GETTEXT,
249 [AC_REQUIRE([AC_PROG_CC])dnl
250 AC_REQUIRE([AC_HEADER_STDC])dnl
255 if test "$gt_cv_have_gettext" = "yes"; then
256 if test "x$ALL_LINGUAS" = "x"; then
259 AC_MSG_CHECKING(for catalogs to be installed)
261 for lang in ${LINGUAS=$ALL_LINGUAS}; do
262 case "$ALL_LINGUAS" in
263 *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
267 AC_MSG_RESULT($LINGUAS)
270 dnl Construct list of names of catalog files to be constructed.
271 if test -n "$LINGUAS"; then
272 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
276 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
277 dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
278 dnl Try to locate is.
280 if test -n "$ac_aux_dir"; then
281 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
283 if test -z "$MKINSTALLDIRS"; then
284 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
286 AC_SUBST(MKINSTALLDIRS)
288 dnl Generate list of files to be processed by xgettext which will
289 dnl be included in po/Makefile.
290 test -d po || mkdir po
291 if test "x$srcdir" != "x."; then
292 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
293 posrcprefix="$srcdir/"
295 posrcprefix="../$srcdir/"
301 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
302 < $srcdir/po/POTFILES.in > po/POTFILES
305 # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
306 # -------------------------------
307 # Define VARIABLE to the location where catalog files will
308 # be installed by po/Makefile.
309 glib_DEFUN(GLIB_DEFINE_LOCALEDIR,
310 [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
311 glib_save_prefix="$prefix"
312 test "x$prefix" = xNONE && prefix=$ac_default_prefix
313 if test "x$CATOBJEXT" = "x.mo" ; then
314 localedir=`eval echo "${libdir}/locale"`
316 localedir=`eval echo "${datadir}/locale"`
318 prefix="$glib_save_prefix"
319 AC_DEFINE_UNQUOTED($1, "$localedir",
320 [Define the location where the catalogs will be installed])
324 dnl Now the definitions that aclocal will find
326 ifdef(glib_configure_in,[],[
327 AC_DEFUN(AM_GLIB_GNU_GETTEXT,[GLIB_GNU_GETTEXT($@)])
328 AC_DEFUN(AM_GLIB_DEFINE_LOCALEDIR,[GLIB_DEFINE_LOCALEDIR($@)])