1 # Copyright (C) 1995-2002 Free Software Foundation, Inc.
2 # Copyright (C) 2001-2003,2004 Red Hat, Inc.
4 # This file is free software, distributed under the terms of the GNU
5 # General Public License. As a special exception to the GNU General
6 # Public License, this file may be distributed as part of a program
7 # that contains a configuration script generated by Autoconf, under
8 # the same distribution terms as the rest of that program.
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.
14 # Macro to add for using GNU gettext.
15 # Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
17 # Modified to never use included libintl.
18 # Owen Taylor <otaylor@redhat.com>, 12/15/1998
20 # Major rework to remove unused code
21 # Owen Taylor <otaylor@redhat.com>, 12/11/2002
23 # Added better handling of ALL_LINGUAS from GNU gettext version
24 # written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
26 # Modified to require ngettext
27 # Matthias Clasen <mclasen@redhat.com> 08/06/2004
29 # We need this here as well, since someone might use autoconf-2.5x
30 # to configure GLib then an older version to configure a package
31 # using AM_GLIB_GNU_GETTEXT
35 dnl We go to great lengths to make sure that aclocal won't
36 dnl try to pull in the installed version of these macros
37 dnl when running aclocal in the glib directory.
39 m4_copy([AC_DEFUN],[glib_DEFUN])
40 m4_copy([AC_REQUIRE],[glib_REQUIRE])
42 dnl At the end, if we're not within glib, we'll define the public
43 dnl definitions in terms of our private definitions.
48 glib_DEFUN([GLIB_LC_MESSAGES],
49 [AC_CHECK_HEADERS([locale.h])
50 if test $ac_cv_header_locale_h = yes; then
51 AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
52 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
53 am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
54 if test $am_cv_val_LC_MESSAGES = yes; then
55 AC_DEFINE(HAVE_LC_MESSAGES, 1,
56 [Define if your <locale.h> file defines LC_MESSAGES.])
60 # GLIB_PATH_PROG_WITH_TEST
61 #----------------------------
62 dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
63 dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
64 glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
65 [# Extract the first word of "$2", so it can be a program name with args.
66 set dummy $2; ac_word=[$]2
67 AC_MSG_CHECKING([for $ac_word])
68 AC_CACHE_VAL(ac_cv_path_$1,
71 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
74 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
75 for ac_dir in ifelse([$5], , $PATH, [$5]); do
76 test -z "$ac_dir" && ac_dir=.
77 if test -f $ac_dir/$ac_word; then
79 ac_cv_path_$1="$ac_dir/$ac_word"
85 dnl If no 4th arg is given, leave the cache variable unset,
86 dnl so AC_PATH_PROGS will keep looking.
87 ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
92 if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
102 glib_DEFUN([GLIB_WITH_NLS],
103 dnl NLS is obligatory
107 gt_cv_have_gettext=no
113 AC_CHECK_HEADER(libintl.h,
114 [gt_cv_func_dgettext_libintl="no"
115 libintl_extra_libs=""
118 # First check in libc
120 AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
124 [return !ngettext ("","", 1)],
125 gt_cv_func_ngettext_libc=yes,
126 gt_cv_func_ngettext_libc=no)
129 if test "$gt_cv_func_ngettext_libc" = "yes" ; then
130 AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
134 [return !dgettext ("","")],
135 gt_cv_func_dgettext_libc=yes,
136 gt_cv_func_dgettext_libc=no)
140 if test "$gt_cv_func_ngettext_libc" = "yes" ; then
141 AC_CHECK_FUNCS(bind_textdomain_codeset)
145 # If we don't have everything we want, check in libintl
147 if test "$gt_cv_func_dgettext_libc" != "yes" \
148 || test "$gt_cv_func_ngettext_libc" != "yes" \
149 || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
151 AC_CHECK_LIB(intl, bindtextdomain,
152 [AC_CHECK_LIB(intl, ngettext,
153 [AC_CHECK_LIB(intl, dgettext,
154 gt_cv_func_dgettext_libintl=yes)])])
156 if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
157 AC_MSG_CHECKING([if -liconv is needed to use gettext])
159 AC_CHECK_LIB(intl, ngettext,
160 [AC_CHECK_LIB(intl, dcgettext,
161 [gt_cv_func_dgettext_libintl=yes
162 libintl_extra_libs=-liconv],
168 # If we found libintl, then check in it for bind_textdomain_codeset();
169 # we'll prefer libc if neither have bind_textdomain_codeset(),
170 # and both have dgettext and ngettext
172 if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
173 glib_save_LIBS="$LIBS"
174 LIBS="$LIBS -lintl $libintl_extra_libs"
175 unset ac_cv_func_bind_textdomain_codeset
176 AC_CHECK_FUNCS(bind_textdomain_codeset)
177 LIBS="$glib_save_LIBS"
179 if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
180 gt_cv_func_dgettext_libc=no
182 if test "$gt_cv_func_dgettext_libc" = "yes" \
183 && test "$gt_cv_func_ngettext_libc" = "yes"; then
184 gt_cv_func_dgettext_libintl=no
190 if test "$gt_cv_func_dgettext_libc" = "yes" \
191 || test "$gt_cv_func_dgettext_libintl" = "yes"; then
192 gt_cv_have_gettext=yes
195 if test "$gt_cv_func_dgettext_libintl" = "yes"; then
196 INTLLIBS="-lintl $libintl_extra_libs"
199 if test "$gt_cv_have_gettext" = "yes"; then
200 AC_DEFINE(HAVE_GETTEXT,1,
201 [Define if the GNU gettext() function is already present or preinstalled.])
202 GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
203 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
204 if test "$MSGFMT" != "no"; then
205 glib_save_LIBS="$LIBS"
206 LIBS="$LIBS $INTLLIBS"
207 AC_CHECK_FUNCS(dcgettext)
208 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
209 GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
210 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
211 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
212 return _nl_msg_cat_cntr],
217 dnl On Solaris, if bind_textdomain_codeset is in libc,
218 dnl GNU format message catalog is always supported,
219 dnl since both are added to the libc all together.
220 dnl Hence, we'd like to go with DATADIRNAME=share and
221 dnl and CATOBJEXT=.gmo in this case.
222 AC_CHECK_FUNC(bind_textdomain_codeset,
233 LIBS="$glib_save_LIBS"
236 gt_cv_have_gettext=no
241 if test "$gt_cv_have_gettext" = "yes" ; then
242 AC_DEFINE(ENABLE_NLS, 1,
243 [always defined to indicate that i18n is enabled])
246 dnl Test whether we really found GNU xgettext.
247 if test "$XGETTEXT" != ":"; then
248 dnl If it is not GNU xgettext we define it as : so that the
249 dnl Makefiles still can work.
250 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
254 [found xgettext program is not GNU xgettext; ignore it])
259 # We need to process the po/ directory.
263 [case "$CONFIG_FILES" in *po/Makefile.in*)
264 sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
267 dnl These rules are solely for the distribution goal. While doing this
268 dnl we only have to keep exactly one list of the available catalogs
270 for lang in $ALL_LINGUAS; do
271 GMOFILES="$GMOFILES $lang.gmo"
272 POFILES="$POFILES $lang.po"
275 dnl Make all variables we use known to autoconf.
278 AC_SUBST(DATADIRNAME)
282 AC_SUBST(PO_IN_DATADIR_TRUE)
283 AC_SUBST(PO_IN_DATADIR_FALSE)
288 # AM_GLIB_GNU_GETTEXT
289 # -------------------
290 # Do checks necessary for use of gettext. If a suitable implementation
291 # of gettext is found in either in libintl or in the C library,
292 # it will set INTLLIBS to the libraries needed for use of gettext
293 # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
294 # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
295 # on various variables needed by the Makefile.in.in installed by
298 glib_DEFUN([GLIB_GNU_GETTEXT],
299 [AC_REQUIRE([AC_PROG_CC])dnl
300 AC_REQUIRE([AC_HEADER_STDC])dnl
305 if test "$gt_cv_have_gettext" = "yes"; then
306 if test "x$ALL_LINGUAS" = "x"; then
309 AC_MSG_CHECKING(for catalogs to be installed)
311 for presentlang in $ALL_LINGUAS; do
313 if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
314 desiredlanguages="$LINGUAS"
316 desiredlanguages="$ALL_LINGUAS"
318 for desiredlang in $desiredlanguages; do
319 # Use the presentlang catalog if desiredlang is
320 # a. equal to presentlang, or
321 # b. a variant of presentlang (because in this case,
322 # presentlang can be used as a fallback for messages
323 # which are not translated in the desiredlang catalog).
324 case "$desiredlang" in
325 "$presentlang"*) useit=yes;;
328 if test $useit = yes; then
329 NEW_LINGUAS="$NEW_LINGUAS $presentlang"
333 AC_MSG_RESULT($LINGUAS)
336 dnl Construct list of names of catalog files to be constructed.
337 if test -n "$LINGUAS"; then
338 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
342 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
343 dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
344 dnl Try to locate is.
346 if test -n "$ac_aux_dir"; then
347 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
349 if test -z "$MKINSTALLDIRS"; then
350 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
352 AC_SUBST(MKINSTALLDIRS)
354 dnl Generate list of files to be processed by xgettext which will
355 dnl be included in po/Makefile.
356 test -d po || mkdir po
357 if test "x$srcdir" != "x."; then
358 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
359 posrcprefix="$srcdir/"
361 posrcprefix="../$srcdir/"
367 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
368 < $srcdir/po/POTFILES.in > po/POTFILES
371 # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
372 # -------------------------------
373 # Define VARIABLE to the location where catalog files will
374 # be installed by po/Makefile.
375 glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
376 [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
377 glib_save_prefix="$prefix"
378 glib_save_exec_prefix="$exec_prefix"
379 test "x$prefix" = xNONE && prefix=$ac_default_prefix
380 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
381 if test "x$CATOBJEXT" = "x.mo" ; then
382 localedir=`eval echo "${libdir}/locale"`
384 localedir=`eval echo "${datadir}/locale"`
386 prefix="$glib_save_prefix"
387 exec_prefix="$glib_save_exec_prefix"
388 AC_DEFINE_UNQUOTED($1, "$localedir",
389 [Define the location where the catalogs will be installed])
393 dnl Now the definitions that aclocal will find
395 ifdef(glib_configure_in,[],[
396 AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
397 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])