diff options
Diffstat (limited to 'm4/glib-gettext.m4')
-rw-r--r-- | m4/glib-gettext.m4 | 380 |
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 | ||
30 | AC_PREREQ(2.53) | ||
31 | |||
32 | dnl | ||
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. | ||
36 | dnl | ||
37 | m4_copy([AC_DEFUN],[glib_DEFUN]) | ||
38 | m4_copy([AC_REQUIRE],[glib_REQUIRE]) | ||
39 | dnl | ||
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. | ||
42 | dnl | ||
43 | |||
44 | # GLIB_LC_MESSAGES | ||
45 | #-------------------- | ||
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.]) | ||
55 | fi | ||
56 | fi]) | ||
57 | |||
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, | ||
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" | ||
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" | ||
86 | ])dnl | ||
87 | ;; | ||
88 | esac])dnl | ||
89 | $1="$ac_cv_path_$1" | ||
90 | if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then | ||
91 | AC_MSG_RESULT([$]$1) | ||
92 | else | ||
93 | AC_MSG_RESULT(no) | ||
94 | fi | ||
95 | AC_SUBST($1)dnl | ||
96 | ]) | ||
97 | |||
98 | # GLIB_WITH_NLS | ||
99 | #----------------- | ||
100 | glib_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. | ||
279 | dnl | ||
280 | glib_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. | ||
357 | glib_DEFUN([GLIB_DEFINE_LOCALEDIR], | ||
358 | [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl | ||
359 | glib_save_prefix="$prefix" | ||
360 | glib_save_exec_prefix="$exec_prefix" | ||
361 | test "x$prefix" = xNONE && prefix=$ac_default_prefix | ||
362 | test "x$exec_prefix" = xNONE && exec_prefix=$prefix | ||
363 | if test "x$CATOBJEXT" = "x.mo" ; then | ||
364 | localedir=`eval echo "${libdir}/locale"` | ||
365 | else | ||
366 | localedir=`eval echo "${datadir}/locale"` | ||
367 | fi | ||
368 | prefix="$glib_save_prefix" | ||
369 | exec_prefix="$glib_save_exec_prefix" | ||
370 | AC_DEFINE_UNQUOTED($1, "$localedir", | ||
371 | [Define the location where the catalogs will be installed]) | ||
372 | ]) | ||
373 | |||
374 | dnl | ||
375 | dnl Now the definitions that aclocal will find | ||
376 | dnl | ||
377 | ifdef(glib_configure_in,[],[ | ||
378 | AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) | ||
379 | AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) | ||
380 | ])dnl | ||