2004-10-30 Andrew Cagney <cagney@gnu.org>
[deliverable/binutils-gdb.git] / gettext.m4
CommitLineData
6cf86f7f
AO
1# This file is derived from `gettext.m4'. The difference is that the
2# included macros assume Cygnus-style source and build trees.
3
4# Macro to add for using GNU gettext.
5# Ulrich Drepper <drepper@cygnus.com>, 1995.
6#
7# This file file be copied and used freely without restrictions. It can
8# be used in projects which are not available under the GNU Public License
9# but which still want to provide support for the GNU gettext functionality.
10# Please note that the actual code is *not* freely available.
11
12# serial 3
13
f8b73030 14AC_DEFUN([CY_WITH_NLS],
6cf86f7f
AO
15 [AC_MSG_CHECKING([whether NLS is requested])
16 dnl Default is enabled NLS
17 AC_ARG_ENABLE(nls,
18 [ --disable-nls do not use Native Language Support],
19 USE_NLS=$enableval, USE_NLS=yes)
20 AC_MSG_RESULT($USE_NLS)
21 AC_SUBST(USE_NLS)
22
23 USE_INCLUDED_LIBINTL=no
24
25 dnl If we use NLS figure out what method
26 if test "$USE_NLS" = "yes"; then
27 AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
28 AC_MSG_CHECKING([whether included gettext is requested])
29 AC_ARG_WITH(included-gettext,
30 [ --with-included-gettext use the GNU gettext library included here],
31 nls_cv_force_use_gnu_gettext=$withval,
32 nls_cv_force_use_gnu_gettext=no)
33 AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
34
35 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
36 if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
37 dnl User does not insist on using GNU NLS library. Figure out what
38 dnl to use. If gettext or catgets are available (in this order) we
39 dnl use this. Else we have to fall back to GNU NLS library.
40 dnl catgets is only used if permitted by option --with-catgets.
41 nls_cv_header_intl=
42 nls_cv_header_libgt=
43 CATOBJEXT=NONE
44
45 AC_CHECK_HEADER(libintl.h,
46 [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
47 [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
48 gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
49
50 if test "$gt_cv_func_gettext_libc" != "yes"; then
51 AC_CHECK_LIB(intl, bindtextdomain,
52 [AC_CACHE_CHECK([for gettext in libintl],
53 gt_cv_func_gettext_libintl,
54 [AC_TRY_LINK([], [return (int) gettext ("")],
55 gt_cv_func_gettext_libintl=yes,
56 gt_cv_func_gettext_libintl=no)])])
57 fi
58
59 if test "$gt_cv_func_gettext_libc" = "yes" \
60 || test "$gt_cv_func_gettext_libintl" = "yes"; then
61 AC_DEFINE(HAVE_GETTEXT, 1,
62 [Define as 1 if you have gettext and don't want to use GNU gettext.])
63 AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
64 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
65 if test "$MSGFMT" != "no"; then
66 AC_CHECK_FUNCS(dcgettext)
67 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
68 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
69 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
70 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
71 return _nl_msg_cat_cntr],
72 [CATOBJEXT=.gmo
73 DATADIRNAME=share],
74 [CATOBJEXT=.mo
75 DATADIRNAME=lib])
76 INSTOBJEXT=.mo
77 fi
78 fi
79 ])
80
81 dnl In the standard gettext, we would now check for catgets.
82 dnl However, we never want to use catgets for our releases.
83
84 if test "$CATOBJEXT" = "NONE"; then
85 dnl Neither gettext nor catgets in included in the C library.
86 dnl Fall back on GNU gettext library.
87 nls_cv_use_gnu_gettext=yes
88 fi
89 fi
90
91 if test "$nls_cv_use_gnu_gettext" = "yes"; then
92 dnl Mark actions used to generate GNU NLS library.
93 INTLOBJS="\$(GETTOBJS)"
94 AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
95 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
96 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
97 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
98 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
99 AC_SUBST(MSGFMT)
100 USE_INCLUDED_LIBINTL=yes
101 CATOBJEXT=.gmo
102 INSTOBJEXT=.mo
103 DATADIRNAME=share
104 INTLDEPS='$(top_builddir)/../intl/libintl.a'
105 INTLLIBS=$INTLDEPS
106 LIBS=`echo $LIBS | sed -e 's/-lintl//'`
107 nls_cv_header_intl=libintl.h
108 nls_cv_header_libgt=libgettext.h
109 fi
110
111 dnl Test whether we really found GNU xgettext.
112 if test "$XGETTEXT" != ":"; then
113 dnl If it is no GNU xgettext we define it as : so that the
114 dnl Makefiles still can work.
115 if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
116 : ;
117 else
118 AC_MSG_RESULT(
119 [found xgettext programs is not GNU xgettext; ignore it])
120 XGETTEXT=":"
121 fi
122 fi
123
124 # We need to process the po/ directory.
125 POSUB=po
126 else
127 DATADIRNAME=share
128 nls_cv_header_intl=libintl.h
129 nls_cv_header_libgt=libgettext.h
130 fi
131
132 # If this is used in GNU gettext we have to set USE_NLS to `yes'
133 # because some of the sources are only built for this goal.
134 if test "$PACKAGE" = gettext; then
135 USE_NLS=yes
136 USE_INCLUDED_LIBINTL=yes
137 fi
138
139 dnl These rules are solely for the distribution goal. While doing this
140 dnl we only have to keep exactly one list of the available catalogs
141 dnl in configure.in.
142 for lang in $ALL_LINGUAS; do
143 GMOFILES="$GMOFILES $lang.gmo"
144 POFILES="$POFILES $lang.po"
145 done
146
147 dnl Make all variables we use known to autoconf.
148 AC_SUBST(USE_INCLUDED_LIBINTL)
149 AC_SUBST(CATALOGS)
150 AC_SUBST(CATOBJEXT)
151 AC_SUBST(DATADIRNAME)
152 AC_SUBST(GMOFILES)
153 AC_SUBST(INSTOBJEXT)
154 AC_SUBST(INTLDEPS)
155 AC_SUBST(INTLLIBS)
156 AC_SUBST(INTLOBJS)
157 AC_SUBST(POFILES)
158 AC_SUBST(POSUB)
159 ])
160
f8b73030 161AC_DEFUN([CY_GNU_GETTEXT],
6cf86f7f
AO
162 [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
163 AC_REQUIRE([AC_PROG_CC])dnl
164 AC_REQUIRE([AC_PROG_RANLIB])dnl
165 AC_REQUIRE([AC_ISC_POSIX])dnl
166 AC_REQUIRE([AC_HEADER_STDC])dnl
167 AC_REQUIRE([AC_C_CONST])dnl
168 AC_REQUIRE([AC_C_INLINE])dnl
169 AC_REQUIRE([AC_TYPE_OFF_T])dnl
170 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
171 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
172 AC_REQUIRE([AC_FUNC_MMAP])dnl
173
174 AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
175unistd.h values.h sys/param.h])
176 AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
177__argz_count __argz_stringify __argz_next])
178
179 if test "${ac_cv_func_stpcpy+set}" != "set"; then
180 AC_CHECK_FUNCS(stpcpy)
181 fi
182 if test "${ac_cv_func_stpcpy}" = "yes"; then
183 AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
184 fi
185
186 AM_LC_MESSAGES
187 CY_WITH_NLS
188
189 if test "x$CATOBJEXT" != "x"; then
190 if test "x$ALL_LINGUAS" = "x"; then
191 LINGUAS=
192 else
193 AC_MSG_CHECKING(for catalogs to be installed)
194 NEW_LINGUAS=
195 for lang in ${LINGUAS=$ALL_LINGUAS}; do
196 case "$ALL_LINGUAS" in
197 *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
198 esac
199 done
200 LINGUAS=$NEW_LINGUAS
201 AC_MSG_RESULT($LINGUAS)
202 fi
203
204 dnl Construct list of names of catalog files to be constructed.
205 if test -n "$LINGUAS"; then
206 for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
207 fi
208 fi
209
210 dnl The reference to <locale.h> in the installed <libintl.h> file
211 dnl must be resolved because we cannot expect the users of this
212 dnl to define HAVE_LOCALE_H.
213 if test $ac_cv_header_locale_h = yes; then
214 INCLUDE_LOCALE_H="#include <locale.h>"
215 else
216 INCLUDE_LOCALE_H="\
217/* The system does not provide the header <locale.h>. Take care yourself. */"
218 fi
219 AC_SUBST(INCLUDE_LOCALE_H)
220
221 dnl Determine which catalog format we have (if any is needed)
222 dnl For now we know about two different formats:
223 dnl Linux libc-5 and the normal X/Open format
224 if test -f $srcdir/po2tbl.sed.in; then
225 if test "$CATOBJEXT" = ".cat"; then
226 AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
227
228 dnl Transform the SED scripts while copying because some dumb SEDs
229 dnl cannot handle comments.
230 sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
231 fi
232 dnl po2tbl.sed is always needed.
233 sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
234 $srcdir/po2tbl.sed.in > po2tbl.sed
235 fi
236
237 dnl In the intl/Makefile.in we have a special dependency which makes
238 dnl only sense for gettext. We comment this out for non-gettext
239 dnl packages.
240 if test "$PACKAGE" = "gettext"; then
241 GT_NO="#NO#"
242 GT_YES=
243 else
244 GT_NO=
245 GT_YES="#YES#"
246 fi
247 AC_SUBST(GT_NO)
248 AC_SUBST(GT_YES)
249
250 MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
251 AC_SUBST(MKINSTALLDIRS)
252
253 dnl *** For now the libtool support in intl/Makefile is not for real.
254 l=
255 AC_SUBST(l)
256
257 dnl Generate list of files to be processed by xgettext which will
258 dnl be included in po/Makefile. But only do this if the po directory
73fb1ef9
AM
259 dnl exists in srcdir and contains POTFILES.in.
260 if test -f $srcdir/po/POTFILES.in; then
6cf86f7f
AO
261 test -d po || mkdir po
262 if test "x$srcdir" != "x."; then
263 if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
264 posrcprefix="$srcdir/"
265 else
266 posrcprefix="../$srcdir/"
267 fi
268 else
269 posrcprefix="../"
270 fi
271 rm -f po/POTFILES
272 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
273 < $srcdir/po/POTFILES.in > po/POTFILES
274 fi
275 ])
276
277# Search path for a program which passes the given test.
278# Ulrich Drepper <drepper@cygnus.com>, 1996.
279#
280# This file file be copied and used freely without restrictions. It can
281# be used in projects which are not available under the GNU Public License
282# but which still want to provide support for the GNU gettext functionality.
283# Please note that the actual code is *not* freely available.
284
285# serial 1
286
287dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
288dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
f8b73030 289AC_DEFUN([AM_PATH_PROG_WITH_TEST],
6cf86f7f
AO
290[# Extract the first word of "$2", so it can be a program name with args.
291set dummy $2; ac_word=[$]2
292AC_MSG_CHECKING([for $ac_word])
293AC_CACHE_VAL(ac_cv_path_$1,
294[case "[$]$1" in
295 /*)
296 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
297 ;;
298 *)
299 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
300 for ac_dir in ifelse([$5], , $PATH, [$5]); do
301 test -z "$ac_dir" && ac_dir=.
302 if test -f $ac_dir/$ac_word; then
303 if [$3]; then
304 ac_cv_path_$1="$ac_dir/$ac_word"
305 break
306 fi
307 fi
308 done
309 IFS="$ac_save_ifs"
310dnl If no 4th arg is given, leave the cache variable unset,
311dnl so AC_PATH_PROGS will keep looking.
312ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
313])dnl
314 ;;
315esac])dnl
316$1="$ac_cv_path_$1"
317if test -n "[$]$1"; then
318 AC_MSG_RESULT([$]$1)
319else
320 AC_MSG_RESULT(no)
321fi
322AC_SUBST($1)dnl
323])
324
325# Check whether LC_MESSAGES is available in <locale.h>.
326# Ulrich Drepper <drepper@cygnus.com>, 1995.
327#
328# This file file be copied and used freely without restrictions. It can
329# be used in projects which are not available under the GNU Public License
330# but which still want to provide support for the GNU gettext functionality.
331# Please note that the actual code is *not* freely available.
332
333# serial 1
334
f8b73030 335AC_DEFUN([AM_LC_MESSAGES],
6cf86f7f
AO
336 [if test $ac_cv_header_locale_h = yes; then
337 AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
338 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
339 am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
340 if test $am_cv_val_LC_MESSAGES = yes; then
341 AC_DEFINE(HAVE_LC_MESSAGES, 1,
342 [Define if your locale.h file contains LC_MESSAGES.])
343 fi
344 fi])
This page took 0.192704 seconds and 4 git commands to generate.