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.
231 AC_SUBST(PO_IN_DATADIR_TRUE)
232 AC_SUBST(PO_IN_DATADIR_FALSE)
237 # AM_GLIB_GNU_GETTEXT
238 # -------------------
239 # Do checks necessary for use of gettext. If a suitable implementation
240 # of gettext is found in either in libintl or in the C library,
241 # it will set INTLLIBS to the libraries needed for use of gettext
242 # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
243 # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
244 # on various variables needed by the Makefile.in.in installed by
247 glib_DEFUN(GLIB_GNU_GETTEXT,
248 [AC_REQUIRE([AC_PROG_CC])dnl
249 AC_REQUIRE([AC_HEADER_STDC])dnl
254 if test "$gt_cv_have_gettext" = "yes"; then
255 if test "x$ALL_LINGUAS" = "x"; then
258 AC_MSG_CHECKING(for catalogs to be installed)
260 for lang in ${LINGUAS=$ALL_LINGUAS}; do
261 case "$ALL_LINGUAS" in
262 *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
266 AC_MSG_RESULT($LINGUAS)
269 dnl Construct list of names of catalog files to be constructed.
270 if test -n "$LINGUAS"; then
271 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
275 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
276 dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
277 dnl Try to locate is.
279 if test -n "$ac_aux_dir"; then
280 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
282 if test -z "$MKINSTALLDIRS"; then
283 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
285 AC_SUBST(MKINSTALLDIRS)
287 dnl Generate list of files to be processed by xgettext which will
288 dnl be included in po/Makefile.
289 test -d po || mkdir po
290 if test "x$srcdir" != "x."; then
291 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
292 posrcprefix="$srcdir/"
294 posrcprefix="../$srcdir/"
300 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
301 < $srcdir/po/POTFILES.in > po/POTFILES
304 # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
305 # -------------------------------
306 # Define VARIABLE to the location where catalog files will
307 # be installed by po/Makefile.
308 glib_DEFUN(GLIB_DEFINE_LOCALEDIR,
309 [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
310 glib_save_prefix="$prefix"
311 test "x$prefix" = xNONE && prefix=$ac_default_prefix
312 if test "x$CATOBJEXT" = "x.mo" ; then
313 localedir=`eval echo "${libdir}/locale"`
315 localedir=`eval echo "${datadir}/locale"`
317 prefix="$glib_save_prefix"
318 AC_DEFINE_UNQUOTED($1, "$localedir",
319 [Define the location where the catalogs will be installed])
323 dnl Now the definitions that aclocal will find
325 ifdef(glib_configure_in,[],[
326 AC_DEFUN(AM_GLIB_GNU_GETTEXT,[GLIB_GNU_GETTEXT($@)])
327 AC_DEFUN(AM_GLIB_DEFINE_LOCALEDIR,[GLIB_DEFINE_LOCALEDIR($@)])