OSDN Git Service

* aclocal.m4 (gcc_AC_CHECK_DECL): Before attempting the test,
[pf3gnuchains/gcc-fork.git] / gcc / aclocal.m4
1 Fdnl See whether we can include both string.h and strings.h.
2 AC_DEFUN(gcc_AC_HEADER_STRING,
3 [AC_CACHE_CHECK([whether string.h and strings.h may both be included],
4   gcc_cv_header_string,
5 [AC_TRY_COMPILE([#include <string.h>
6 #include <strings.h>], , gcc_cv_header_string=yes, gcc_cv_header_string=no)])
7 if test $gcc_cv_header_string = yes; then
8   AC_DEFINE(STRING_WITH_STRINGS, 1, [Define if you can safely include both <string.h> and <strings.h>.])
9 fi
10 ])
11
12 dnl See whether we need a declaration for a function.
13 dnl The result is highly dependent on the INCLUDES passed in, so make sure
14 dnl to use a different cache variable name in this macro if it is invoked
15 dnl in a different context somewhere else.
16 dnl gcc_AC_CHECK_DECL(SYMBOL,
17 dnl     [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
18 AC_DEFUN(gcc_AC_CHECK_DECL,
19 [AC_MSG_CHECKING([whether $1 is declared])
20 AC_CACHE_VAL(gcc_cv_have_decl_$1,
21 [AC_TRY_COMPILE([$4],
22 [#ifndef $1
23 char *(*pfn) = (char *(*)) $1 ;
24 #endif], eval "gcc_cv_have_decl_$1=yes", eval "gcc_cv_have_decl_$1=no")])
25 if eval "test \"`echo '$gcc_cv_have_decl_'$1`\" = yes"; then
26   AC_MSG_RESULT(yes) ; ifelse([$2], , :, [$2])
27 else
28   AC_MSG_RESULT(no) ; ifelse([$3], , :, [$3])
29 fi
30 ])dnl
31
32 dnl Check multiple functions to see whether each needs a declaration.
33 dnl Arrange to define HAVE_DECL_<FUNCTION> to 0 or 1 as appropriate.
34 dnl gcc_AC_CHECK_DECLS(SYMBOLS,
35 dnl     [ACTION-IF-NEEDED [, ACTION-IF-NOT-NEEDED [, INCLUDES]]])
36 AC_DEFUN(gcc_AC_CHECK_DECLS,
37 [for ac_func in $1
38 do
39 changequote(, )dnl
40   ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
41 changequote([, ])dnl
42 gcc_AC_CHECK_DECL($ac_func,
43   [AC_DEFINE_UNQUOTED($ac_tr_decl, 1) $2],
44   [AC_DEFINE_UNQUOTED($ac_tr_decl, 0) $3],
45 dnl It is possible that the include files passed in here are local headers
46 dnl which supply a backup declaration for the relevant prototype based on
47 dnl the definition of (or lack of) the HAVE_DECL_ macro.  If so, this test
48 dnl will always return success.  E.g. see libiberty.h's handling of
49 dnl `basename'.  To avoid this, we define the relevant HAVE_DECL_ macro to
50 dnl 1 so that any local headers used do not provide their own prototype
51 dnl during this test.
52 #undef $ac_tr_decl
53 #define $ac_tr_decl 1
54   $4
55 )
56 done
57 dnl Automatically generate config.h entries via autoheader.
58 if test x = y ; then
59   patsubst(translit([$1], [a-z], [A-Z]), [\w+],
60     AC_DEFINE([HAVE_DECL_\&], 1,
61       [Define to 1 if we found this declaration otherwise define to 0.]))dnl
62 fi
63 ])
64
65 dnl Check if we have vprintf and possibly _doprnt.
66 dnl Note autoconf checks for vprintf even though we care about vfprintf.
67 AC_DEFUN(gcc_AC_FUNC_VFPRINTF_DOPRNT,
68 [AC_FUNC_VPRINTF
69 vfprintf=
70 doprint=
71 if test $ac_cv_func_vprintf != yes ; then
72   vfprintf=vfprintf.o
73   if test $ac_cv_func__doprnt != yes ; then
74     doprint=doprint.o
75   fi
76 fi
77 AC_SUBST(vfprintf)
78 AC_SUBST(doprint)
79 ])    
80
81 dnl Check if we have strstr.
82 AC_DEFUN([gcc_AC_FUNC_STRSTR],
83   [AC_CHECK_FUNCS([strstr], [strstr=], [strstr=strstr.o])
84    AC_SUBST([strstr])])
85
86 dnl See if the printf functions in libc support %p in format strings.
87 AC_DEFUN(gcc_AC_FUNC_PRINTF_PTR,
88 [AC_CACHE_CHECK(whether the printf functions support %p,
89   gcc_cv_func_printf_ptr,
90 [AC_TRY_RUN([#include <stdio.h>
91
92 int main()
93 {
94   char buf[64];
95   char *p = buf, *q = NULL;
96   sprintf(buf, "%p", p);
97   sscanf(buf, "%p", &q);
98   return (p != q);
99 }], gcc_cv_func_printf_ptr=yes, gcc_cv_func_printf_ptr=no,
100         gcc_cv_func_printf_ptr=no)
101 rm -f core core.* *.core])
102 if test $gcc_cv_func_printf_ptr = yes ; then
103   AC_DEFINE(HAVE_PRINTF_PTR, 1, [Define if printf supports "%p".])
104 fi
105 ])
106
107 dnl See if symbolic links work and if not, try to substitute either hard links or simple copy.
108 AC_DEFUN(gcc_AC_PROG_LN_S,
109 [AC_MSG_CHECKING(whether ln -s works)
110 AC_CACHE_VAL(gcc_cv_prog_LN_S,
111 [rm -f conftestdata_t
112 echo >conftestdata_f
113 if ln -s conftestdata_f conftestdata_t 2>/dev/null
114 then
115   gcc_cv_prog_LN_S="ln -s"
116 else
117   if ln conftestdata_f conftestdata_t 2>/dev/null
118   then
119     gcc_cv_prog_LN_S=ln
120   else
121     gcc_cv_prog_LN_S=cp
122   fi
123 fi
124 rm -f conftestdata_f conftestdata_t
125 ])dnl
126 LN_S="$gcc_cv_prog_LN_S"
127 if test "$gcc_cv_prog_LN_S" = "ln -s"; then
128   AC_MSG_RESULT(yes)
129 else
130   if test "$gcc_cv_prog_LN_S" = "ln"; then
131     AC_MSG_RESULT([no, using ln])
132   else
133     AC_MSG_RESULT([no, and neither does ln, so using cp])
134   fi
135 fi
136 AC_SUBST(LN_S)dnl
137 ])
138
139 dnl See if hard links work and if not, try to substitute either symbolic links or simple copy.
140 AC_DEFUN(gcc_AC_PROG_LN,
141 [AC_MSG_CHECKING(whether ln works)
142 AC_CACHE_VAL(gcc_cv_prog_LN,
143 [rm -f conftestdata_t
144 echo >conftestdata_f
145 if ln conftestdata_f conftestdata_t 2>/dev/null
146 then
147   gcc_cv_prog_LN="ln"
148 else
149   if ln -s conftestdata_f conftestdata_t 2>/dev/null
150   then
151     gcc_cv_prog_LN="ln -s"
152   else
153     gcc_cv_prog_LN=cp
154   fi
155 fi
156 rm -f conftestdata_f conftestdata_t
157 ])dnl
158 LN="$gcc_cv_prog_LN"
159 if test "$gcc_cv_prog_LN" = "ln"; then
160   AC_MSG_RESULT(yes)
161 else
162   if test "$gcc_cv_prog_LN" = "ln -s"; then
163     AC_MSG_RESULT([no, using ln -s])
164   else
165     AC_MSG_RESULT([no, and neither does ln -s, so using cp])
166   fi
167 fi
168 AC_SUBST(LN)dnl
169 ])
170
171 dnl See whether the stage1 host compiler accepts the volatile keyword.
172 AC_DEFUN(gcc_AC_C_VOLATILE,
173 [AC_CACHE_CHECK([for volatile], gcc_cv_c_volatile,
174 [AC_TRY_COMPILE(, [volatile int foo;],
175         gcc_cv_c_volatile=yes, gcc_cv_c_volatile=no)])
176 if test $gcc_cv_c_volatile = yes ; then
177   AC_DEFINE(HAVE_VOLATILE, 1, [Define if your compiler understands volatile.])
178 fi
179 ])
180
181 dnl Check whether long double is supported.  This differs from the
182 dnl built-in autoconf test in that it works for cross compiles.
183 AC_DEFUN(gcc_AC_C_LONG_DOUBLE,
184 [AC_CACHE_CHECK(for long double, gcc_cv_c_long_double,
185 [if test "$GCC" = yes; then
186   gcc_cv_c_long_double=yes
187 else
188 AC_TRY_COMPILE(,
189 [/* The Stardent Vistra knows sizeof(long double), but does not support it.  */
190 long double foo = 0.0;
191 /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
192 switch (0) case 0: case (sizeof(long double) >= sizeof(double)):;],
193 gcc_cv_c_long_double=yes, gcc_cv_c_long_double=no)
194 fi])
195 if test $gcc_cv_c_long_double = yes; then
196   AC_DEFINE(HAVE_LONG_DOUBLE)
197 fi
198 ])
199
200 dnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead
201 dnl of the usual 2.
202 AC_DEFUN(gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG,
203 [AC_CACHE_CHECK([if mkdir takes one argument], gcc_cv_mkdir_takes_one_arg,
204 [AC_TRY_COMPILE([
205 #include <sys/types.h>
206 #ifdef HAVE_SYS_STAT_H
207 # include <sys/stat.h>
208 #endif
209 #ifdef HAVE_UNISTD_H
210 # include <unistd.h>
211 #endif
212 #ifdef HAVE_DIRECT_H
213 # include <direct.h>
214 #endif], [mkdir ("foo", 0);], 
215         gcc_cv_mkdir_takes_one_arg=no, gcc_cv_mkdir_takes_one_arg=yes)])
216 if test $gcc_cv_mkdir_takes_one_arg = yes ; then
217   AC_DEFINE(MKDIR_TAKES_ONE_ARG, 1, [Define if host mkdir takes a single argument.])
218 fi
219 ])
220
221 AC_DEFUN(gcc_AC_PROG_INSTALL,
222 [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
223 # Find a good install program.  We prefer a C program (faster),
224 # so one script is as good as another.  But avoid the broken or
225 # incompatible versions:
226 # SysV /etc/install, /usr/sbin/install
227 # SunOS /usr/etc/install
228 # IRIX /sbin/install
229 # AIX /bin/install
230 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
231 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
232 # ./install, which can be erroneously created by make from ./install.sh.
233 AC_MSG_CHECKING(for a BSD compatible install)
234 if test -z "$INSTALL"; then
235 AC_CACHE_VAL(ac_cv_path_install,
236 [  IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
237   for ac_dir in $PATH; do
238     # Account for people who put trailing slashes in PATH elements.
239     case "$ac_dir/" in
240     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
241     *)
242       # OSF1 and SCO ODT 3.0 have their own names for install.
243       for ac_prog in ginstall scoinst install; do
244         if test -f $ac_dir/$ac_prog; then
245           if test $ac_prog = install &&
246             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
247             # AIX install.  It has an incompatible calling convention.
248             # OSF/1 installbsd also uses dspmsg, but is usable.
249             :
250           else
251             ac_cv_path_install="$ac_dir/$ac_prog -c"
252             break 2
253           fi
254         fi
255       done
256       ;;
257     esac
258   done
259   IFS="$ac_save_IFS"
260 ])dnl
261   if test "${ac_cv_path_install+set}" = set; then
262     INSTALL="$ac_cv_path_install"
263   else
264     # As a last resort, use the slow shell script.  We don't cache a
265     # path for INSTALL within a source directory, because that will
266     # break other packages using the cache if that directory is
267     # removed, or if the path is relative.
268     INSTALL="$ac_install_sh"
269   fi
270 fi
271 dnl We do special magic for INSTALL instead of AC_SUBST, to get
272 dnl relative paths right.
273 AC_MSG_RESULT($INSTALL)
274 AC_SUBST(INSTALL)dnl
275
276 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
277 # It thinks the first close brace ends the variable substitution.
278 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
279 AC_SUBST(INSTALL_PROGRAM)dnl
280
281 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
282 AC_SUBST(INSTALL_DATA)dnl
283 ])
284
285 #serial 1
286 dnl This test replaces the one in autoconf.
287 dnl Currently this macro should have the same name as the autoconf macro
288 dnl because gettext's gettext.m4 (distributed in the automake package)
289 dnl still uses it.  Otherwise, the use in gettext.m4 makes autoheader
290 dnl give these diagnostics:
291 dnl   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
292 dnl   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
293
294 undefine([AC_ISC_POSIX])
295 AC_DEFUN(AC_ISC_POSIX,
296   [
297     dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
298     AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
299   ]
300 )
301
302
303 dnl GCC_PATH_PROG(VARIABLE, PROG-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND [, PATH]])
304 dnl like AC_PATH_PROG but use other cache variables
305 AC_DEFUN(GCC_PATH_PROG,
306 [# Extract the first word of "$2", so it can be a program name with args.
307 set dummy $2; ac_word=[$]2
308 AC_MSG_CHECKING([for $ac_word])
309 AC_CACHE_VAL(gcc_cv_path_$1,
310 [case "[$]$1" in
311   /*)
312   gcc_cv_path_$1="[$]$1" # Let the user override the test with a path.
313   ;;
314   ?:/*)                  
315   gcc_cv_path_$1="[$]$1" # Let the user override the test with a dos path.
316   ;;
317   *)
318   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
319 dnl $ac_dummy forces splitting on constant user-supplied paths.
320 dnl POSIX.2 word splitting is done only on the output of word expansions,
321 dnl not every word.  This closes a longstanding sh security hole.
322   ac_dummy="ifelse([$4], , $PATH, [$4])"
323   for ac_dir in $ac_dummy; do 
324     test -z "$ac_dir" && ac_dir=.
325     if test -f $ac_dir/$ac_word; then
326       gcc_cv_path_$1="$ac_dir/$ac_word"
327       break
328     fi
329   done
330   IFS="$ac_save_ifs"
331 dnl If no 3rd arg is given, leave the cache variable unset,
332 dnl so GCC_PATH_PROGS will keep looking.
333 ifelse([$3], , , [  test -z "[$]gcc_cv_path_$1" && gcc_cv_path_$1="$3"
334 ])dnl
335   ;;
336 esac])dnl
337 $1="$gcc_cv_path_$1"
338 if test -n "[$]$1"; then
339   AC_MSG_RESULT([$]$1)
340 else
341   AC_MSG_RESULT(no)
342 fi
343 AC_SUBST($1)dnl
344 ])
345
346
347
348 # Macro to add for using GNU gettext.
349 # Ulrich Drepper <drepper@cygnus.com>, 1995.
350 #
351 # This file can be copied and used freely without restrictions.  It can
352 # be used in projects which are not available under the GNU Public License
353 # but which still want to provide support for the GNU gettext functionality.
354 # Please note that the actual code is *not* freely available.
355
356 # serial 5
357
358 AC_DEFUN(AM_WITH_NLS,
359   [AC_MSG_CHECKING([whether NLS is requested])
360     dnl Default is enabled NLS
361     AC_ARG_ENABLE(nls,
362       [  --disable-nls           do not use Native Language Support],
363       USE_NLS=$enableval, USE_NLS=yes)
364     AC_MSG_RESULT($USE_NLS)
365     AC_SUBST(USE_NLS)
366
367     USE_INCLUDED_LIBINTL=no
368
369     dnl If we use NLS figure out what method
370     if test "$USE_NLS" = "yes"; then
371       AC_DEFINE(ENABLE_NLS)
372       AC_MSG_CHECKING([whether included gettext is requested])
373       AC_ARG_WITH(included-gettext,
374         [  --with-included-gettext use the GNU gettext library included here],
375         nls_cv_force_use_gnu_gettext=$withval,
376         nls_cv_force_use_gnu_gettext=no)
377       AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
378
379       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
380       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
381         dnl User does not insist on using GNU NLS library.  Figure out what
382         dnl to use.  If gettext or catgets are available (in this order) we
383         dnl use this.  Else we have to fall back to GNU NLS library.
384         dnl catgets is only used if permitted by option --with-catgets.
385         nls_cv_header_intl=
386         nls_cv_header_libgt=
387         CATOBJEXT=NONE
388
389         AC_CHECK_HEADER(libintl.h,
390           [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
391             [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
392                gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
393
394            if test "$gt_cv_func_gettext_libc" != "yes"; then
395              AC_CHECK_LIB(intl, bindtextdomain,
396                [AC_CACHE_CHECK([for gettext in libintl],
397                  gt_cv_func_gettext_libintl,
398                  [AC_CHECK_LIB(intl, gettext,
399                   gt_cv_func_gettext_libintl=yes,
400                   gt_cv_func_gettext_libintl=no)],
401                  gt_cv_func_gettext_libintl=no)])
402            fi
403
404            if test "$gt_cv_func_gettext_libintl" = "yes"; then
405              LIBS="-lintl $LIBS"
406            fi
407
408            if test "$gt_cv_func_gettext_libc" = "yes" \
409               || test "$gt_cv_func_gettext_libintl" = "yes"; then
410               AC_DEFINE(HAVE_GETTEXT)
411               GCC_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
412                 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
413               if test "$MSGFMT" != "no"; then
414                 AC_CHECK_FUNCS(dcgettext)
415                 GCC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
416                 GCC_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
417                   [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
418                 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
419                                return _nl_msg_cat_cntr],
420                   [CATOBJEXT=.gmo
421                    DATADIRNAME=share],
422                   [CATOBJEXT=.mo
423                    DATADIRNAME=lib])
424                 INSTOBJEXT=.mo
425               else
426                 create_catalogs="no"
427               fi
428             fi
429         ])
430
431         if test "$CATOBJEXT" = "NONE"; then
432           AC_MSG_CHECKING([whether catgets can be used])
433           AC_ARG_WITH(catgets,
434             [  --with-catgets          use catgets functions if available],
435             nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
436           AC_MSG_RESULT($nls_cv_use_catgets)
437
438           if test "$nls_cv_use_catgets" = "yes"; then
439             dnl No gettext in C library.  Try catgets next.
440             AC_CHECK_LIB(i, main)
441             AC_CHECK_FUNC(catgets,
442               [AC_DEFINE(HAVE_CATGETS)
443                INTLOBJS="\$(CATOBJS)"
444                GCC_PATH_PROG(GENCAT, gencat, no)dnl
445                if test "$GENCAT" != "no"; then
446                  GCC_PATH_PROG(GMSGFMT, gmsgfmt, no)
447                  if test "$GMSGFMT" = "no"; then
448                    GCC_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
449                     [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
450                    if test "$GMSGFMT" = "msgfmt"; then
451                      create_catalogs="no"
452                    fi
453                  fi
454                  GCC_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
455                    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
456                  USE_INCLUDED_LIBINTL=yes
457                  CATOBJEXT=.cat
458                  INSTOBJEXT=.cat
459                  DATADIRNAME=lib
460                  INTLDEPS='$(top_builddir)/intl/libintl.a'
461                  INTLLIBS=$INTLDEPS
462                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
463                  nls_cv_header_intl=intl/libintl.h
464                  nls_cv_header_libgt=intl/libgettext.h
465                fi])
466           fi
467         fi
468
469         if test "$CATOBJEXT" = "NONE"; then
470           dnl Neither gettext nor catgets in included in the C library.
471           dnl Fall back on GNU gettext library.
472           nls_cv_use_gnu_gettext=yes
473         fi
474       fi
475
476       if test "$nls_cv_use_gnu_gettext" = "yes"; then
477         dnl Mark actions used to generate GNU NLS library.
478         INTLOBJS="\$(GETTOBJS)"
479         GCC_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
480           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
481         GCC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
482         dnl If we didn't find either msgfmt or gmsgfmt, don't try to
483         dnl create a catalog.
484         if test "$MSGFMT" = "msgfmt" && test "$GMSGFMT" = "msgfmt"; then
485           create_catalogs="no"
486         fi
487         GCC_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
488           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
489         AC_SUBST(MSGFMT)
490         USE_INCLUDED_LIBINTL=yes
491         CATOBJEXT=.gmo
492         INSTOBJEXT=.mo
493         DATADIRNAME=share
494         INTLDEPS='$(top_builddir)/intl/libintl.a'
495         INTLLIBS=$INTLDEPS
496         LIBS=`echo $LIBS | sed -e 's/-lintl//'`
497         nls_cv_header_intl=intl/libintl.h
498         nls_cv_header_libgt=intl/libgettext.h
499       fi
500
501       dnl Test whether we really found GNU xgettext.
502       if test "$XGETTEXT" != ":"; then
503         dnl If it is no GNU xgettext we define it as : so that the
504         dnl Makefiles still can work.
505         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
506           : ;
507         else
508           AC_MSG_RESULT(
509             [found xgettext program is not GNU xgettext; ignore it])
510           XGETTEXT=":"
511         fi
512       fi
513
514
515
516       # We need to process the po/ directory.
517       POSUB=po
518     else
519       DATADIRNAME=share
520       nls_cv_header_intl=intl/libintl.h
521       nls_cv_header_libgt=intl/libgettext.h
522     fi
523     AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
524     AC_OUTPUT_COMMANDS(
525      [case "$CONFIG_FILES" in *po/Makefile.in*)
526         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
527       esac])
528
529
530     # If this is used in GNU gettext we have to set USE_NLS to `yes'
531     # because some of the sources are only built for this goal.
532     if test "$PACKAGE" = gettext; then
533       USE_NLS=yes
534       USE_INCLUDED_LIBINTL=yes
535     fi
536
537     dnl These rules are solely for the distribution goal.  While doing this
538     dnl we only have to keep exactly one list of the available catalogs
539     dnl in configure.in.
540     for lang in $ALL_LINGUAS; do
541       GMOFILES="$GMOFILES $lang.gmo"
542       POFILES="$POFILES $lang.po"
543     done
544
545     dnl Make all variables we use known to autoconf.
546     AC_SUBST(USE_INCLUDED_LIBINTL)
547     AC_SUBST(CATALOGS)
548     AC_SUBST(CATOBJEXT)
549     AC_SUBST(DATADIRNAME)
550     AC_SUBST(GMOFILES)
551     AC_SUBST(INSTOBJEXT)
552     AC_SUBST(INTLDEPS)
553     AC_SUBST(INTLLIBS)
554     AC_SUBST(INTLOBJS)
555     AC_SUBST(POFILES)
556     AC_SUBST(POSUB)
557   ])
558
559 AC_DEFUN(AM_GNU_GETTEXT,
560   [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
561    AC_REQUIRE([AC_PROG_CC])dnl
562    AC_REQUIRE([AC_PROG_RANLIB])dnl
563    AC_REQUIRE([AC_ISC_POSIX])dnl
564    AC_REQUIRE([AC_HEADER_STDC])dnl
565    AC_REQUIRE([AC_C_CONST])dnl
566    AC_REQUIRE([AC_C_INLINE])dnl
567    AC_REQUIRE([AC_TYPE_OFF_T])dnl
568    AC_REQUIRE([AC_TYPE_SIZE_T])dnl
569    AC_REQUIRE([AC_FUNC_ALLOCA])dnl
570
571    AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
572 unistd.h sys/param.h])
573    AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
574 strdup __argz_count __argz_stringify __argz_next])
575
576    if test "${ac_cv_func_stpcpy+set}" != "set"; then
577      AC_CHECK_FUNCS(stpcpy)
578    fi
579    if test "${ac_cv_func_stpcpy}" = "yes"; then
580      AC_DEFINE(HAVE_STPCPY)
581    fi
582
583    AM_LC_MESSAGES
584    AM_WITH_NLS
585
586    if test "x$create_catalogs" = "xno"; then
587      AC_MSG_WARN([No program for building catalogs found -> building disabled])
588    fi
589
590    if test "x$CATOBJEXT" != "x" && test "x$create_catalogs" != "xno" ; then
591      if test "x$ALL_LINGUAS" = "x"; then
592        LINGUAS=
593      else
594        AC_MSG_CHECKING(for catalogs to be installed)
595        if test "x$LINGUAS" = "x"; then
596          LINGUAS=$ALL_LINGUAS
597        else
598          NEW_LINGUAS=
599          for lang in $ALL_LINGUAS; do
600            case " $LINGUAS " in
601              *" $lang "*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
602            esac
603          done
604          LINGUAS=$NEW_LINGUAS
605        fi
606        AC_MSG_RESULT($LINGUAS)
607      fi
608
609      dnl Construct list of names of catalog files to be constructed.
610      if test -n "$LINGUAS"; then
611        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
612      fi
613    fi
614
615    dnl The reference to <locale.h> in the installed <libintl.h> file
616    dnl must be resolved because we cannot expect the users of this
617    dnl to define HAVE_LOCALE_H.
618    if test $ac_cv_header_locale_h = yes; then
619      INCLUDE_LOCALE_H="#include <locale.h>"
620    else
621      INCLUDE_LOCALE_H="\
622 /* The system does not provide the header <locale.h>.  Take care yourself.  */"
623    fi
624    AC_SUBST(INCLUDE_LOCALE_H)
625
626    dnl Determine which catalog format we have (if any is needed)
627    dnl For now we know about two different formats:
628    dnl   Linux libc-5 and the normal X/Open format
629    test -d intl || mkdir intl
630    if test "$CATOBJEXT" = ".cat"; then
631      AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
632
633      dnl Transform the SED scripts while copying because some dumb SEDs
634      dnl cannot handle comments.
635      sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
636    fi
637    dnl po2tbl.sed is always needed.
638    sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
639      $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
640
641    dnl In the intl/Makefile.in we have a special dependency which makes
642    dnl only sense for gettext.  We comment this out for non-gettext
643    dnl packages.
644    if test "$PACKAGE" = "gettext"; then
645      GT_NO="#NO#"
646      GT_YES=
647    else
648      GT_NO=
649      GT_YES="#YES#"
650    fi
651    AC_SUBST(GT_NO)
652    AC_SUBST(GT_YES)
653
654    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
655    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
656    dnl Try to locate is.
657    MKINSTALLDIRS=
658    if test -n "$ac_aux_dir"; then
659      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
660    fi
661    if test -z "$MKINSTALLDIRS"; then
662      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
663    fi
664    AC_SUBST(MKINSTALLDIRS)
665
666    dnl *** For now the libtool support in intl/Makefile is not for real.
667    l=
668    AC_SUBST(l)
669
670    dnl Generate list of files to be processed by xgettext which will
671    dnl be included in po/Makefile.
672    test -d po || mkdir po
673    if test "x$srcdir" != "x."; then
674      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
675        posrcprefix="$srcdir/"
676      else
677        posrcprefix="../$srcdir/"
678      fi
679    else
680      posrcprefix="../"
681    fi
682    rm -f po/POTFILES
683    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
684         < $srcdir/po/POTFILES.in > po/POTFILES
685   ])
686
687 # Check whether LC_MESSAGES is available in <locale.h>.
688 # Ulrich Drepper <drepper@cygnus.com>, 1995.
689 #
690 # This file can be copied and used freely without restrictions.  It can
691 # be used in projects which are not available under the GNU Public License
692 # but which still want to provide support for the GNU gettext functionality.
693 # Please note that the actual code is *not* freely available.
694
695 # serial 1
696
697 AC_DEFUN(AM_LC_MESSAGES,
698   [if test $ac_cv_header_locale_h = yes; then
699     AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
700       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
701        am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
702     if test $am_cv_val_LC_MESSAGES = yes; then
703       AC_DEFINE(HAVE_LC_MESSAGES)
704     fi
705   fi])
706
707 # Search path for a program which passes the given test.
708 # Ulrich Drepper <drepper@cygnus.com>, 1996.
709 #
710 # This file can be copied and used freely without restrictions.  It can
711 # be used in projects which are not available under the GNU Public License
712 # but which still want to provide support for the GNU gettext functionality.
713 # Please note that the actual code is *not* freely available.
714
715 # serial 1
716
717 dnl GCC_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
718 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
719 AC_DEFUN(GCC_PATH_PROG_WITH_TEST,
720 [# Extract the first word of "$2", so it can be a program name with args.
721 set dummy $2; ac_word=[$]2
722 AC_MSG_CHECKING([for $ac_word])
723 AC_CACHE_VAL(gcc_cv_path_$1,
724 [case "[$]$1" in
725   /*)
726   gcc_cv_path_$1="[$]$1" # Let the user override the test with a path.
727   ;;
728   *)
729   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
730   for ac_dir in ifelse([$5], , $PATH, [$5]); do
731     test -z "$ac_dir" && ac_dir=.
732     if test -f $ac_dir/$ac_word; then
733       if [$3]; then
734         gcc_cv_path_$1="$ac_dir/$ac_word"
735         break
736       fi
737     fi
738   done
739   IFS="$ac_save_ifs"
740 dnl If no 4th arg is given, leave the cache variable unset,
741 dnl so GCC_PATH_PROGS will keep looking.
742 ifelse([$4], , , [  test -z "[$]gcc_cv_path_$1" && gcc_cv_path_$1="$4"
743 ])dnl
744   ;;
745 esac])dnl
746 $1="$gcc_cv_path_$1"
747 if test -n "[$]$1"; then
748   AC_MSG_RESULT([$]$1)
749 else
750   AC_MSG_RESULT(no)
751 fi
752 AC_SUBST($1)dnl
753 ])
754
755 # Check whether mmap can map an arbitrary page from /dev/zero or with
756 # MAP_ANONYMOUS, without MAP_FIXED.
757 AC_DEFUN([AC_FUNC_MMAP_ANYWHERE],
758 [AC_CHECK_FUNCS(getpagesize)
759 # The test program for the next two tests is the same except for one
760 # set of ifdefs.
761 changequote({{{,}}})dnl
762 {{{cat >ct-mmap.inc <<'EOF'
763 #include <sys/types.h>
764 #include <sys/mman.h>
765 #include <fcntl.h>
766 #include <signal.h>
767 #include <setjmp.h>
768 #include <stdio.h>
769
770 #if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
771 # define MAP_ANONYMOUS MAP_ANON
772 #endif
773
774 /* This mess was copied from the GNU getpagesize.h.  */
775 #ifndef HAVE_GETPAGESIZE
776 # ifdef HAVE_UNISTD_H
777 #  include <unistd.h>
778 # endif
779
780 /* Assume that all systems that can run configure have sys/param.h.  */
781 # ifndef HAVE_SYS_PARAM_H
782 #  define HAVE_SYS_PARAM_H 1
783 # endif
784
785 # ifdef _SC_PAGESIZE
786 #  define getpagesize() sysconf(_SC_PAGESIZE)
787 # else /* no _SC_PAGESIZE */
788 #  ifdef HAVE_SYS_PARAM_H
789 #   include <sys/param.h>
790 #   ifdef EXEC_PAGESIZE
791 #    define getpagesize() EXEC_PAGESIZE
792 #   else /* no EXEC_PAGESIZE */
793 #    ifdef NBPG
794 #     define getpagesize() NBPG * CLSIZE
795 #     ifndef CLSIZE
796 #      define CLSIZE 1
797 #     endif /* no CLSIZE */
798 #    else /* no NBPG */
799 #     ifdef NBPC
800 #      define getpagesize() NBPC
801 #     else /* no NBPC */
802 #      ifdef PAGESIZE
803 #       define getpagesize() PAGESIZE
804 #      endif /* PAGESIZE */
805 #     endif /* no NBPC */
806 #    endif /* no NBPG */
807 #   endif /* no EXEC_PAGESIZE */
808 #  else /* no HAVE_SYS_PARAM_H */
809 #   define getpagesize() 8192   /* punt totally */
810 #  endif /* no HAVE_SYS_PARAM_H */
811 # endif /* no _SC_PAGESIZE */
812
813 #endif /* no HAVE_GETPAGESIZE */
814
815 #ifndef MAP_FAILED
816 # define MAP_FAILED -1
817 #endif
818
819 #undef perror_exit
820 #define perror_exit(str, val) \
821   do { perror(str); exit(val); } while (0)
822
823 /* Some versions of cygwin mmap require that munmap is called with the
824    same parameters as mmap.  GCC expects that this is not the case.
825    Test for various forms of this problem.  Warning - icky signal games.  */
826
827 static sigset_t unblock_sigsegv;
828 static jmp_buf r;
829 static size_t pg;
830 static int devzero;
831
832 static char *
833 anonmap (size)
834      size_t size;
835 {
836 #ifdef USE_MAP_ANON
837   return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
838                         MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
839 #else
840   return (char *) mmap (0, size, PROT_READ|PROT_WRITE,
841                         MAP_PRIVATE, devzero, 0);
842 #endif
843 }
844
845 static void
846 sigsegv (unused)
847      int unused;
848 {
849   sigprocmask (SIG_UNBLOCK, &unblock_sigsegv, 0);
850   longjmp (r, 1);
851 }
852
853 /* Basic functionality test.  */
854 void
855 test_0 ()
856 {
857   char *x = anonmap (pg);
858   if (x == (char *) MAP_FAILED)
859     perror_exit("test 0 mmap", 2);
860
861   *(int *)x += 1;
862
863   if (munmap(x, pg) < 0)
864     perror_exit("test 0 munmap", 3);
865 }
866
867 /* 1. If we map a 2-page region and unmap its second page, the first page
868    must remain.  */
869 static void
870 test_1 ()
871 {
872   char *x = anonmap (pg * 2);
873   if (x == (char *)MAP_FAILED)
874     perror_exit ("test 1 mmap", 4);
875
876   signal (SIGSEGV, sigsegv);
877   if (setjmp (r))
878     perror_exit ("test 1 fault", 5);
879
880   x[0] = 1;
881   x[pg] = 1;
882
883   if (munmap (x + pg, pg) < 0)
884     perror_exit ("test 1 munmap 1", 6);
885   x[0] = 2;
886
887   if (setjmp (r) == 0)
888     {
889       x[pg] = 1;
890       perror_exit ("test 1 no fault", 7);
891     }
892   if (munmap (x, pg) < 0)
893     perror_exit ("test 1 munmap 2", 8);
894 }
895
896 /* 2. If we map a 2-page region and unmap its first page, the second
897    page must remain.  */
898 static void
899 test_2 ()
900 {
901   char *x = anonmap (pg * 2);
902   if (x == (char *)MAP_FAILED)
903     perror_exit ("test 2 mmap", 9);
904
905   signal (SIGSEGV, sigsegv);
906   if (setjmp (r))
907     perror_exit ("test 2 fault", 10);
908
909   x[0] = 1;
910   x[pg] = 1;
911
912   if (munmap (x, pg) < 0)
913     perror_exit ("test 2 munmap 1", 11);
914
915   x[pg] = 2;
916
917   if (setjmp (r) == 0)
918     {
919       x[0] = 1;
920       perror_exit ("test 2 no fault", 12);
921     }
922
923   if (munmap (x+pg, pg) < 0)
924     perror_exit ("test 2 munmap 2", 13);
925 }
926
927 /* 3. If we map two adjacent 1-page regions and unmap them both with
928    one munmap, both must go away.
929
930    Getting two adjacent 1-page regions with two mmap calls is slightly
931    tricky.  All OS's tested skip over already-allocated blocks; therefore
932    we have been careful to unmap all allocated regions in previous tests.
933    HP/UX allocates pages backward in memory.  No OS has yet been observed
934    to be so perverse as to leave unmapped space between consecutive calls
935    to mmap.  */
936
937 static void
938 test_3 ()
939 {
940   char *x, *y, *z;
941
942   x = anonmap (pg);
943   if (x == (char *)MAP_FAILED)
944     perror_exit ("test 3 mmap 1", 14);
945   y = anonmap (pg);
946   if (y == (char *)MAP_FAILED)
947     perror_exit ("test 3 mmap 2", 15);
948
949   if (y != x + pg)
950     {
951       if (y == x - pg)
952         z = y, y = x, x = z;
953       else
954         {
955           fprintf (stderr, "test 3 nonconsecutive pages - %lx, %lx\n",
956                    (unsigned long)x, (unsigned long)y);
957           exit (16);
958         }
959     }
960
961   signal (SIGSEGV, sigsegv);
962   if (setjmp (r))
963     perror_exit ("test 3 fault", 17);
964
965   x[0] = 1;
966   y[0] = 1;
967
968   if (munmap (x, pg*2) < 0)
969     perror_exit ("test 3 munmap", 18);
970
971   if (setjmp (r) == 0)
972     {
973       x[0] = 1;
974       perror_exit ("test 3 no fault 1", 19);
975     }
976   
977   signal (SIGSEGV, sigsegv);
978   if (setjmp (r) == 0)
979     {
980       y[0] = 1;
981       perror_exit ("test 3 no fault 2", 20);
982     }
983 }
984
985 int
986 main ()
987 {
988   sigemptyset (&unblock_sigsegv);
989   sigaddset (&unblock_sigsegv, SIGSEGV);
990   pg = getpagesize ();
991 #ifndef USE_MAP_ANON
992   devzero = open ("/dev/zero", O_RDWR);
993   if (devzero < 0)
994     perror_exit ("open /dev/zero", 1);
995 #endif
996
997   test_0();
998   test_1();
999   test_2();
1000   test_3();
1001
1002   exit(0);
1003 }
1004 EOF}}}
1005 changequote([,])dnl
1006
1007 AC_CACHE_CHECK(for working mmap from /dev/zero,
1008   ac_cv_func_mmap_dev_zero,
1009 [AC_TRY_RUN(
1010  [#include "ct-mmap.inc"],
1011  ac_cv_func_mmap_dev_zero=yes,
1012  [if test $? -lt 4
1013  then ac_cv_func_mmap_dev_zero=no
1014  else ac_cv_func_mmap_dev_zero=buggy
1015  fi],
1016  # If this is not cygwin, and /dev/zero is a character device, it's probably
1017  # safe to assume it works.
1018  [case "$host_os" in
1019    cygwin* | win32 | pe | mingw* ) ac_cv_func_mmap_dev_zero=buggy ;;
1020    * ) if test -c /dev/zero
1021        then ac_cv_func_mmap_dev_zero=yes
1022        else ac_cv_func_mmap_dev_zero=no
1023        fi ;;
1024   esac])
1025 ])
1026 if test $ac_cv_func_mmap_dev_zero = yes; then
1027   AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1,
1028             [Define if mmap can get us zeroed pages from /dev/zero.])
1029 fi
1030
1031 AC_CACHE_CHECK([for working mmap with MAP_ANON(YMOUS)],
1032   ac_cv_func_mmap_anon,
1033 [AC_TRY_RUN(
1034  [#define USE_MAP_ANON
1035 #include "ct-mmap.inc"],
1036  ac_cv_func_mmap_anon=yes,
1037  [if test $? -lt 4
1038  then ac_cv_func_mmap_anon=no
1039  else ac_cv_func_mmap_anon=buggy
1040  fi],
1041  # Unlike /dev/zero, it is not safe to assume MAP_ANON(YMOUS) works
1042  # just because it's there. Some SCO Un*xen define it but don't implement it.
1043  ac_cv_func_mmap_anon=no)
1044 ])
1045 if test $ac_cv_func_mmap_anon = yes; then
1046   AC_DEFINE(HAVE_MMAP_ANON, 1,
1047             [Define if mmap can get us zeroed pages using MAP_ANON(YMOUS).])
1048 fi
1049 rm -f ct-mmap.inc
1050 ])
1051
1052 # Check whether mmap can map a plain file, without MAP_FIXED.
1053 AC_DEFUN([AC_FUNC_MMAP_FILE], 
1054 [AC_CACHE_CHECK(for working mmap of a file, ac_cv_func_mmap_file,
1055 [# Create a file one thousand bytes long.
1056 for i in 1 2 3 4 5 6 7 8 9 0
1057 do for j in 1 2 3 4 5 6 7 8 9 0
1058 do echo $i $j xxxxx
1059 done
1060 done > conftestdata$$
1061
1062 AC_TRY_RUN([
1063 /* Test by Zack Weinberg.  Modified from MMAP_ANYWHERE test by
1064    Richard Henderson and Alexandre Oliva.
1065    Check whether read-only mmap of a plain file works. */
1066 #include <sys/types.h>
1067 #include <sys/stat.h>
1068 #include <fcntl.h>
1069 #include <sys/mman.h>
1070
1071 int main()
1072 {
1073   char *x;
1074   int fd;
1075   struct stat st;
1076
1077   fd = open("conftestdata$$", O_RDONLY);
1078   if (fd < 0)
1079     exit(1);
1080
1081   if (fstat (fd, &st))
1082     exit(2);
1083
1084   x = (char*)mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
1085   if (x == (char *) -1)
1086     exit(3);
1087
1088   if (x[0] != '1' || x[1] != ' ' || x[2] != '1' || x[3] != ' ')
1089     exit(4);
1090
1091   if (munmap(x, st.st_size) < 0)
1092     exit(5);
1093
1094   exit(0);
1095 }], ac_cv_func_mmap_file=yes, ac_cv_func_mmap_file=no,
1096 ac_cv_func_mmap_file=no)])
1097 if test $ac_cv_func_mmap_file = yes; then
1098   AC_DEFINE(HAVE_MMAP_FILE, 1,
1099             [Define if read-only mmap of a plain file works.])
1100 fi
1101 ])
1102
1103 dnl Locate a program and check that its version is acceptable.
1104 dnl AC_PROG_CHECK_VER(var, name, version-switch,
1105 dnl                  version-extract-regexp, version-glob)
1106 AC_DEFUN(gcc_AC_CHECK_PROG_VER,
1107 [AC_CHECK_PROG([$1], [$2], [$2])
1108 if test -n "[$]$1"; then
1109   # Found it, now check the version.
1110   AC_CACHE_CHECK(for modern $2, gcc_cv_prog_$2_modern,
1111 [changequote(<<,>>)dnl
1112   ac_prog_version=`<<$>>$1 $3 2>&1 |
1113                    sed -n 's/^.*patsubst(<<$4>>,/,\/).*$/\1/p'`
1114   echo "configure:__oline__: version of $2 is $ac_prog_version" >&AC_FD_CC
1115   case $ac_prog_version in
1116     '')     gcc_cv_prog_$2_modern=no;;
1117     <<$5>>)
1118             gcc_cv_prog_$2_modern=yes;;
1119     *)      gcc_cv_prog_$2_modern=no;;
1120   esac
1121 changequote([,])dnl
1122 ])
1123 else
1124   gcc_cv_prog_$2_modern=no
1125 fi
1126 ])