aboutsummaryrefslogtreecommitdiff
path: root/m4/glib-gettext.m4
diff options
context:
space:
mode:
authorNils Durner <durner@gnunet.org>2009-05-29 19:20:23 +0000
committerNils Durner <durner@gnunet.org>2009-05-29 19:20:23 +0000
commit179946965cc0f171e4af1bd053b42ec36314c86e (patch)
treedf49518ea91d8a644ecbd0e6a48c26c1e7fe93b3 /m4/glib-gettext.m4
parentc137702c332798fb68622739f61ae06bbf6286df (diff)
downloadgnunet-179946965cc0f171e4af1bd053b42ec36314c86e.tar.gz
gnunet-179946965cc0f171e4af1bd053b42ec36314c86e.zip
cp
Diffstat (limited to 'm4/glib-gettext.m4')
-rw-r--r--m4/glib-gettext.m4380
1 files changed, 380 insertions, 0 deletions
diff --git a/m4/glib-gettext.m4 b/m4/glib-gettext.m4
new file mode 100644
index 000000000..5a4ef2814
--- /dev/null
+++ b/m4/glib-gettext.m4
@@ -0,0 +1,380 @@
1# Copyright (C) 1995-2002 Free Software Foundation, Inc.
2# Copyright (C) 2001-2003 Red Hat, Inc.
3#
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.
9#
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.
13#
14# Macro to add for using GNU gettext.
15# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
16#
17# Modified to never use included libintl.
18# Owen Taylor <otaylor@redhat.com>, 12/15/1998
19#
20# Major rework to remove unused code
21# Owen Taylor <otaylor@redhat.com>, 12/11/2002
22#
23# Added better handling of ALL_LINGUAS from GNU gettext version
24# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
25
26#
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
30AC_PREREQ(2.53)
31
32dnl
33dnl We go to great lengths to make sure that aclocal won't
34dnl try to pull in the installed version of these macros
35dnl when running aclocal in the glib directory.
36dnl
37m4_copy([AC_DEFUN],[glib_DEFUN])
38m4_copy([AC_REQUIRE],[glib_REQUIRE])
39dnl
40dnl At the end, if we're not within glib, we'll define the public
41dnl definitions in terms of our private definitions.
42dnl
43
44# GLIB_LC_MESSAGES
45#--------------------
46glib_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.])
55 fi
56 fi])
57
58# GLIB_PATH_PROG_WITH_TEST
59#----------------------------
60dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
61dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
62glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
63[# Extract the first word of "$2", so it can be a program name with args.
64set dummy $2; ac_word=[$]2
65AC_MSG_CHECKING([for $ac_word])
66AC_CACHE_VAL(ac_cv_path_$1,
67[case "[$]$1" in
68 /*)
69 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
70 ;;
71 *)
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
76 if [$3]; then
77 ac_cv_path_$1="$ac_dir/$ac_word"
78 break
79 fi
80 fi
81 done
82 IFS="$ac_save_ifs"
83dnl If no 4th arg is given, leave the cache variable unset,
84dnl so AC_PATH_PROGS will keep looking.
85ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
86])dnl
87 ;;
88esac])dnl
89$1="$ac_cv_path_$1"
90if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
91 AC_MSG_RESULT([$]$1)
92else
93 AC_MSG_RESULT(no)
94fi
95AC_SUBST($1)dnl
96])
97
98# GLIB_WITH_NLS
99#-----------------
100glib_DEFUN([GLIB_WITH_NLS],
101 dnl NLS is obligatory
102 [USE_NLS=yes
103 AC_SUBST(USE_NLS)
104
105 gt_cv_have_gettext=no
106
107 CATOBJEXT=NONE
108 XGETTEXT=:
109 INTLLIBS=
110
111 AC_CHECK_HEADER(libintl.h,
112 [gt_cv_func_dgettext_libintl="no"
113 libintl_extra_libs=""
114
115 #
116 # First check in libc
117 #
118 AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
119 [AC_TRY_LINK([
120#include <libintl.h>
121],
122 [return (int) dgettext ("","")],
123 gt_cv_func_dgettext_libc=yes,
124 gt_cv_func_dgettext_libc=no)
125 ])
126
127 if test "$gt_cv_func_dgettext_libc" = "yes" ; then
128 AC_CHECK_FUNCS(bind_textdomain_codeset)
129 fi
130
131 #
132 # If we don't have everything we want, check in libintl
133 #
134 if test "$gt_cv_func_dgettext_libc" != "yes" \
135 || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
136
137 AC_CHECK_LIB(intl, bindtextdomain,
138 [AC_CHECK_LIB(intl, dgettext,
139 gt_cv_func_dgettext_libintl=yes)])
140
141 if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
142 AC_MSG_CHECKING([if -liconv is needed to use gettext])
143 AC_MSG_RESULT([])
144 AC_CHECK_LIB(intl, dcgettext,
145 [gt_cv_func_dgettext_libintl=yes
146 libintl_extra_libs=-liconv],
147 :,-liconv)
148 fi
149
150 #
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
154 #
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"
161
162 if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
163 gt_cv_func_dgettext_libc=no
164 else
165 if test "$gt_cv_func_dgettext_libc" = "yes"; then
166 gt_cv_func_dgettext_libintl=no
167 fi
168 fi
169 fi
170 fi
171
172 if test "$gt_cv_func_dgettext_libc" = "yes" \
173 || test "$gt_cv_func_dgettext_libintl" = "yes"; then
174 gt_cv_have_gettext=yes
175 fi
176
177 if test "$gt_cv_func_dgettext_libintl" = "yes"; then
178 INTLLIBS="-lintl $libintl_extra_libs"
179 fi
180
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 glib_save_LIBS="$LIBS"
188 LIBS="$LIBS $INTLLIBS"
189 AC_CHECK_FUNCS(dcgettext)
190 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
191 GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
192 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
193 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
194 return _nl_msg_cat_cntr],
195 [CATOBJEXT=.gmo
196 DATADIRNAME=share],
197 [case $host in
198 *-*-solaris*)
199 dnl On Solaris, if bind_textdomain_codeset is in libc,
200 dnl GNU format message catalog is always supported,
201 dnl since both are added to the libc all together.
202 dnl Hence, we'd like to go with DATADIRNAME=share and
203 dnl and CATOBJEXT=.gmo in this case.
204 AC_CHECK_FUNC(bind_textdomain_codeset,
205 [CATOBJEXT=.gmo
206 DATADIRNAME=share],
207 [CATOBJEXT=.mo
208 DATADIRNAME=lib])
209 ;;
210 *)
211 CATOBJEXT=.mo
212 DATADIRNAME=lib
213 ;;
214 esac])
215 LIBS="$glib_save_LIBS"
216 INSTOBJEXT=.mo
217 else
218 gt_cv_have_gettext=no
219 fi
220 fi
221 ])
222
223 if test "$gt_cv_have_gettext" = "yes" ; then
224 AC_DEFINE(ENABLE_NLS, 1,
225 [always defined to indicate that i18n is enabled])
226 fi
227
228 dnl Test whether we really found GNU xgettext.
229 if test "$XGETTEXT" != ":"; then
230 dnl If it is not GNU xgettext we define it as : so that the
231 dnl Makefiles still can work.
232 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
233 : ;
234 else
235 AC_MSG_RESULT(
236 [found xgettext program is not GNU xgettext; ignore it])
237 XGETTEXT=":"
238 fi
239 fi
240
241 # We need to process the po/ directory.
242 POSUB=po
243
244 AC_OUTPUT_COMMANDS(
245 [case "$CONFIG_FILES" in *po/Makefile.in*)
246 sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
247 esac])
248
249 dnl These rules are solely for the distribution goal. While doing this
250 dnl we only have to keep exactly one list of the available catalogs
251 dnl in configure.in.
252 for lang in $ALL_LINGUAS; do
253 GMOFILES="$GMOFILES $lang.gmo"
254 POFILES="$POFILES $lang.po"
255 done
256
257 dnl Make all variables we use known to autoconf.
258 AC_SUBST(CATALOGS)
259 AC_SUBST(CATOBJEXT)
260 AC_SUBST(DATADIRNAME)
261 AC_SUBST(GMOFILES)
262 AC_SUBST(INSTOBJEXT)
263 AC_SUBST(INTLLIBS)
264 AC_SUBST(PO_IN_DATADIR_TRUE)
265 AC_SUBST(PO_IN_DATADIR_FALSE)
266 AC_SUBST(POFILES)
267 AC_SUBST(POSUB)
268 ])
269
270# AM_GLIB_GNU_GETTEXT
271# -------------------
272# Do checks necessary for use of gettext. If a suitable implementation
273# of gettext is found in either in libintl or in the C library,
274# it will set INTLLIBS to the libraries needed for use of gettext
275# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
276# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
277# on various variables needed by the Makefile.in.in installed by
278# glib-gettextize.
279dnl
280glib_DEFUN([GLIB_GNU_GETTEXT],
281 [AC_REQUIRE([AC_PROG_CC])dnl
282 AC_REQUIRE([AC_HEADER_STDC])dnl
283
284 GLIB_LC_MESSAGES
285 GLIB_WITH_NLS
286
287 if test "$gt_cv_have_gettext" = "yes"; then
288 if test "x$ALL_LINGUAS" = "x"; then
289 LINGUAS=
290 else
291 AC_MSG_CHECKING(for catalogs to be installed)
292 NEW_LINGUAS=
293 for presentlang in $ALL_LINGUAS; do
294 useit=no
295 if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
296 desiredlanguages="$LINGUAS"
297 else
298 desiredlanguages="$ALL_LINGUAS"
299 fi
300 for desiredlang in $desiredlanguages; do
301 # Use the presentlang catalog if desiredlang is
302 # a. equal to presentlang, or
303 # b. a variant of presentlang (because in this case,
304 # presentlang can be used as a fallback for messages
305 # which are not translated in the desiredlang catalog).
306 case "$desiredlang" in
307 "$presentlang"*) useit=yes;;
308 esac
309 done
310 if test $useit = yes; then
311 NEW_LINGUAS="$NEW_LINGUAS $presentlang"
312 fi
313 done
314 LINGUAS=$NEW_LINGUAS
315 AC_MSG_RESULT($LINGUAS)
316 fi
317
318 dnl Construct list of names of catalog files to be constructed.
319 if test -n "$LINGUAS"; then
320 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
321 fi
322 fi
323
324 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
325 dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
326 dnl Try to locate is.
327 MKINSTALLDIRS=
328 if test -n "$ac_aux_dir"; then
329 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
330 fi
331 if test -z "$MKINSTALLDIRS"; then
332 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
333 fi
334 AC_SUBST(MKINSTALLDIRS)
335
336 dnl Generate list of files to be processed by xgettext which will
337 dnl be included in po/Makefile.
338 test -d po || mkdir po
339 if test "x$srcdir" != "x."; then
340 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
341 posrcprefix="$srcdir/"
342 else
343 posrcprefix="../$srcdir/"
344 fi
345 else
346 posrcprefix="../"
347 fi
348 rm -f po/POTFILES
349 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
350 < $srcdir/po/POTFILES.in > po/POTFILES
351 ])
352
353# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
354# -------------------------------
355# Define VARIABLE to the location where catalog files will
356# be installed by po/Makefile.
357glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
358[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
359glib_save_prefix="$prefix"
360glib_save_exec_prefix="$exec_prefix"
361test "x$prefix" = xNONE && prefix=$ac_default_prefix
362test "x$exec_prefix" = xNONE && exec_prefix=$prefix
363if test "x$CATOBJEXT" = "x.mo" ; then
364 localedir=`eval echo "${libdir}/locale"`
365else
366 localedir=`eval echo "${datadir}/locale"`
367fi
368prefix="$glib_save_prefix"
369exec_prefix="$glib_save_exec_prefix"
370AC_DEFINE_UNQUOTED($1, "$localedir",
371 [Define the location where the catalogs will be installed])
372])
373
374dnl
375dnl Now the definitions that aclocal will find
376dnl
377ifdef(glib_configure_in,[],[
378AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
379AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
380])dnl