1 | # Copyright (C) 1995-2002 Free Software Foundation, Inc. |
---|
2 | # Copyright (C) 2001-2003,2004 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 | # Modified to require ngettext |
---|
27 | # Matthias Clasen <mclasen@redhat.com> 08/06/2004 |
---|
28 | # |
---|
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 |
---|
32 | AC_PREREQ(2.53) |
---|
33 | |
---|
34 | dnl |
---|
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. |
---|
38 | dnl |
---|
39 | m4_copy([AC_DEFUN],[glib_DEFUN]) |
---|
40 | m4_copy([AC_REQUIRE],[glib_REQUIRE]) |
---|
41 | dnl |
---|
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. |
---|
44 | dnl |
---|
45 | |
---|
46 | # GLIB_LC_MESSAGES |
---|
47 | #-------------------- |
---|
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.]) |
---|
57 | fi |
---|
58 | fi]) |
---|
59 | |
---|
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, |
---|
69 | [case "[$]$1" in |
---|
70 | /*) |
---|
71 | ac_cv_path_$1="[$]$1" # Let the user override the test with a path. |
---|
72 | ;; |
---|
73 | *) |
---|
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 |
---|
78 | if [$3]; then |
---|
79 | ac_cv_path_$1="$ac_dir/$ac_word" |
---|
80 | break |
---|
81 | fi |
---|
82 | fi |
---|
83 | done |
---|
84 | IFS="$ac_save_ifs" |
---|
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" |
---|
88 | ])dnl |
---|
89 | ;; |
---|
90 | esac])dnl |
---|
91 | $1="$ac_cv_path_$1" |
---|
92 | if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then |
---|
93 | AC_MSG_RESULT([$]$1) |
---|
94 | else |
---|
95 | AC_MSG_RESULT(no) |
---|
96 | fi |
---|
97 | AC_SUBST($1)dnl |
---|
98 | ]) |
---|
99 | |
---|
100 | # GLIB_WITH_NLS |
---|
101 | #----------------- |
---|
102 | glib_DEFUN([GLIB_WITH_NLS], |
---|
103 | dnl NLS is obligatory |
---|
104 | [USE_NLS=yes |
---|
105 | AC_SUBST(USE_NLS) |
---|
106 | |
---|
107 | gt_cv_have_gettext=no |
---|
108 | |
---|
109 | CATOBJEXT=NONE |
---|
110 | XGETTEXT=: |
---|
111 | INTLLIBS= |
---|
112 | |
---|
113 | AC_CHECK_HEADER(libintl.h, |
---|
114 | [gt_cv_func_dgettext_libintl="no" |
---|
115 | libintl_extra_libs="" |
---|
116 | |
---|
117 | # |
---|
118 | # First check in libc |
---|
119 | # |
---|
120 | AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, |
---|
121 | [AC_TRY_LINK([ |
---|
122 | #include <libintl.h> |
---|
123 | ], |
---|
124 | [return !ngettext ("","", 1)], |
---|
125 | gt_cv_func_ngettext_libc=yes, |
---|
126 | gt_cv_func_ngettext_libc=no) |
---|
127 | ]) |
---|
128 | |
---|
129 | if test "$gt_cv_func_ngettext_libc" = "yes" ; then |
---|
130 | AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, |
---|
131 | [AC_TRY_LINK([ |
---|
132 | #include <libintl.h> |
---|
133 | ], |
---|
134 | [return !dgettext ("","")], |
---|
135 | gt_cv_func_dgettext_libc=yes, |
---|
136 | gt_cv_func_dgettext_libc=no) |
---|
137 | ]) |
---|
138 | fi |
---|
139 | |
---|
140 | if test "$gt_cv_func_ngettext_libc" = "yes" ; then |
---|
141 | AC_CHECK_FUNCS(bind_textdomain_codeset) |
---|
142 | fi |
---|
143 | |
---|
144 | # |
---|
145 | # If we don't have everything we want, check in libintl |
---|
146 | # |
---|
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 |
---|
150 | |
---|
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)])]) |
---|
155 | |
---|
156 | if test "$gt_cv_func_dgettext_libintl" != "yes" ; then |
---|
157 | AC_MSG_CHECKING([if -liconv is needed to use gettext]) |
---|
158 | AC_MSG_RESULT([]) |
---|
159 | AC_CHECK_LIB(intl, ngettext, |
---|
160 | [AC_CHECK_LIB(intl, dcgettext, |
---|
161 | [gt_cv_func_dgettext_libintl=yes |
---|
162 | libintl_extra_libs=-liconv], |
---|
163 | :,-liconv)], |
---|
164 | :,-liconv) |
---|
165 | fi |
---|
166 | |
---|
167 | # |
---|
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 |
---|
171 | # |
---|
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" |
---|
178 | |
---|
179 | if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then |
---|
180 | gt_cv_func_dgettext_libc=no |
---|
181 | else |
---|
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 |
---|
185 | fi |
---|
186 | fi |
---|
187 | fi |
---|
188 | fi |
---|
189 | |
---|
190 | if test "$gt_cv_func_dgettext_libc" = "yes" \ |
---|
191 | || test "$gt_cv_func_dgettext_libintl" = "yes"; then |
---|
192 | gt_cv_have_gettext=yes |
---|
193 | fi |
---|
194 | |
---|
195 | if test "$gt_cv_func_dgettext_libintl" = "yes"; then |
---|
196 | INTLLIBS="-lintl $libintl_extra_libs" |
---|
197 | fi |
---|
198 | |
---|
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 | MSGFMT_OPTS= |
---|
209 | AC_MSG_CHECKING([if msgfmt accepts -c]) |
---|
210 | GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ |
---|
211 | msgid "" |
---|
212 | msgstr "" |
---|
213 | "Content-Type: text/plain; charset=UTF-8\n" |
---|
214 | "Project-Id-Version: test 1.0\n" |
---|
215 | "PO-Revision-Date: 2007-02-15 12:01+0100\n" |
---|
216 | "Last-Translator: test <foo@bar.xx>\n" |
---|
217 | "Language-Team: C <LL@li.org>\n" |
---|
218 | "MIME-Version: 1.0\n" |
---|
219 | "Content-Transfer-Encoding: 8bit\n" |
---|
220 | ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) |
---|
221 | AC_SUBST(MSGFMT_OPTS) |
---|
222 | AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) |
---|
223 | GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, |
---|
224 | [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) |
---|
225 | AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; |
---|
226 | return _nl_msg_cat_cntr], |
---|
227 | [CATOBJEXT=.gmo |
---|
228 | DATADIRNAME=share], |
---|
229 | [case $host in |
---|
230 | *-*-solaris*) |
---|
231 | dnl On Solaris, if bind_textdomain_codeset is in libc, |
---|
232 | dnl GNU format message catalog is always supported, |
---|
233 | dnl since both are added to the libc all together. |
---|
234 | dnl Hence, we'd like to go with DATADIRNAME=share and |
---|
235 | dnl and CATOBJEXT=.gmo in this case. |
---|
236 | AC_CHECK_FUNC(bind_textdomain_codeset, |
---|
237 | [CATOBJEXT=.gmo |
---|
238 | DATADIRNAME=share], |
---|
239 | [CATOBJEXT=.mo |
---|
240 | DATADIRNAME=lib]) |
---|
241 | ;; |
---|
242 | *) |
---|
243 | CATOBJEXT=.mo |
---|
244 | DATADIRNAME=lib |
---|
245 | ;; |
---|
246 | esac]) |
---|
247 | LIBS="$glib_save_LIBS" |
---|
248 | INSTOBJEXT=.mo |
---|
249 | else |
---|
250 | gt_cv_have_gettext=no |
---|
251 | fi |
---|
252 | fi |
---|
253 | ]) |
---|
254 | |
---|
255 | if test "$gt_cv_have_gettext" = "yes" ; then |
---|
256 | AC_DEFINE(ENABLE_NLS, 1, |
---|
257 | [always defined to indicate that i18n is enabled]) |
---|
258 | fi |
---|
259 | |
---|
260 | dnl Test whether we really found GNU xgettext. |
---|
261 | if test "$XGETTEXT" != ":"; then |
---|
262 | dnl If it is not GNU xgettext we define it as : so that the |
---|
263 | dnl Makefiles still can work. |
---|
264 | if $XGETTEXT --omit-header /dev/null 2> /dev/null; then |
---|
265 | : ; |
---|
266 | else |
---|
267 | AC_MSG_RESULT( |
---|
268 | [found xgettext program is not GNU xgettext; ignore it]) |
---|
269 | XGETTEXT=":" |
---|
270 | fi |
---|
271 | fi |
---|
272 | |
---|
273 | # We need to process the po/ directory. |
---|
274 | POSUB=po |
---|
275 | |
---|
276 | AC_OUTPUT_COMMANDS( |
---|
277 | [case "$CONFIG_FILES" in *po/Makefile.in*) |
---|
278 | sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile |
---|
279 | esac]) |
---|
280 | |
---|
281 | dnl These rules are solely for the distribution goal. While doing this |
---|
282 | dnl we only have to keep exactly one list of the available catalogs |
---|
283 | dnl in configure.ac. |
---|
284 | for lang in $ALL_LINGUAS; do |
---|
285 | GMOFILES="$GMOFILES $lang.gmo" |
---|
286 | POFILES="$POFILES $lang.po" |
---|
287 | done |
---|
288 | |
---|
289 | dnl Make all variables we use known to autoconf. |
---|
290 | AC_SUBST(CATALOGS) |
---|
291 | AC_SUBST(CATOBJEXT) |
---|
292 | AC_SUBST(DATADIRNAME) |
---|
293 | AC_SUBST(GMOFILES) |
---|
294 | AC_SUBST(INSTOBJEXT) |
---|
295 | AC_SUBST(INTLLIBS) |
---|
296 | AC_SUBST(PO_IN_DATADIR_TRUE) |
---|
297 | AC_SUBST(PO_IN_DATADIR_FALSE) |
---|
298 | AC_SUBST(POFILES) |
---|
299 | AC_SUBST(POSUB) |
---|
300 | ]) |
---|
301 | |
---|
302 | # AM_GLIB_GNU_GETTEXT |
---|
303 | # ------------------- |
---|
304 | # Do checks necessary for use of gettext. If a suitable implementation |
---|
305 | # of gettext is found in either in libintl or in the C library, |
---|
306 | # it will set INTLLIBS to the libraries needed for use of gettext |
---|
307 | # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable |
---|
308 | # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() |
---|
309 | # on various variables needed by the Makefile.in.in installed by |
---|
310 | # glib-gettextize. |
---|
311 | dnl |
---|
312 | glib_DEFUN([GLIB_GNU_GETTEXT], |
---|
313 | [AC_REQUIRE([AC_PROG_CC])dnl |
---|
314 | AC_REQUIRE([AC_HEADER_STDC])dnl |
---|
315 | |
---|
316 | GLIB_LC_MESSAGES |
---|
317 | GLIB_WITH_NLS |
---|
318 | |
---|
319 | if test "$gt_cv_have_gettext" = "yes"; then |
---|
320 | if test "x$ALL_LINGUAS" = "x"; then |
---|
321 | LINGUAS= |
---|
322 | else |
---|
323 | AC_MSG_CHECKING(for catalogs to be installed) |
---|
324 | NEW_LINGUAS= |
---|
325 | for presentlang in $ALL_LINGUAS; do |
---|
326 | useit=no |
---|
327 | if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then |
---|
328 | desiredlanguages="$LINGUAS" |
---|
329 | else |
---|
330 | desiredlanguages="$ALL_LINGUAS" |
---|
331 | fi |
---|
332 | for desiredlang in $desiredlanguages; do |
---|
333 | # Use the presentlang catalog if desiredlang is |
---|
334 | # a. equal to presentlang, or |
---|
335 | # b. a variant of presentlang (because in this case, |
---|
336 | # presentlang can be used as a fallback for messages |
---|
337 | # which are not translated in the desiredlang catalog). |
---|
338 | case "$desiredlang" in |
---|
339 | "$presentlang"*) useit=yes;; |
---|
340 | esac |
---|
341 | done |
---|
342 | if test $useit = yes; then |
---|
343 | NEW_LINGUAS="$NEW_LINGUAS $presentlang" |
---|
344 | fi |
---|
345 | done |
---|
346 | LINGUAS=$NEW_LINGUAS |
---|
347 | AC_MSG_RESULT($LINGUAS) |
---|
348 | fi |
---|
349 | |
---|
350 | dnl Construct list of names of catalog files to be constructed. |
---|
351 | if test -n "$LINGUAS"; then |
---|
352 | for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done |
---|
353 | fi |
---|
354 | fi |
---|
355 | |
---|
356 | dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly |
---|
357 | dnl find the mkinstalldirs script in another subdir but ($top_srcdir). |
---|
358 | dnl Try to locate is. |
---|
359 | MKINSTALLDIRS= |
---|
360 | if test -n "$ac_aux_dir"; then |
---|
361 | MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" |
---|
362 | fi |
---|
363 | if test -z "$MKINSTALLDIRS"; then |
---|
364 | MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" |
---|
365 | fi |
---|
366 | AC_SUBST(MKINSTALLDIRS) |
---|
367 | |
---|
368 | dnl Generate list of files to be processed by xgettext which will |
---|
369 | dnl be included in po/Makefile. |
---|
370 | test -d po || mkdir po |
---|
371 | if test "x$srcdir" != "x."; then |
---|
372 | if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then |
---|
373 | posrcprefix="$srcdir/" |
---|
374 | else |
---|
375 | posrcprefix="../$srcdir/" |
---|
376 | fi |
---|
377 | else |
---|
378 | posrcprefix="../" |
---|
379 | fi |
---|
380 | rm -f po/POTFILES |
---|
381 | sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ |
---|
382 | < $srcdir/po/POTFILES.in > po/POTFILES |
---|
383 | ]) |
---|
384 | |
---|
385 | # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) |
---|
386 | # ------------------------------- |
---|
387 | # Define VARIABLE to the location where catalog files will |
---|
388 | # be installed by po/Makefile. |
---|
389 | glib_DEFUN([GLIB_DEFINE_LOCALEDIR], |
---|
390 | [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl |
---|
391 | glib_save_prefix="$prefix" |
---|
392 | glib_save_exec_prefix="$exec_prefix" |
---|
393 | glib_save_datarootdir="$datarootdir" |
---|
394 | test "x$prefix" = xNONE && prefix=$ac_default_prefix |
---|
395 | test "x$exec_prefix" = xNONE && exec_prefix=$prefix |
---|
396 | datarootdir=`eval echo "${datarootdir}"` |
---|
397 | if test "x$CATOBJEXT" = "x.mo" ; then |
---|
398 | localedir=`eval echo "${libdir}/locale"` |
---|
399 | else |
---|
400 | localedir=`eval echo "${datadir}/locale"` |
---|
401 | fi |
---|
402 | prefix="$glib_save_prefix" |
---|
403 | exec_prefix="$glib_save_exec_prefix" |
---|
404 | datarootdir="$glib_save_datarootdir" |
---|
405 | AC_DEFINE_UNQUOTED($1, "$localedir", |
---|
406 | [Define the location where the catalogs will be installed]) |
---|
407 | ]) |
---|
408 | |
---|
409 | dnl |
---|
410 | dnl Now the definitions that aclocal will find |
---|
411 | dnl |
---|
412 | ifdef(glib_configure_ac,[],[ |
---|
413 | AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) |
---|
414 | AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) |
---|
415 | ])dnl |
---|
416 | |
---|
417 | # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) |
---|
418 | # |
---|
419 | # Create a temporary file with TEST-FILE as its contents and pass the |
---|
420 | # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with |
---|
421 | # 0 and perform ACTION-IF-FAIL for any other exit status. |
---|
422 | AC_DEFUN([GLIB_RUN_PROG], |
---|
423 | [cat >conftest.foo <<_ACEOF |
---|
424 | $2 |
---|
425 | _ACEOF |
---|
426 | if AC_RUN_LOG([$1 conftest.foo]); then |
---|
427 | m4_ifval([$3], [$3], [:]) |
---|
428 | m4_ifvaln([$4], [else $4])dnl |
---|
429 | echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD |
---|
430 | sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD |
---|
431 | fi]) |
---|
432 | |
---|