202.3.1
by Monty Taylor
Added very initial gettextize stuff. |
1 |
# gettext.m4 serial 60 (gettext-0.17) |
2 |
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. |
|
3 |
dnl This file is free software; the Free Software Foundation |
|
4 |
dnl gives unlimited permission to copy and/or distribute it, |
|
5 |
dnl with or without modifications, as long as this notice is preserved. |
|
6 |
dnl
|
|
7 |
dnl This file can can be used in projects which are not available under |
|
8 |
dnl the GNU General Public License or the GNU Library General Public |
|
9 |
dnl License but which still want to provide support for the GNU gettext |
|
10 |
dnl functionality. |
|
11 |
dnl Please note that the actual code of the GNU gettext library is covered |
|
12 |
dnl by the GNU Library General Public License, and the rest of the GNU |
|
13 |
dnl gettext package package is covered by the GNU General Public License. |
|
14 |
dnl They are *not* in the public domain. |
|
15 |
||
16 |
dnl Authors: |
|
17 |
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. |
|
18 |
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. |
|
19 |
||
20 |
dnl Macro to add for using GNU gettext. |
|
21 |
||
22 |
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). |
|
23 |
dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The |
|
24 |
dnl default (if it is not specified or empty) is 'no-libtool'. |
|
25 |
dnl INTLSYMBOL should be 'external' for packages with no intl directory, |
|
26 |
dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. |
|
27 |
dnl If INTLSYMBOL is 'use-libtool', then a libtool library |
|
28 |
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, |
|
29 |
dnl depending on --{enable,disable}-{shared,static} and on the presence of |
|
30 |
dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library |
|
31 |
dnl $(top_builddir)/intl/libintl.a will be created. |
|
32 |
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext |
|
33 |
dnl implementations (in libc or libintl) without the ngettext() function |
|
34 |
dnl will be ignored. If NEEDSYMBOL is specified and is |
|
35 |
dnl 'need-formatstring-macros', then GNU gettext implementations that don't |
|
36 |
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
|
|
37 |
dnl INTLDIR is used to find the intl libraries. If empty,
|
|
38 |
dnl the value `$(top_builddir)/intl/' is used. |
|
39 |
dnl
|
|
40 |
dnl The result of the configuration is one of three cases: |
|
41 |
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled |
|
42 |
dnl and used. |
|
43 |
dnl Catalog format: GNU --> install in $(datadir) |
|
44 |
dnl Catalog extension: .mo after installation, .gmo in source tree |
|
45 |
dnl 2) GNU gettext has been found in the system's C library. |
|
46 |
dnl Catalog format: GNU --> install in $(datadir)
|
|
47 |
dnl Catalog extension: .mo after installation, .gmo in source tree
|
|
48 |
dnl 3) No internationalization, always use English msgid.
|
|
49 |
dnl Catalog format: none
|
|
50 |
dnl Catalog extension: none
|
|
51 |
dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. |
|
52 |
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
|
53 |
dnl GNU format catalogs when building on a platform with an X/Open gettext),
|
|
54 |
dnl but we keep it in order not to force irrelevant filename changes on the
|
|
55 |
dnl maintainers.
|
|
56 |
dnl
|
|
57 |
AC_DEFUN([AM_GNU_GETTEXT],
|
|
58 |
[
|
|
59 |
dnl Argument checking.
|
|
60 |
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
|
61 |
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
|
62 |
])])])])])
|
|
63 |
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
|
|
64 |
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
|
65 |
])])])])
|
|
66 |
define([gt_included_intl],
|
|
67 |
ifelse([$1], [external],
|
|
68 |
ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
|
|
69 |
[yes]))
|
|
70 |
define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
|
|
71 |
gt_NEEDS_INIT
|
|
72 |
AM_GNU_GETTEXT_NEED([$2])
|
|
73 |
||
74 |
AC_REQUIRE([AM_PO_SUBDIRS])dnl
|
|
75 |
ifelse(gt_included_intl, yes, [
|
|
76 |
AC_REQUIRE([AM_INTL_SUBDIR])dnl
|
|
77 |
])
|
|
78 |
||
79 |
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
|
80 |
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
81 |
AC_REQUIRE([AC_LIB_RPATH])
|
|
82 |
||
83 |
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
|
84 |
dnl Ideally we would do this search only after the
|
|
85 |
dnl if test "$USE_NLS" = "yes"; then
|
|
86 |
dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
|
87 |
dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
|
|
88 |
dnl the configure script would need to contain the same shell code
|
|
89 |
dnl again, outside any 'if'. There are two solutions: |
|
90 |
dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. |
|
91 |
dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
|
|
92 |
dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
|
|
93 |
dnl documented, we avoid it.
|
|
94 |
ifelse(gt_included_intl, yes, , [
|
|
95 |
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
|
96 |
])
|
|
97 |
||
98 |
dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
|
|
99 |
gt_INTL_MACOSX
|
|
100 |
||
101 |
dnl Set USE_NLS.
|
|
102 |
AC_REQUIRE([AM_NLS])
|
|
103 |
||
104 |
ifelse(gt_included_intl, yes, [
|
|
105 |
BUILD_INCLUDED_LIBINTL=no
|
|
106 |
USE_INCLUDED_LIBINTL=no
|
|
107 |
])
|
|
108 |
LIBINTL=
|
|
109 |
LTLIBINTL=
|
|
110 |
POSUB=
|
|
111 |
||
112 |
dnl Add a version number to the cache macros.
|
|
113 |
case " $gt_needs " in
|
|
114 |
*" need-formatstring-macros "*) gt_api_version=3 ;;
|
|
115 |
*" need-ngettext "*) gt_api_version=2 ;;
|
|
116 |
*) gt_api_version=1 ;;
|
|
117 |
esac
|
|
118 |
gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
|
|
119 |
gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
|
|
120 |
||
121 |
dnl If we use NLS figure out what method
|
|
122 |
if test "$USE_NLS" = "yes"; then
|
|
123 |
gt_use_preinstalled_gnugettext=no
|
|
124 |
ifelse(gt_included_intl, yes, [
|
|
125 |
AC_MSG_CHECKING([whether included gettext is requested])
|
|
126 |
AC_ARG_WITH(included-gettext,
|
|
127 |
[ --with-included-gettext use the GNU gettext library included here],
|
|
128 |
nls_cv_force_use_gnu_gettext=$withval,
|
|
129 |
nls_cv_force_use_gnu_gettext=no)
|
|
130 |
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
|
|
131 |
||
132 |
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
|
133 |
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
|
134 |
])
|
|
135 |
dnl User does not insist on using GNU NLS library. Figure out what
|
|
136 |
dnl to use. If GNU gettext is available we use this. Else we have
|
|
137 |
dnl to fall back to GNU NLS library.
|
|
138 |
||
139 |
if test $gt_api_version -ge 3; then
|
|
140 |
gt_revision_test_code='
|
|
141 |
#ifndef __GNU_GETTEXT_SUPPORTED_REVISION |
|
142 |
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) |
|
143 |
#endif
|
|
144 |
changequote(,)dnl |
|
145 |
typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; |
|
146 |
changequote([,])dnl |
|
147 |
'
|
|
148 |
else
|
|
149 |
gt_revision_test_code=
|
|
150 |
fi
|
|
151 |
if test $gt_api_version -ge 2; then
|
|
152 |
gt_expression_test_code=' + * ngettext ("", "", 0)' |
|
153 |
else
|
|
154 |
gt_expression_test_code=
|
|
155 |
fi
|
|
156 |
||
157 |
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
|
|
158 |
[AC_TRY_LINK([#include <libintl.h>
|
|
159 |
$gt_revision_test_code
|
|
160 |
extern int _nl_msg_cat_cntr;
|
|
161 |
extern int *_nl_domain_bindings;],
|
|
162 |
[bindtextdomain ("", "");
|
|
163 |
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
|
|
164 |
[eval "$gt_func_gnugettext_libc=yes"],
|
|
165 |
[eval "$gt_func_gnugettext_libc=no"])])
|
|
166 |
||
167 |
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
|
168 |
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
|
169 |
ifelse(gt_included_intl, yes, , [
|
|
170 |
AM_ICONV_LINK
|
|
171 |
])
|
|
172 |
dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
|
|
173 |
dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) |
|
174 |
dnl because that would add "-liconv" to LIBINTL and LTLIBINTL |
|
175 |
dnl even if libiconv doesn't exist. |
|
176 |
AC_LIB_LINKFLAGS_BODY([intl])
|
|
177 |
AC_CACHE_CHECK([for GNU gettext in libintl],
|
|
178 |
[$gt_func_gnugettext_libintl],
|
|
179 |
[gt_save_CPPFLAGS="$CPPFLAGS"
|
|
180 |
CPPFLAGS="$CPPFLAGS $INCINTL"
|
|
181 |
gt_save_LIBS="$LIBS"
|
|
182 |
LIBS="$LIBS $LIBINTL"
|
|
183 |
dnl Now see whether libintl exists and does not depend on libiconv.
|
|
184 |
AC_TRY_LINK([#include <libintl.h>
|
|
185 |
$gt_revision_test_code
|
|
186 |
extern int _nl_msg_cat_cntr;
|
|
187 |
extern
|
|
188 |
#ifdef __cplusplus
|
|
189 |
"C"
|
|
190 |
#endif
|
|
191 |
const char *_nl_expand_alias (const char *);],
|
|
192 |
[bindtextdomain ("", "");
|
|
193 |
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
|
194 |
[eval "$gt_func_gnugettext_libintl=yes"],
|
|
195 |
[eval "$gt_func_gnugettext_libintl=no"])
|
|
196 |
dnl Now see whether libintl exists and depends on libiconv.
|
|
197 |
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
|
|
198 |
LIBS="$LIBS $LIBICONV"
|
|
199 |
AC_TRY_LINK([#include <libintl.h>
|
|
200 |
$gt_revision_test_code
|
|
201 |
extern int _nl_msg_cat_cntr;
|
|
202 |
extern
|
|
203 |
#ifdef __cplusplus
|
|
204 |
"C"
|
|
205 |
#endif
|
|
206 |
const char *_nl_expand_alias (const char *);],
|
|
207 |
[bindtextdomain ("", "");
|
|
208 |
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
|
209 |
[LIBINTL="$LIBINTL $LIBICONV"
|
|
210 |
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
|
211 |
eval "$gt_func_gnugettext_libintl=yes"
|
|
212 |
])
|
|
213 |
fi
|
|
214 |
CPPFLAGS="$gt_save_CPPFLAGS"
|
|
215 |
LIBS="$gt_save_LIBS"])
|
|
216 |
fi
|
|
217 |
||
218 |
dnl If an already present or preinstalled GNU gettext() is found,
|
|
219 |
dnl use it. But if this macro is used in GNU gettext, and GNU
|
|
220 |
dnl gettext is already preinstalled in libintl, we update this
|
|
221 |
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
|
222 |
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
|
|
223 |
|| { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
|
|
224 |
&& test "$PACKAGE" != gettext-runtime \
|
|
225 |
&& test "$PACKAGE" != gettext-tools; }; then
|
|
226 |
gt_use_preinstalled_gnugettext=yes
|
|
227 |
else
|
|
228 |
dnl Reset the values set by searching for libintl.
|
|
229 |
LIBINTL=
|
|
230 |
LTLIBINTL=
|
|
231 |
INCINTL=
|
|
232 |
fi
|
|
233 |
||
234 |
ifelse(gt_included_intl, yes, [
|
|
235 |
if test "$gt_use_preinstalled_gnugettext" != "yes"; then
|
|
236 |
dnl GNU gettext is not found in the C library.
|
|
237 |
dnl Fall back on included GNU gettext library.
|
|
238 |
nls_cv_use_gnu_gettext=yes
|
|
239 |
fi
|
|
240 |
fi
|
|
241 |
||
242 |
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
243 |
dnl Mark actions used to generate GNU NLS library.
|
|
244 |
BUILD_INCLUDED_LIBINTL=yes
|
|
245 |
USE_INCLUDED_LIBINTL=yes
|
|
246 |
LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
|
|
247 |
LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
|
|
248 |
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` |
|
249 |
fi
|
|
250 |
||
251 |
CATOBJEXT=
|
|
252 |
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
|
253 |
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
254 |
dnl Mark actions to use GNU gettext tools.
|
|
255 |
CATOBJEXT=.gmo
|
|
256 |
fi
|
|
257 |
])
|
|
258 |
||
259 |
if test -n "$INTL_MACOSX_LIBS"; then
|
|
260 |
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
|
261 |
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
262 |
dnl Some extra flags are needed during linking.
|
|
263 |
LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
|
|
264 |
LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
|
|
265 |
fi
|
|
266 |
fi
|
|
267 |
||
268 |
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
|
269 |
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
270 |
AC_DEFINE(ENABLE_NLS, 1,
|
|
271 |
[Define to 1 if translation of program messages to the user's native language |
|
272 |
is requested.]) |
|
273 |
else |
|
274 |
USE_NLS=no |
|
275 |
fi |
|
276 |
fi |
|
277 |
||
278 |
AC_MSG_CHECKING([whether to use NLS]) |
|
279 |
AC_MSG_RESULT([$USE_NLS]) |
|
280 |
if test "$USE_NLS" = "yes"; then |
|
281 |
AC_MSG_CHECKING([where the gettext function comes from]) |
|
282 |
if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
|
283 |
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then |
|
284 |
gt_source="external libintl" |
|
285 |
else |
|
286 |
gt_source="libc" |
|
287 |
fi |
|
288 |
else |
|
289 |
gt_source="included intl directory" |
|
290 |
fi |
|
291 |
AC_MSG_RESULT([$gt_source]) |
|
292 |
fi |
|
293 |
||
294 |
if test "$USE_NLS" = "yes"; then |
|
295 |
||
296 |
if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
|
297 |
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then |
|
298 |
AC_MSG_CHECKING([how to link with libintl]) |
|
299 |
AC_MSG_RESULT([$LIBINTL]) |
|
300 |
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) |
|
301 |
fi |
|
302 |
||
303 |
dnl For backward compatibility. Some packages may be using this. |
|
304 |
AC_DEFINE(HAVE_GETTEXT, 1, |
|
305 |
[Define if the GNU gettext() function is already present or preinstalled.]) |
|
306 |
AC_DEFINE(HAVE_DCGETTEXT, 1, |
|
307 |
[Define if the GNU dcgettext() function is already present or preinstalled.]) |
|
308 |
fi |
|
309 |
||
310 |
dnl We need to process the po/ directory. |
|
311 |
POSUB=po |
|
312 |
fi |
|
313 |
||
314 |
ifelse(gt_included_intl, yes, [ |
|
315 |
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
|
316 |
dnl to 'yes' because some of the testsuite requires it.
|
|
317 |
if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
|
|
318 |
BUILD_INCLUDED_LIBINTL=yes
|
|
319 |
fi
|
|
320 |
||
321 |
dnl Make all variables we use known to autoconf.
|
|
322 |
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
|
323 |
AC_SUBST(USE_INCLUDED_LIBINTL)
|
|
324 |
AC_SUBST(CATOBJEXT)
|
|
325 |
||
326 |
dnl For backward compatibility. Some configure.ins may be using this.
|
|
327 |
nls_cv_header_intl=
|
|
328 |
nls_cv_header_libgt=
|
|
329 |
||
330 |
dnl For backward compatibility. Some Makefiles may be using this.
|
|
331 |
DATADIRNAME=share
|
|
332 |
AC_SUBST(DATADIRNAME)
|
|
333 |
||
334 |
dnl For backward compatibility. Some Makefiles may be using this.
|
|
335 |
INSTOBJEXT=.mo
|
|
336 |
AC_SUBST(INSTOBJEXT)
|
|
337 |
||
338 |
dnl For backward compatibility. Some Makefiles may be using this.
|
|
339 |
GENCAT=gencat
|
|
340 |
AC_SUBST(GENCAT)
|
|
341 |
||
342 |
dnl For backward compatibility. Some Makefiles may be using this.
|
|
343 |
INTLOBJS=
|
|
344 |
if test "$USE_INCLUDED_LIBINTL" = yes; then
|
|
345 |
INTLOBJS="\$(GETTOBJS)"
|
|
346 |
fi
|
|
347 |
AC_SUBST(INTLOBJS)
|
|
348 |
||
349 |
dnl Enable libtool support if the surrounding package wishes it.
|
|
350 |
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
|
351 |
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
|
|
352 |
]) |
|
353 |
||
354 |
dnl For backward compatibility. Some Makefiles may be using this. |
|
355 |
INTLLIBS="$LIBINTL" |
|
356 |
AC_SUBST(INTLLIBS) |
|
357 |
||
358 |
dnl Make all documented variables known to autoconf. |
|
359 |
AC_SUBST(LIBINTL) |
|
360 |
AC_SUBST(LTLIBINTL) |
|
361 |
AC_SUBST(POSUB) |
|
362 |
]) |
|
363 |
||
364 |
||
365 |
dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. |
|
366 |
m4_define([gt_NEEDS_INIT], |
|
367 |
[
|
|
368 |
m4_divert_text([DEFAULTS], [gt_needs=]) |
|
369 |
m4_define([gt_NEEDS_INIT], []) |
|
370 |
]) |
|
371 |
||
372 |
||
373 |
dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) |
|
374 |
AC_DEFUN([AM_GNU_GETTEXT_NEED], |
|
375 |
[
|
|
376 |
m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) |
|
377 |
]) |
|
378 |
||
379 |
||
380 |
dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) |
|
381 |
AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) |