1 # Copyright (C) 1995-2002 Free Software Foundation, Inc.
2 # Copyright (C) 2001-2003 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
27 # We need this here as well, since someone might use autoconf-2.5x
28 # to configure GLib then an older version to configure a package
29 # using AM_GLIB_GNU_GETTEXT
33 dnl We go to great lengths to make sure that aclocal won't
34 dnl try to pull in the installed version of these macros
35 dnl when running aclocal in the glib directory.
37 m4_copy([AC_DEFUN],[glib_DEFUN])
38 m4_copy([AC_REQUIRE],[glib_REQUIRE])
40 dnl At the end, if we're not within glib, we'll define the public
41 dnl definitions in terms of our private definitions.
46 glib_DEFUN([GLIB_LC_MESSAGES],
47 [AC_CHECK_HEADERS([locale.h])
48 if test $ac_cv_header_locale_h = yes; then
49 AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
50 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
51 am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
52 if test $am_cv_val_LC_MESSAGES = yes; then
53 AC_DEFINE(HAVE_LC_MESSAGES, 1,
54 [Define if your <locale.h> file defines LC_MESSAGES.])
58 # GLIB_PATH_PROG_WITH_TEST
59 #----------------------------
60 dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
61 dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
62 glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
63 [# Extract the first word of "$2", so it can be a program name with args.
64 set dummy $2; ac_word=[$]2
65 AC_MSG_CHECKING([for $ac_word])
66 AC_CACHE_VAL(ac_cv_path_$1,
69 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
72 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
73 for ac_dir in ifelse([$5], , $PATH, [$5]); do
74 test -z "$ac_dir" && ac_dir=.
75 if test -f $ac_dir/$ac_word; then
77 ac_cv_path_$1="$ac_dir/$ac_word"
83 dnl If no 4th arg is given, leave the cache variable unset,
84 dnl so AC_PATH_PROGS will keep looking.
85 ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
90 if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
100 glib_DEFUN([GLIB_WITH_NLS],
101 dnl NLS is obligatory
105 gt_cv_have_gettext=no
111 AC_CHECK_HEADER(libintl.h,
112 [gt_cv_func_dgettext_libintl="no"
113 libintl_extra_libs=""
116 # First check in libc
118 AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
122 [return (int) dgettext ("","")],
123 gt_cv_func_dgettext_libc=yes,
124 gt_cv_func_dgettext_libc=no)
127 if test "$gt_cv_func_dgettext_libc" = "yes" ; then
128 AC_CHECK_FUNCS(bind_textdomain_codeset)
132 # If we don't have everything we want, check in libintl
134 if test "$gt_cv_func_dgettext_libc" != "yes" \
135 || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
137 AC_CHECK_LIB(intl, bindtextdomain,
138 [AC_CHECK_LIB(intl, dgettext,
139 gt_cv_func_dgettext_libintl=yes)])
141 if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
142 AC_MSG_CHECKING([if -liconv is needed to use gettext])
144 AC_CHECK_LIB(intl, dcgettext,
145 [gt_cv_func_dgettext_libintl=yes
146 libintl_extra_libs=-liconv],
151 # If we found libintl, then check in it for bind_textdomain_codeset();
152 # we'll prefer libc if neither have bind_textdomain_codeset(),
153 # and both have dgettext
155 if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
156 glib_save_LIBS="$LIBS"
157 LIBS="$LIBS -lintl $libintl_extra_libs"
158 unset ac_cv_func_bind_textdomain_codeset
159 AC_CHECK_FUNCS(bind_textdomain_codeset)
160 LIBS="$glib_save_LIBS"
162 if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
163 gt_cv_func_dgettext_libc=no
165 if test "$gt_cv_func_dgettext_libc" = "yes"; then
166 gt_cv_func_dgettext_libintl=no
172 if test "$gt_cv_func_dgettext_libc" = "yes" \
173 || test "$gt_cv_func_dgettext_libintl" = "yes"; then
174 gt_cv_have_gettext=yes
177 if test "$gt_cv_func_dgettext_libintl" = "yes"; then
178 INTLLIBS="-lintl $libintl_extra_libs"
181 if test "$gt_cv_have_gettext" = "yes"; then
182 AC_DEFINE(HAVE_GETTEXT,1,
183 [Define if the GNU gettext() function is already present or preinstalled.])
184 GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
185 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
186 if test "$MSGFMT" != "no"; then
187 AC_CHECK_FUNCS(dcgettext)
188 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
189 GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
190 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
191 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
192 return _nl_msg_cat_cntr],
197 dnl On Solaris, if bind_textdomain_codeset is in libc,
198 dnl GNU format message catalog is always supported,
199 dnl since both are added to the libc all together.
200 dnl Hence, we'd like to go with DATADIRNAME=share and
201 dnl and CATOBJEXT=.gmo in this case.
202 AC_CHECK_FUNC(bind_textdomain_codeset,
215 gt_cv_have_gettext=no
220 if test "$gt_cv_have_gettext" = "yes" ; then
221 AC_DEFINE(ENABLE_NLS, 1,
222 [always defined to indicate that i18n is enabled])
225 dnl Test whether we really found GNU xgettext.
226 if test "$XGETTEXT" != ":"; then
227 dnl If it is not GNU xgettext we define it as : so that the
228 dnl Makefiles still can work.
229 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
233 [found xgettext program is not GNU xgettext; ignore it])
238 # We need to process the po/ directory.
242 [case "$CONFIG_FILES" in *po/Makefile.in*)
243 sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
246 dnl These rules are solely for the distribution goal. While doing this
247 dnl we only have to keep exactly one list of the available catalogs
249 for lang in $ALL_LINGUAS; do
250 GMOFILES="$GMOFILES $lang.gmo"
251 POFILES="$POFILES $lang.po"
254 dnl Make all variables we use known to autoconf.
257 AC_SUBST(DATADIRNAME)
261 AC_SUBST(PO_IN_DATADIR_TRUE)
262 AC_SUBST(PO_IN_DATADIR_FALSE)
267 # AM_GLIB_GNU_GETTEXT
268 # -------------------
269 # Do checks necessary for use of gettext. If a suitable implementation
270 # of gettext is found in either in libintl or in the C library,
271 # it will set INTLLIBS to the libraries needed for use of gettext
272 # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
273 # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
274 # on various variables needed by the Makefile.in.in installed by
277 glib_DEFUN(GLIB_GNU_GETTEXT,
278 [AC_REQUIRE([AC_PROG_CC])dnl
279 AC_REQUIRE([AC_HEADER_STDC])dnl
284 if test "$gt_cv_have_gettext" = "yes"; then
285 if test "x$ALL_LINGUAS" = "x"; then
288 AC_MSG_CHECKING(for catalogs to be installed)
290 for presentlang in $ALL_LINGUAS; do
292 if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
293 desiredlanguages="$LINGUAS"
295 desiredlanguages="$ALL_LINGUAS"
297 for desiredlang in $desiredlanguages; do
298 # Use the presentlang catalog if desiredlang is
299 # a. equal to presentlang, or
300 # b. a variant of presentlang (because in this case,
301 # presentlang can be used as a fallback for messages
302 # which are not translated in the desiredlang catalog).
303 case "$desiredlang" in
304 "$presentlang"*) useit=yes;;
307 if test $useit = yes; then
308 NEW_LINGUAS="$NEW_LINGUAS $presentlang"
312 AC_MSG_RESULT($LINGUAS)
315 dnl Construct list of names of catalog files to be constructed.
316 if test -n "$LINGUAS"; then
317 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
321 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
322 dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
323 dnl Try to locate is.
325 if test -n "$ac_aux_dir"; then
326 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
328 if test -z "$MKINSTALLDIRS"; then
329 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
331 AC_SUBST(MKINSTALLDIRS)
333 dnl Generate list of files to be processed by xgettext which will
334 dnl be included in po/Makefile.
335 test -d po || mkdir po
336 if test "x$srcdir" != "x."; then
337 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
338 posrcprefix="$srcdir/"
340 posrcprefix="../$srcdir/"
346 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
347 < $srcdir/po/POTFILES.in > po/POTFILES
350 # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
351 # -------------------------------
352 # Define VARIABLE to the location where catalog files will
353 # be installed by po/Makefile.
354 glib_DEFUN(GLIB_DEFINE_LOCALEDIR,
355 [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
356 glib_save_prefix="$prefix"
357 glib_save_exec_prefix="$exec_prefix"
358 test "x$prefix" = xNONE && prefix=$ac_default_prefix
359 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
360 if test "x$CATOBJEXT" = "x.mo" ; then
361 localedir=`eval echo "${libdir}/locale"`
363 localedir=`eval echo "${datadir}/locale"`
365 prefix="$glib_save_prefix"
366 exec_prefix="$glib_save_exec_prefix"
367 AC_DEFINE_UNQUOTED($1, "$localedir",
368 [Define the location where the catalogs will be installed])
372 dnl Now the definitions that aclocal will find
374 ifdef(glib_configure_in,[],[
375 AC_DEFUN(AM_GLIB_GNU_GETTEXT,[GLIB_GNU_GETTEXT($@)])
376 AC_DEFUN(AM_GLIB_DEFINE_LOCALEDIR,[GLIB_DEFINE_LOCALEDIR($@)])