OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # gettext.m4 serial 63 (gettext-0.18) |
2 | dnl Copyright (C) 1995-2010 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, 2008-2010. |
||
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(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], |
||
64 | [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) |
||
65 | ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , |
||
66 | [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT |
||
67 | ])])])]) |
||
68 | define([gt_included_intl], |
||
69 | ifelse([$1], [external], |
||
70 | ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), |
||
71 | [yes])) |
||
72 | define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) |
||
73 | gt_NEEDS_INIT |
||
74 | AM_GNU_GETTEXT_NEED([$2]) |
||
75 | |||
76 | AC_REQUIRE([AM_PO_SUBDIRS])dnl |
||
77 | ifelse(gt_included_intl, yes, [ |
||
78 | AC_REQUIRE([AM_INTL_SUBDIR])dnl |
||
79 | ]) |
||
80 | |||
81 | dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. |
||
82 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) |
||
83 | AC_REQUIRE([AC_LIB_RPATH]) |
||
84 | |||
85 | dnl Sometimes libintl requires libiconv, so first search for libiconv. |
||
86 | dnl Ideally we would do this search only after the |
||
87 | dnl if test "$USE_NLS" = "yes"; then |
||
88 | dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then |
||
89 | dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT |
||
90 | dnl the configure script would need to contain the same shell code |
||
91 | dnl again, outside any 'if'. There are two solutions: |
||
92 | dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. |
||
93 | dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. |
||
94 | dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not |
||
95 | dnl documented, we avoid it. |
||
96 | ifelse(gt_included_intl, yes, , [ |
||
97 | AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) |
||
98 | ]) |
||
99 | |||
100 | dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. |
||
101 | gt_INTL_MACOSX |
||
102 | |||
103 | dnl Set USE_NLS. |
||
104 | AC_REQUIRE([AM_NLS]) |
||
105 | |||
106 | ifelse(gt_included_intl, yes, [ |
||
107 | BUILD_INCLUDED_LIBINTL=no |
||
108 | USE_INCLUDED_LIBINTL=no |
||
109 | ]) |
||
110 | LIBINTL= |
||
111 | LTLIBINTL= |
||
112 | POSUB= |
||
113 | |||
114 | dnl Add a version number to the cache macros. |
||
115 | case " $gt_needs " in |
||
116 | *" need-formatstring-macros "*) gt_api_version=3 ;; |
||
117 | *" need-ngettext "*) gt_api_version=2 ;; |
||
118 | *) gt_api_version=1 ;; |
||
119 | esac |
||
120 | gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" |
||
121 | gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" |
||
122 | |||
123 | dnl If we use NLS figure out what method |
||
124 | if test "$USE_NLS" = "yes"; then |
||
125 | gt_use_preinstalled_gnugettext=no |
||
126 | ifelse(gt_included_intl, yes, [ |
||
127 | AC_MSG_CHECKING([whether included gettext is requested]) |
||
128 | AC_ARG_WITH([included-gettext], |
||
129 | [ --with-included-gettext use the GNU gettext library included here], |
||
130 | nls_cv_force_use_gnu_gettext=$withval, |
||
131 | nls_cv_force_use_gnu_gettext=no) |
||
132 | AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) |
||
133 | |||
134 | nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" |
||
135 | if test "$nls_cv_force_use_gnu_gettext" != "yes"; then |
||
136 | ]) |
||
137 | dnl User does not insist on using GNU NLS library. Figure out what |
||
138 | dnl to use. If GNU gettext is available we use this. Else we have |
||
139 | dnl to fall back to GNU NLS library. |
||
140 | |||
141 | if test $gt_api_version -ge 3; then |
||
142 | gt_revision_test_code=' |
||
143 | #ifndef __GNU_GETTEXT_SUPPORTED_REVISION |
||
144 | #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) |
||
145 | #endif |
||
146 | changequote(,)dnl |
||
147 | typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; |
||
148 | changequote([,])dnl |
||
149 | ' |
||
150 | else |
||
151 | gt_revision_test_code= |
||
152 | fi |
||
153 | if test $gt_api_version -ge 2; then |
||
154 | gt_expression_test_code=' + * ngettext ("", "", 0)' |
||
155 | else |
||
156 | gt_expression_test_code= |
||
157 | fi |
||
158 | |||
159 | AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], |
||
160 | [AC_TRY_LINK([#include <libintl.h> |
||
161 | $gt_revision_test_code |
||
162 | extern int _nl_msg_cat_cntr; |
||
163 | extern int *_nl_domain_bindings;], |
||
164 | [bindtextdomain ("", ""); |
||
165 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], |
||
166 | [eval "$gt_func_gnugettext_libc=yes"], |
||
167 | [eval "$gt_func_gnugettext_libc=no"])]) |
||
168 | |||
169 | if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then |
||
170 | dnl Sometimes libintl requires libiconv, so first search for libiconv. |
||
171 | ifelse(gt_included_intl, yes, , [ |
||
172 | AM_ICONV_LINK |
||
173 | ]) |
||
174 | dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL |
||
175 | dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) |
||
176 | dnl because that would add "-liconv" to LIBINTL and LTLIBINTL |
||
177 | dnl even if libiconv doesn't exist. |
||
178 | AC_LIB_LINKFLAGS_BODY([intl]) |
||
179 | AC_CACHE_CHECK([for GNU gettext in libintl], |
||
180 | [$gt_func_gnugettext_libintl], |
||
181 | [gt_save_CPPFLAGS="$CPPFLAGS" |
||
182 | CPPFLAGS="$CPPFLAGS $INCINTL" |
||
183 | gt_save_LIBS="$LIBS" |
||
184 | LIBS="$LIBS $LIBINTL" |
||
185 | dnl Now see whether libintl exists and does not depend on libiconv. |
||
186 | AC_TRY_LINK([#include <libintl.h> |
||
187 | $gt_revision_test_code |
||
188 | extern int _nl_msg_cat_cntr; |
||
189 | extern |
||
190 | #ifdef __cplusplus |
||
191 | "C" |
||
192 | #endif |
||
193 | const char *_nl_expand_alias (const char *);], |
||
194 | [bindtextdomain ("", ""); |
||
195 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], |
||
196 | [eval "$gt_func_gnugettext_libintl=yes"], |
||
197 | [eval "$gt_func_gnugettext_libintl=no"]) |
||
198 | dnl Now see whether libintl exists and depends on libiconv. |
||
199 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then |
||
200 | LIBS="$LIBS $LIBICONV" |
||
201 | AC_TRY_LINK([#include <libintl.h> |
||
202 | $gt_revision_test_code |
||
203 | extern int _nl_msg_cat_cntr; |
||
204 | extern |
||
205 | #ifdef __cplusplus |
||
206 | "C" |
||
207 | #endif |
||
208 | const char *_nl_expand_alias (const char *);], |
||
209 | [bindtextdomain ("", ""); |
||
210 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], |
||
211 | [LIBINTL="$LIBINTL $LIBICONV" |
||
212 | LTLIBINTL="$LTLIBINTL $LTLIBICONV" |
||
213 | eval "$gt_func_gnugettext_libintl=yes" |
||
214 | ]) |
||
215 | fi |
||
216 | CPPFLAGS="$gt_save_CPPFLAGS" |
||
217 | LIBS="$gt_save_LIBS"]) |
||
218 | fi |
||
219 | |||
220 | dnl If an already present or preinstalled GNU gettext() is found, |
||
221 | dnl use it. But if this macro is used in GNU gettext, and GNU |
||
222 | dnl gettext is already preinstalled in libintl, we update this |
||
223 | dnl libintl. (Cf. the install rule in intl/Makefile.in.) |
||
224 | if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ |
||
225 | || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ |
||
226 | && test "$PACKAGE" != gettext-runtime \ |
||
227 | && test "$PACKAGE" != gettext-tools; }; then |
||
228 | gt_use_preinstalled_gnugettext=yes |
||
229 | else |
||
230 | dnl Reset the values set by searching for libintl. |
||
231 | LIBINTL= |
||
232 | LTLIBINTL= |
||
233 | INCINTL= |
||
234 | fi |
||
235 | |||
236 | ifelse(gt_included_intl, yes, [ |
||
237 | if test "$gt_use_preinstalled_gnugettext" != "yes"; then |
||
238 | dnl GNU gettext is not found in the C library. |
||
239 | dnl Fall back on included GNU gettext library. |
||
240 | nls_cv_use_gnu_gettext=yes |
||
241 | fi |
||
242 | fi |
||
243 | |||
244 | if test "$nls_cv_use_gnu_gettext" = "yes"; then |
||
245 | dnl Mark actions used to generate GNU NLS library. |
||
246 | BUILD_INCLUDED_LIBINTL=yes |
||
247 | USE_INCLUDED_LIBINTL=yes |
||
248 | LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" |
||
249 | LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" |
||
250 | LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` |
||
251 | fi |
||
252 | |||
253 | CATOBJEXT= |
||
254 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ |
||
255 | || test "$nls_cv_use_gnu_gettext" = "yes"; then |
||
256 | dnl Mark actions to use GNU gettext tools. |
||
257 | CATOBJEXT=.gmo |
||
258 | fi |
||
259 | ]) |
||
260 | |||
261 | if test -n "$INTL_MACOSX_LIBS"; then |
||
262 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ |
||
263 | || test "$nls_cv_use_gnu_gettext" = "yes"; then |
||
264 | dnl Some extra flags are needed during linking. |
||
265 | LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" |
||
266 | LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" |
||
267 | fi |
||
268 | fi |
||
269 | |||
270 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ |
||
271 | || test "$nls_cv_use_gnu_gettext" = "yes"; then |
||
272 | AC_DEFINE([ENABLE_NLS], [1], |
||
273 | [Define to 1 if translation of program messages to the user's native language |
||
274 | is requested.]) |
||
275 | else |
||
276 | USE_NLS=no |
||
277 | fi |
||
278 | fi |
||
279 | |||
280 | AC_MSG_CHECKING([whether to use NLS]) |
||
281 | AC_MSG_RESULT([$USE_NLS]) |
||
282 | if test "$USE_NLS" = "yes"; then |
||
283 | AC_MSG_CHECKING([where the gettext function comes from]) |
||
284 | if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
||
285 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then |
||
286 | gt_source="external libintl" |
||
287 | else |
||
288 | gt_source="libc" |
||
289 | fi |
||
290 | else |
||
291 | gt_source="included intl directory" |
||
292 | fi |
||
293 | AC_MSG_RESULT([$gt_source]) |
||
294 | fi |
||
295 | |||
296 | if test "$USE_NLS" = "yes"; then |
||
297 | |||
298 | if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
||
299 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then |
||
300 | AC_MSG_CHECKING([how to link with libintl]) |
||
301 | AC_MSG_RESULT([$LIBINTL]) |
||
302 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) |
||
303 | fi |
||
304 | |||
305 | dnl For backward compatibility. Some packages may be using this. |
||
306 | AC_DEFINE([HAVE_GETTEXT], [1], |
||
307 | [Define if the GNU gettext() function is already present or preinstalled.]) |
||
308 | AC_DEFINE([HAVE_DCGETTEXT], [1], |
||
309 | [Define if the GNU dcgettext() function is already present or preinstalled.]) |
||
310 | fi |
||
311 | |||
312 | dnl We need to process the po/ directory. |
||
313 | POSUB=po |
||
314 | fi |
||
315 | |||
316 | ifelse(gt_included_intl, yes, [ |
||
317 | dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL |
||
318 | dnl to 'yes' because some of the testsuite requires it. |
||
319 | if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then |
||
320 | BUILD_INCLUDED_LIBINTL=yes |
||
321 | fi |
||
322 | |||
323 | dnl Make all variables we use known to autoconf. |
||
324 | AC_SUBST([BUILD_INCLUDED_LIBINTL]) |
||
325 | AC_SUBST([USE_INCLUDED_LIBINTL]) |
||
326 | AC_SUBST([CATOBJEXT]) |
||
327 | |||
328 | dnl For backward compatibility. Some configure.ins may be using this. |
||
329 | nls_cv_header_intl= |
||
330 | nls_cv_header_libgt= |
||
331 | |||
332 | dnl For backward compatibility. Some Makefiles may be using this. |
||
333 | DATADIRNAME=share |
||
334 | AC_SUBST([DATADIRNAME]) |
||
335 | |||
336 | dnl For backward compatibility. Some Makefiles may be using this. |
||
337 | INSTOBJEXT=.mo |
||
338 | AC_SUBST([INSTOBJEXT]) |
||
339 | |||
340 | dnl For backward compatibility. Some Makefiles may be using this. |
||
341 | GENCAT=gencat |
||
342 | AC_SUBST([GENCAT]) |
||
343 | |||
344 | dnl For backward compatibility. Some Makefiles may be using this. |
||
345 | INTLOBJS= |
||
346 | if test "$USE_INCLUDED_LIBINTL" = yes; then |
||
347 | INTLOBJS="\$(GETTOBJS)" |
||
348 | fi |
||
349 | AC_SUBST([INTLOBJS]) |
||
350 | |||
351 | dnl Enable libtool support if the surrounding package wishes it. |
||
352 | INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix |
||
353 | AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) |
||
354 | ]) |
||
355 | |||
356 | dnl For backward compatibility. Some Makefiles may be using this. |
||
357 | INTLLIBS="$LIBINTL" |
||
358 | AC_SUBST([INTLLIBS]) |
||
359 | |||
360 | dnl Make all documented variables known to autoconf. |
||
361 | AC_SUBST([LIBINTL]) |
||
362 | AC_SUBST([LTLIBINTL]) |
||
363 | AC_SUBST([POSUB]) |
||
364 | ]) |
||
365 | |||
366 | |||
367 | dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. |
||
368 | m4_define([gt_NEEDS_INIT], |
||
369 | [ |
||
370 | m4_divert_text([DEFAULTS], [gt_needs=]) |
||
371 | m4_define([gt_NEEDS_INIT], []) |
||
372 | ]) |
||
373 | |||
374 | |||
375 | dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) |
||
376 | AC_DEFUN([AM_GNU_GETTEXT_NEED], |
||
377 | [ |
||
378 | m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) |
||
379 | ]) |
||
380 | |||
381 | |||
382 | dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) |
||
383 | AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) |