OSDN Git Service

asprintf.c: Change comment to note that -1 is returned upon error.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / aclocal.m4
1 dnl aclocal.m4 generated automatically by aclocal 1.4-p6
2
3 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
7
8 dnl This program is distributed in the hope that it will be useful,
9 dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 dnl PARTICULAR PURPOSE.
12
13 dnl
14 dnl Initialize basic configure bits, set toplevel_srcdir for Makefiles.
15 dnl
16 dnl GLIBCPP_TOPREL_CONFIGURE
17 AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
18   dnl Default to --enable-multilib (this is also passed by default
19   dnl from the ubercommon-top-level configure)
20   AC_ARG_ENABLE(multilib,
21   [  --enable-multilib       build hella library versions (default)],
22   [case "${enableval}" in
23     yes) multilib=yes ;;
24     no)  multilib=no ;;
25     *)   AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
26    esac], [multilib=yes])dnl
27
28   # When building with srcdir == objdir, links to the source files will
29   # be created in directories within the target_subdir.  We have to
30   # adjust toplevel_srcdir accordingly, so that configure finds
31   # install-sh and other auxiliary files that live in the top-level
32   # source directory.
33   if test "${srcdir}" = "."; then
34     if test -z "${with_target_subdir}"; then
35       toprel=".."
36     else
37       if test "${with_target_subdir}" != "."; then
38         toprel="${with_multisrctop}../.."
39       else
40         toprel="${with_multisrctop}.."
41       fi
42     fi
43   else
44     toprel=".."
45   fi
46   AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
47   toplevel_srcdir=\${top_srcdir}/$toprel
48   AC_SUBST(toplevel_srcdir)
49 ])
50
51 dnl
52 dnl Initialize the rest of the library configury.
53 dnl
54 dnl GLIBCPP_CONFIGURE
55 AC_DEFUN(GLIBCPP_CONFIGURE, [
56   # Export build and source directories.
57   # These need to be absolute paths, yet at the same time need to
58   # canonicalize only relative paths, because then amd will not unmount
59   # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
60   glibcpp_builddir=`${PWDCMD-pwd}`
61   case $srcdir in
62   [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
63   *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
64   esac
65   AC_SUBST(glibcpp_builddir)
66   AC_SUBST(glibcpp_srcdir)
67
68   dnl This is here just to satisfy automake.
69   ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
70
71   AC_PROG_AWK
72   # Will set LN_S to either 'ln -s' or 'ln'.  With autoconf 2.5x, can also
73   # be 'cp -p' if linking isn't available.  Uncomment the next line to
74   # force a particular method.
75   #ac_cv_prog_LN_S='cp -p'
76   AC_PROG_LN_S
77
78   # We use these options to decide which functions to include.
79   AC_ARG_WITH(target-subdir,
80   [  --with-target-subdir=SUBDIR
81                           configuring in a subdirectory])
82   AC_ARG_WITH(cross-host,
83   [  --with-cross-host=HOST  configuring with a cross compiler])
84
85   AC_ARG_WITH(newlib,
86   [  --with-newlib                    Configuring with newlib])
87
88   glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
89   AC_SUBST(glibcpp_basedir)
90
91   # Never versions of autoconf add an underscore to these functions.
92   # Prevent future problems ...
93   ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
94   ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
95   ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
96   ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
97
98   # AC_PROG_CC
99   # FIXME: We temporarily define our own version of AC_PROG_CC.  This is
100   # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS.  We
101   # are probably using a cross compiler, which will not be able to fully
102   # link an executable.  This is addressed in later versions of autoconf.
103
104   AC_DEFUN(LIB_AC_PROG_CC,
105   [AC_BEFORE([$0], [AC_PROG_CPP])dnl
106   dnl Fool anybody using AC_PROG_CC.
107   AC_PROVIDE([AC_PROG_CC])
108   AC_CHECK_PROG(CC, gcc, gcc)
109   if test -z "$CC"; then
110     AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
111     test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
112   fi
113
114   AC_PROG_CC_GNU
115
116   if test $ac_cv_prog_gcc = yes; then
117     GCC=yes
118   dnl Check whether -g works, even if CFLAGS is set, in case the package
119   dnl plays around with CFLAGS (such as to build both debugging and
120   dnl normal versions of a library), tasteless as that idea is.
121     ac_test_CFLAGS="${CFLAGS+set}"
122     ac_save_CFLAGS="$CFLAGS"
123     CFLAGS=
124     AC_PROG_CC_G
125     if test "$ac_test_CFLAGS" = set; then
126       CFLAGS="$ac_save_CFLAGS"
127     elif test $ac_cv_prog_cc_g = yes; then
128       CFLAGS="-g -O2"
129     else
130       CFLAGS="-O2"
131     fi
132   else
133     GCC=
134     test "${CFLAGS+set}" = set || CFLAGS="-g"
135   fi
136   ])
137
138   LIB_AC_PROG_CC
139
140   # Likewise for AC_PROG_CXX.  We can't just call it directly because g++
141   # will try to link in libstdc++.
142   AC_DEFUN(LIB_AC_PROG_CXX,
143   [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
144   dnl Fool anybody using AC_PROG_CXX.
145   AC_PROVIDE([AC_PROG_CXX])
146   # Use glibcpp_CXX so that we do not cause CXX to be cached with the
147   # flags that come in CXX while configuring libstdc++.  They're different
148   # from those used for all other target libraries.  If CXX is set in
149   # the environment, respect that here.
150   glibcpp_CXX=$CXX
151   AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
152   AC_SUBST(glibcpp_CXX)
153   CXX=$glibcpp_CXX
154   test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
155
156   AC_PROG_CXX_GNU
157
158   if test $ac_cv_prog_gxx = yes; then
159     GXX=yes
160     dnl Check whether -g works, even if CXXFLAGS is set, in case the package
161     dnl plays around with CXXFLAGS (such as to build both debugging and
162     dnl normal versions of a library), tasteless as that idea is.
163     ac_test_CXXFLAGS="${CXXFLAGS+set}"
164     ac_save_CXXFLAGS="$CXXFLAGS"
165     CXXFLAGS=
166     AC_PROG_CXX_G
167     if test "$ac_test_CXXFLAGS" = set; then
168       CXXFLAGS="$ac_save_CXXFLAGS"
169     elif test $ac_cv_prog_cxx_g = yes; then
170       CXXFLAGS="-g -O2"
171     else
172       CXXFLAGS="-O2"
173     fi
174   else
175     GXX=
176     test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
177   fi
178   ])
179
180   LIB_AC_PROG_CXX
181
182   # For directory versioning (e.g., headers) and other variables.
183   AC_MSG_CHECKING([for GCC version number])
184   gcc_version=`$glibcpp_CXX -dumpversion`
185   AC_MSG_RESULT($gcc_version)
186
187   # For some reason, gettext needs this.
188   AC_ISC_POSIX
189
190   AC_CHECK_TOOL(AS, as)
191   AC_CHECK_TOOL(AR, ar)
192   AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
193   AC_PROG_INSTALL
194
195   AM_MAINTAINER_MODE
196
197   # We need AC_EXEEXT to keep automake happy in cygnus mode.  However,
198   # at least currently, we never actually build a program, so we never
199   # need to use $(EXEEXT).  Moreover, the test for EXEEXT normally
200   # fails, because we are probably configuring with a cross compiler
201   # which can't create executables.  So we include AC_EXEEXT to keep
202   # automake happy, but we don't execute it, since we don't care about
203   # the result.
204   if false; then
205     # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
206     # to nothing, so nothing would remain between `then' and `fi' if it
207     # were not for the `:' below.
208     :
209     AC_EXEEXT
210   fi
211
212   case [$]{glibcpp_basedir} in
213     /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
214     *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
215   esac
216
217   # Find platform-specific directories containing configuration info.  In
218   # addition to possibly modifying the same flags, it also sets up symlinks.
219   GLIBCPP_CHECK_HOST
220 ])
221
222
223 dnl
224 dnl Check to see if g++ can compile this library, and if so, if any version-
225 dnl specific precautions need to be taken.
226 dnl
227 dnl GLIBCPP_CHECK_COMPILER_VERSION
228 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
229 if test ! -f stamp-sanity-compiler; then
230   AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
231   AC_LANG_SAVE
232   AC_LANG_CPLUSPLUS
233   AC_TRY_COMPILE(, [
234   #if __GNUC__ < 3
235     not_ok
236   #endif
237   ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
238   AC_LANG_RESTORE
239   AC_MSG_RESULT($gpp_satisfactory)
240   touch stamp-sanity-compiler
241 fi
242 ])
243
244
245 dnl
246 dnl Tests for newer compiler features, or features that are present in newer
247 dnl compiler versions but not older compiler versions still in use, should
248 dnl be placed here.
249 dnl
250 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
251 dnl new inlining code or the new system_header pragma will die on -Werror.
252 dnl Leave it out by default and use maint-mode to use it.
253 dnl
254 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
255 dnl compiler supports it and the user has not requested debug mode.
256 dnl
257 dnl GLIBCPP_CHECK_COMPILER_FEATURES
258 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
259   # All these tests are for C++; save the language and the compiler flags.
260   # The CXXFLAGS thing is suspicious, but based on similar bits previously
261   # found in GLIBCPP_CONFIGURE.
262   AC_LANG_SAVE
263   AC_LANG_CPLUSPLUS
264   ac_test_CXXFLAGS="${CXXFLAGS+set}"
265   ac_save_CXXFLAGS="$CXXFLAGS"
266
267   # Check for maintainer-mode bits.
268   if test x"$USE_MAINTAINER_MODE" = xno; then
269     WERROR=''
270   else
271     WERROR='-Werror'
272   fi
273
274   # Check for -ffunction-sections -fdata-sections
275   AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
276   CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
277   AC_TRY_COMPILE(, [int foo;
278   ], [ac_fdsections=yes], [ac_fdsections=no])
279   if test "$ac_test_CXXFLAGS" = set; then
280     CXXFLAGS="$ac_save_CXXFLAGS"
281   else
282     # this is the suspicious part
283     CXXFLAGS=''
284   fi
285   if test x"$ac_fdsections" = x"yes"; then
286     SECTION_FLAGS='-ffunction-sections -fdata-sections'
287   fi
288   AC_MSG_RESULT($ac_fdsections)
289
290   AC_LANG_RESTORE
291   AC_SUBST(WERROR)
292   AC_SUBST(SECTION_FLAGS)
293 ])
294
295
296 dnl
297 dnl If GNU ld is in use, check to see if tricky linker opts can be used.  If
298 dnl the native linker is in use, all variables will be defined to something
299 dnl safe (like an empty string).
300 dnl
301 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
302 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
303 dnl Define LD, with_gnu_ld, and (possibly) glibcpp_gnu_ld_version as
304 dnl side-effects of testing.
305 dnl
306 dnl GLIBCPP_CHECK_LINKER_FEATURES
307 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
308   # If we're not using GNU ld, then there's no point in even trying these
309   # tests.  Check for that first.  We should have already tested for gld
310   # by now (in libtool), but require it now just to be safe...
311   test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
312   test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
313   AC_REQUIRE([AC_PROG_LD])
314
315   # The name set by libtool depends on the version of libtool.  Shame on us
316   # for depending on an impl detail, but c'est la vie.  Older versions used
317   # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
318   # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
319   # makes sense).  We'll test with_gnu_ld everywhere else, so if that isn't
320   # set (hence we're using an older libtool), then set it.
321   if test x${with_gnu_ld+set} != xset; then
322     if test x${ac_cv_prog_gnu_ld+set} != xset; then
323       # We got through "ac_require(ac_prog_ld)" and still not set?  Huh?
324       with_gnu_ld=no
325     else
326       with_gnu_ld=$ac_cv_prog_gnu_ld
327     fi
328   fi
329
330   # Start by getting the version number.  I think the libtool test already
331   # does some of this, but throws away the result.
332   changequote(,)
333   ldver=`$LD --version 2>/dev/null | head -1 | \
334          sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
335   changequote([,])
336   glibcpp_gnu_ld_version=`echo $ldver | \
337          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
338
339   # Set --gc-sections.
340   if test "$with_gnu_ld" = "notbroken"; then
341     # GNU ld it is!  Joy and bunny rabbits!
342
343     # All these tests are for C++; save the language and the compiler flags.
344     # Need to do this so that g++ won't try to link in libstdc++
345     ac_test_CFLAGS="${CFLAGS+set}"
346     ac_save_CFLAGS="$CFLAGS"
347     CFLAGS='-x c++  -Wl,--gc-sections'
348
349     # Check for -Wl,--gc-sections
350     # XXX This test is broken at the moment, as symbols required for
351     # linking are now in libsupc++ (not built yet.....). In addition,
352     # this test has cored on solaris in the past. In addition,
353     # --gc-sections doesn't really work at the moment (keeps on discarding
354     # used sections, first .eh_frame and now some of the glibc sections for
355     # iconv). Bzzzzt. Thanks for playing, maybe next time.
356     AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
357     AC_TRY_RUN([
358      int main(void)
359      {
360        try { throw 1; }
361        catch (...) { };
362        return 0;
363      }
364     ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
365     if test "$ac_test_CFLAGS" = set; then
366       CFLAGS="$ac_save_CFLAGS"
367     else
368       # this is the suspicious part
369       CFLAGS=''
370     fi
371     if test "$ac_sectionLDflags" = "yes"; then
372       SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
373     fi
374     AC_MSG_RESULT($ac_sectionLDflags)
375   fi
376
377   # Set linker optimization flags.
378   if test x"$with_gnu_ld" = x"yes"; then
379     OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
380   fi
381
382   AC_SUBST(SECTION_LDFLAGS)
383   AC_SUBST(OPT_LDFLAGS)
384 ])
385
386
387 dnl
388 dnl Check to see if the (math function) argument passed is
389 dnl declared when using the c++ compiler
390 dnl ASSUMES argument is a math function with ONE parameter
391 dnl
392 dnl GLIBCPP_CHECK_MATH_DECL_1
393 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
394   AC_MSG_CHECKING([for $1 declaration])
395   if test x${glibcpp_cv_func_$1_use+set} != xset; then
396     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
397       AC_LANG_SAVE
398       AC_LANG_CPLUSPLUS
399       AC_TRY_COMPILE([#include <math.h>
400                       #ifdef HAVE_IEEEFP_H
401                       #include <ieeefp.h>
402                       #endif
403                      ],
404                      [ $1(0);],
405                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
406       AC_LANG_RESTORE
407     ])
408   fi
409   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
410 ])
411
412 dnl
413 dnl Check to see if the (math function) argument passed is
414 dnl 1) declared when using the c++ compiler
415 dnl 2) has "C" linkage
416 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
417 dnl
418 dnl Define HAVE_CARGF etc if "cargf" is declared and links
419 dnl
420 dnl argument 1 is name of function to check
421 dnl
422 dnl ASSUMES argument is a math function with ONE parameter
423 dnl
424 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
425 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
426   GLIBCPP_CHECK_MATH_DECL_1($1)
427   if test x$glibcpp_cv_func_$1_use = x"yes"; then
428     AC_CHECK_FUNCS($1)
429   else
430     GLIBCPP_CHECK_MATH_DECL_1(_$1)
431     if test x$glibcpp_cv_func__$1_use = x"yes"; then
432       AC_CHECK_FUNCS(_$1)
433     fi
434   fi
435 ])
436
437
438 dnl
439 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
440 dnl of functions at once.  It's an all-or-nothing check -- either
441 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
442 dnl Doing it this way saves significant configure time.
443 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
444   AC_MSG_CHECKING([for $1 functions])
445   AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
446     AC_LANG_SAVE
447     AC_LANG_CPLUSPLUS
448     AC_TRY_COMPILE([#include <math.h>],
449                    [ `for x in $3; do echo "$x (0);"; done` ],
450                    [glibcpp_cv_func_$2_use=yes],
451                    [glibcpp_cv_func_$2_use=no])
452     AC_LANG_RESTORE])
453   AC_MSG_RESULT($glibcpp_cv_func_$2_use)
454   if test x$glibcpp_cv_func_$2_use = x"yes"; then
455     AC_CHECK_FUNCS($3)
456   fi
457 ])
458
459 dnl
460 dnl Check to see if the (math function) argument passed is
461 dnl declared when using the c++ compiler
462 dnl ASSUMES argument is a math function with TWO parameters
463 dnl
464 dnl GLIBCPP_CHECK_MATH_DECL_2
465 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
466   AC_MSG_CHECKING([for $1 declaration])
467   if test x${glibcpp_cv_func_$1_use+set} != xset; then
468     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
469       AC_LANG_SAVE
470       AC_LANG_CPLUSPLUS
471       AC_TRY_COMPILE([#include <math.h>],
472                      [ $1(0, 0);],
473                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
474       AC_LANG_RESTORE
475     ])
476   fi
477   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
478 ])
479
480 dnl
481 dnl Check to see if the (math function) argument passed is
482 dnl 1) declared when using the c++ compiler
483 dnl 2) has "C" linkage
484 dnl
485 dnl Define HAVE_CARGF etc if "cargf" is declared and links
486 dnl
487 dnl argument 1 is name of function to check
488 dnl
489 dnl ASSUMES argument is a math function with TWO parameters
490 dnl
491 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
492 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
493   GLIBCPP_CHECK_MATH_DECL_2($1)
494   if test x$glibcpp_cv_func_$1_use = x"yes"; then
495     AC_CHECK_FUNCS($1)
496   else
497     GLIBCPP_CHECK_MATH_DECL_2(_$1)
498     if test x$glibcpp_cv_func__$1_use = x"yes"; then
499       AC_CHECK_FUNCS(_$1)
500     fi
501   fi
502 ])
503
504
505 dnl
506 dnl Check to see if the (math function) argument passed is
507 dnl declared when using the c++ compiler
508 dnl ASSUMES argument is a math function with THREE parameters
509 dnl
510 dnl GLIBCPP_CHECK_MATH_DECL_3
511 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
512   AC_MSG_CHECKING([for $1 declaration])
513   if test x${glibcpp_cv_func_$1_use+set} != xset; then
514     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
515       AC_LANG_SAVE
516       AC_LANG_CPLUSPLUS
517       AC_TRY_COMPILE([#include <math.h>],
518                      [ $1(0, 0, 0);],
519                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
520       AC_LANG_RESTORE
521     ])
522   fi
523   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
524 ])
525
526 dnl
527 dnl Check to see if the (math function) argument passed is
528 dnl 1) declared when using the c++ compiler
529 dnl 2) has "C" linkage
530 dnl
531 dnl Define HAVE_CARGF etc if "cargf" is declared and links
532 dnl
533 dnl argument 1 is name of function to check
534 dnl
535 dnl ASSUMES argument is a math function with THREE parameters
536 dnl
537 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
538 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
539   GLIBCPP_CHECK_MATH_DECL_3($1)
540   if test x$glibcpp_cv_func_$1_use = x"yes"; then
541     AC_CHECK_FUNCS($1)
542   else
543     GLIBCPP_CHECK_MATH_DECL_3(_$1)
544     if test x$glibcpp_cv_func__$1_use = x"yes"; then
545       AC_CHECK_FUNCS(_$1)
546     fi
547   fi
548 ])
549
550
551 dnl
552 dnl Check to see if the (stdlib function) argument passed is
553 dnl 1) declared when using the c++ compiler
554 dnl 2) has "C" linkage
555 dnl
556 dnl argument 1 is name of function to check
557 dnl
558 dnl ASSUMES argument is a math function with TWO parameters
559 dnl
560 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
561 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
562   AC_MSG_CHECKING([for $1 declaration])
563   if test x${glibcpp_cv_func_$1_use+set} != xset; then
564     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
565       AC_LANG_SAVE
566       AC_LANG_CPLUSPLUS
567       AC_TRY_COMPILE([#include <stdlib.h>],
568                      [ $1(0, 0);],
569                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
570       AC_LANG_RESTORE
571     ])
572   fi
573   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
574   if test x$glibcpp_cv_func_$1_use = x"yes"; then
575     AC_CHECK_FUNCS($1)
576   fi
577 ])
578
579
580 dnl
581 dnl Check to see if the (stdlib function) argument passed is
582 dnl 1) declared when using the c++ compiler
583 dnl 2) has "C" linkage
584 dnl
585 dnl argument 1 is name of function to check
586 dnl
587 dnl ASSUMES argument is a function with THREE parameters
588 dnl
589 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3
590 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
591   AC_MSG_CHECKING([for $1 declaration])
592   if test x${glibcpp_cv_func_$1_use+set} != xset; then
593     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
594       AC_LANG_SAVE
595       AC_LANG_CPLUSPLUS
596       AC_TRY_COMPILE([#include <stdlib.h>],
597                      [ $1(0, 0, 0);],
598                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
599       AC_LANG_RESTORE
600     ])
601   fi
602   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
603   if test x$glibcpp_cv_func_$1_use = x"yes"; then
604     AC_CHECK_FUNCS($1)
605   fi
606 ])
607
608 dnl
609 dnl Because the builtins are picky picky picky about the arguments they take,
610 dnl do an explict linkage tests here.
611 dnl Check to see if the (math function) argument passed is
612 dnl 1) declared when using the c++ compiler
613 dnl 2) has "C" linkage
614 dnl
615 dnl Define HAVE_CARGF etc if "cargf" is declared and links
616 dnl
617 dnl argument 1 is name of function to check
618 dnl
619 dnl ASSUMES argument is a math function with ONE parameter
620 dnl
621 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
622 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
623   AC_MSG_CHECKING([for $1 declaration])
624   if test x${glibcpp_cv_func_$1_use+set} != xset; then
625     AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
626       AC_LANG_SAVE
627       AC_LANG_CPLUSPLUS
628       AC_TRY_COMPILE([#include <math.h>],
629                      [ $1(0);],
630                      [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
631       AC_LANG_RESTORE
632     ])
633   fi
634   AC_MSG_RESULT($glibcpp_cv_func_$1_use)
635   if test x$glibcpp_cv_func_$1_use = x"yes"; then
636     AC_MSG_CHECKING([for $1 linkage])
637     if test x${glibcpp_cv_func_$1_link+set} != xset; then
638       AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
639         AC_TRY_LINK([#include <math.h>],
640                     [ $1(0);],
641                     [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
642       ])
643     fi
644     AC_MSG_RESULT($glibcpp_cv_func_$1_link)
645     if test x$glibcpp_cv_func_$1_link = x"yes"; then
646       ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
647       AC_DEFINE_UNQUOTED(${ac_tr_func})
648     fi
649   fi
650 ])
651
652
653 dnl
654 dnl Check to see what builtin math functions are supported
655 dnl
656 dnl check for __builtin_abs
657 dnl check for __builtin_fabsf
658 dnl check for __builtin_fabs
659 dnl check for __builtin_fabl
660 dnl check for __builtin_labs
661 dnl check for __builtin_sqrtf
662 dnl check for __builtin_sqrtl
663 dnl check for __builtin_sqrt
664 dnl check for __builtin_sinf
665 dnl check for __builtin_sin
666 dnl check for __builtin_sinl
667 dnl check for __builtin_cosf
668 dnl check for __builtin_cos
669 dnl check for __builtin_cosl
670 dnl
671 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
672 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
673   dnl Test for builtin math functions.
674   dnl These are made in gcc/c-common.c
675   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
676   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
677   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
678   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
679   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
680
681   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
682   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
683   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
684
685   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
686   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
687   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
688
689   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
690   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
691   GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
692
693   dnl There is, without a doubt, a more elegant way to have these
694   dnl names exported so that they won't be stripped out of acconfig.h by
695   dnl autoheader. I leave this as an exercise to somebody less frustrated
696   dnl than I.... please email the libstdc++ list if you can figure out a
697   dnl more elegant approach (see autoconf/acgen.m4 and specifically
698   dnl AC_CHECK_FUNC for things to steal.)
699   dummyvar=no
700   if test x$dummyvar = x"yes"; then
701     AC_DEFINE(HAVE___BUILTIN_ABS)
702     AC_DEFINE(HAVE___BUILTIN_LABS)
703     AC_DEFINE(HAVE___BUILTIN_COS)
704     AC_DEFINE(HAVE___BUILTIN_COSF)
705     AC_DEFINE(HAVE___BUILTIN_COSL)
706     AC_DEFINE(HAVE___BUILTIN_FABS)
707     AC_DEFINE(HAVE___BUILTIN_FABSF)
708     AC_DEFINE(HAVE___BUILTIN_FABSL)
709     AC_DEFINE(HAVE___BUILTIN_SIN)
710     AC_DEFINE(HAVE___BUILTIN_SINF)
711     AC_DEFINE(HAVE___BUILTIN_SINL)
712     AC_DEFINE(HAVE___BUILTIN_SQRT)
713     AC_DEFINE(HAVE___BUILTIN_SQRTF)
714     AC_DEFINE(HAVE___BUILTIN_SQRTL)
715   fi
716 ])
717
718 dnl
719 dnl Check to see what the underlying c library is like
720 dnl These checks need to do two things:
721 dnl 1) make sure the name is declared when using the c++ compiler
722 dnl 2) make sure the name has "C" linkage
723 dnl This might seem like overkill but experience has shown that it's not...
724 dnl
725 dnl Define HAVE_STRTOLD if "strtold" is declared and links
726 dnl Define HAVE_STRTOF if "strtof" is declared and links
727 dnl Define HAVE_DRAND48 if "drand48" is declared and links
728 dnl
729 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
730 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
731   ac_test_CXXFLAGS="${CXXFLAGS+set}"
732   ac_save_CXXFLAGS="$CXXFLAGS"
733   CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
734
735   GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
736   GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
737   AC_CHECK_FUNCS(drand48)
738
739   CXXFLAGS="$ac_save_CXXFLAGS"
740 ])
741
742 dnl
743 dnl Check to see what the underlying c library or math library is like.
744 dnl These checks need to do two things:
745 dnl 1) make sure the name is declared when using the c++ compiler
746 dnl 2) make sure the name has "C" linkage
747 dnl This might seem like overkill but experience has shown that it's not...
748 dnl
749 dnl Define HAVE_CARGF etc if "cargf" is found.
750 dnl
751 dnl GLIBCPP_CHECK_MATH_SUPPORT
752 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
753   ac_test_CXXFLAGS="${CXXFLAGS+set}"
754   ac_save_CXXFLAGS="$CXXFLAGS"
755   CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
756
757   dnl Check libm
758   AC_CHECK_LIB(m, sin, libm="-lm")
759   ac_save_LIBS="$LIBS"
760   LIBS="$LIBS $libm"
761
762   dnl Check to see if certain C math functions exist.
763   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
764   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
765   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
766   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
767   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
768   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
769   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
770   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
771
772   dnl Check to see if basic C math functions have float versions.
773   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
774                                           float_trig,
775                                           acosf asinf atanf \
776                                           cosf sinf tanf \
777                                           coshf sinhf tanhf)
778   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
779                                           float_round,
780                                           ceilf floorf)
781   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
782   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
783   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
784   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
785   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
786   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
787   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
788   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
789   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
790   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
791   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
792   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
793   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
794   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
795   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
796   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
797
798   dnl Check to see if basic C math functions have long double versions.
799   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
800                                           long_double_trig,
801                                           acosl asinl atanl \
802                                           cosl sinl tanl \
803                                           coshl sinhl tanhl)
804   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
805                                           long_double_round,
806                                           ceill floorl)
807   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
808   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
809   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
810   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
811   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
812   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
813   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
814   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
815   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
816   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
817   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
818   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
819   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
820   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
821   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
822   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
823   GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
824
825   dnl Some runtimes have these functions with a preceding underscore. Please
826   dnl keep this sync'd with the one above. And if you add any new symbol,
827   dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
828   dnl Check to see if certain C math functions exist.
829
830   dnl Check to see if basic C math functions have float versions.
831   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
832                                           _float_trig,
833                                           _acosf _asinf _atanf \
834                                           _cosf _sinf _tanf \
835                                           _coshf _sinhf _tanhf)
836   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
837                                           _float_round,
838                                           _ceilf _floorf)
839
840   dnl Check to see if basic C math functions have long double versions.
841   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
842                                           _long_double_trig,
843                                           _acosl _asinl _atanl \
844                                           _cosl _sinl _tanl \
845                                           _coshl _sinhl _tanhl)
846   GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
847                                           _long_double_round,
848                                           _ceill _floorl)
849
850   LIBS="$ac_save_LIBS"
851   CXXFLAGS="$ac_save_CXXFLAGS"
852 ])
853
854
855 dnl
856 dnl Check to see if there is native support for complex
857 dnl
858 dnl Don't compile bits in math/* if native support exits.
859 dnl
860 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
861 dnl
862 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
863 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
864   dnl Check for complex versions of math functions of platform.
865   AC_CHECK_LIB(m, main)
866   AC_REPLACE_MATHFUNCS(nan copysignf)
867
868   dnl For __signbit to signbit conversions.
869   AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
870   AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
871
872   dnl Compile the long double complex functions only if the function
873   dnl provides the non-complex long double functions that are needed.
874   dnl Currently this includes copysignl, which should be
875   dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
876   if test x$ac_cv_func_copysignl = x"yes"; then
877     AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
878   fi
879
880   if test -n "$LIBMATHOBJS"; then
881     need_libmath=yes
882   fi
883   AC_SUBST(LIBMATHOBJS)
884   AM_CONDITIONAL(GLIBCPP_BUILD_LIBMATH,  test "$need_libmath" = yes)
885 ])
886
887
888 dnl Check to see what architecture and operating system we are compiling
889 dnl for.  Also, if architecture- or OS-specific flags are required for
890 dnl compilation, pick them up here.
891 dnl
892 dnl GLIBCPP_CHECK_HOST
893 AC_DEFUN(GLIBCPP_CHECK_HOST, [
894   . [$]{glibcpp_basedir}/configure.host
895   AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
896   AC_MSG_RESULT(OS config directory is $os_include_dir)
897 ])
898
899
900 dnl
901 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
902 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled.  (This
903 dnl must have been previously checked.)
904 dnl
905 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
906 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
907 dnl
908 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
909 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
910   dnl Wide characters disabled by default.
911   enable_wchar_t=no
912
913   dnl Test wchar.h for mbstate_t, which is needed for char_traits and
914   dnl others even if wchar_t support is not on.
915   AC_MSG_CHECKING([for mbstate_t])
916   AC_TRY_COMPILE([#include <wchar.h>],
917   [mbstate_t teststate;],
918   have_mbstate_t=yes, have_mbstate_t=no)
919   AC_MSG_RESULT($have_mbstate_t)
920   if test x"$have_mbstate_t" = xyes; then
921     AC_DEFINE(HAVE_MBSTATE_T)
922   fi
923
924   dnl Sanity check for existence of ISO C99 headers for extended encoding.
925   AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
926   AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
927
928   dnl Only continue checking if the ISO C99 headers exist and support is on.
929   if test x"$ac_has_wchar_h" = xyes &&
930      test x"$ac_has_wctype_h" = xyes &&
931      test x"$enable_c_mbchar" != xno; then
932
933     dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
934     dnl numeric_limits can instantiate type_traits<wchar_t>
935     AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
936     AC_TRY_COMPILE([#include <wchar.h>],
937     [int i = WCHAR_MIN; int j = WCHAR_MAX;],
938     has_wchar_minmax=yes, has_wchar_minmax=no)
939     AC_MSG_RESULT($has_wchar_minmax)
940
941     dnl Test wchar.h for WEOF, which is what we use to determine whether
942     dnl to specialize for char_traits<wchar_t> or not.
943     AC_MSG_CHECKING([for WEOF])
944     AC_TRY_COMPILE([
945       #include <wchar.h>
946       #include <stddef.h>],
947     [wint_t i = WEOF;],
948     has_weof=yes, has_weof=no)
949     AC_MSG_RESULT($has_weof)
950
951     dnl Tests for wide character functions used in char_traits<wchar_t>.
952     ac_wfuncs=yes
953     AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
954     ac_wfuncs=no)
955
956     dnl Checks for names injected into std:: by the c_std headers.
957     AC_CHECK_FUNCS(btowc wctob fgetwc fgetws fputwc fputws fwide \
958     fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
959     vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
960     mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
961     wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
962     wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
963     ac_wfuncs=no)
964
965     AC_MSG_CHECKING([for ISO C99 wchar_t support])
966     if test x"$has_weof" = xyes &&
967        test x"$has_wchar_minmax" = xyes &&
968        test x"$ac_wfuncs" = xyes; then
969       ac_isoC99_wchar_t=yes
970     else
971       ac_isoC99_wchar_t=no
972     fi
973     AC_MSG_RESULT($ac_isoC99_wchar_t)
974
975     dnl Use iconv for wchar_t to char conversions. As such, check for
976     dnl X/Open Portability Guide, version 2 features (XPG2).
977     AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
978     AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
979
980     dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
981     AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
982     ac_save_LIBS="$LIBS"
983     LIBS="$LIBS $libiconv"
984
985     AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
986     ac_XPG2funcs=yes, ac_XPG2funcs=no)
987
988     LIBS="$ac_save_LIBS"
989
990     AC_MSG_CHECKING([for XPG2 wchar_t support])
991     if test x"$ac_has_iconv_h" = xyes &&
992        test x"$ac_has_langinfo_h" = xyes &&
993        test x"$ac_XPG2funcs" = xyes; then
994       ac_XPG2_wchar_t=yes
995     else
996       ac_XPG2_wchar_t=no
997     fi
998     AC_MSG_RESULT($ac_XPG2_wchar_t)
999
1000     dnl At the moment, only enable wchar_t specializations if all the
1001     dnl above support is present.
1002     if test x"$ac_isoC99_wchar_t" = xyes && 
1003         test x"$ac_XPG2_wchar_t" = xyes; then
1004       AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
1005       enable_wchar_t=yes
1006     fi
1007   fi
1008   AC_MSG_CHECKING([for enabled wchar_t specializations])
1009   AC_MSG_RESULT($enable_wchar_t)        
1010   AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)    
1011 ])
1012
1013
1014 dnl
1015 dnl Check to see if debugging libraries are to be built.
1016 dnl
1017 dnl GLIBCPP_ENABLE_DEBUG
1018 dnl
1019 dnl --enable-debug
1020 dnl builds a separate set of debugging libraries in addition to the
1021 dnl normal (shared, static) libstdc++ binaries.
1022 dnl
1023 dnl --disable-debug
1024 dnl builds only one (non-debug) version of libstdc++.
1025 dnl
1026 dnl --enable-debug-flags=FLAGS
1027 dnl iff --enable-debug == yes, then use FLAGS to build the debug library.
1028 dnl
1029 dnl  +  Usage:  GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1030 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
1031 dnl       defaults to `no'.
1032 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1033 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1034 AC_ARG_ENABLE(debug,
1035 changequote(<<, >>)dnl
1036 <<  --enable-debug          build extra debug library [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1037 changequote([, ])dnl
1038 [case "${enableval}" in
1039  yes) enable_debug=yes ;;
1040  no)  enable_debug=no ;;
1041  *)   AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1042  esac],
1043 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
1044 AC_MSG_CHECKING([for additional debug build])
1045 AC_MSG_RESULT($enable_debug)
1046 AM_CONDITIONAL(GLIBCPP_BUILD_DEBUG, test "$enable_debug" = yes)
1047 ])
1048
1049
1050 dnl Check for explicit debug flags.
1051 dnl
1052 dnl GLIBCPP_ENABLE_DEBUG_FLAGS
1053 dnl
1054 dnl --enable-debug-flags='-O1'
1055 dnl is a general method for passing flags to be used when
1056 dnl building debug libraries with --enable-debug.
1057 dnl
1058 dnl --disable-debug-flags does nothing.
1059 dnl  +  Usage:  GLIBCPP_ENABLE_DEBUG_FLAGS(default flags)
1060 dnl       If "default flags" is an empty string (or "none"), the effect is
1061 dnl       the same as --disable or --enable=no.
1062 AC_DEFUN(GLIBCPP_ENABLE_DEBUG_FLAGS, [dnl
1063 define([GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1064 AC_ARG_ENABLE(debug_flags,
1065 changequote(<<, >>)dnl
1066 <<  --enable-debug-flags=FLAGS    pass compiler FLAGS when building debug
1067                         library;[default=>>GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT],
1068 changequote([, ])dnl
1069 [case "${enableval}" in
1070  none)  ;;
1071  -*) enable_debug_flags="${enableval}" ;;
1072  *)   AC_MSG_ERROR([Unknown argument to extra debugging flags]) ;;
1073  esac],
1074 enable_debug_flags=GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT)dnl
1075
1076 dnl Option parsed, now set things appropriately
1077 case x"$enable_debug" in
1078     xyes)
1079         case "$enable_debug_flags" in
1080           none)
1081             DEBUG_FLAGS="-g3 -O0";;
1082           -*) #valid input
1083             DEBUG_FLAGS="${enableval}"
1084         esac
1085         ;;
1086     xno)
1087         DEBUG_FLAGS=""
1088         ;;
1089 esac
1090 AC_SUBST(DEBUG_FLAGS)
1091
1092 AC_MSG_CHECKING([for debug build flags])
1093 AC_MSG_RESULT($DEBUG_FLAGS)
1094 ])
1095
1096
1097 dnl
1098 dnl Check for "unusual" flags to pass to the compiler while building.
1099 dnl
1100 dnl GLIBCPP_ENABLE_CXX_FLAGS
1101 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1102 dnl     experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1103 dnl     Somehow this same set of flags must be passed when [re]building
1104 dnl     libgcc.
1105 dnl --disable-cxx-flags passes nothing.
1106 dnl  +  See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
1107 dnl         http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
1108 dnl         http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
1109 dnl  +  Usage:  GLIBCPP_ENABLE_CXX_FLAGS(default flags)
1110 dnl       If "default flags" is an empty string (or "none"), the effect is
1111 dnl       the same as --disable or --enable=no.
1112 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1113 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1114 AC_MSG_CHECKING([for extra compiler flags for building])
1115 AC_ARG_ENABLE(cxx_flags,
1116 changequote(<<, >>)dnl
1117 <<  --enable-cxx-flags=FLAGS      pass compiler FLAGS when building library;
1118                                   [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1119 changequote([, ])dnl
1120 [case "x$enable_cxx_flags" in
1121   xyes)
1122     AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1123   xno | xnone | x)
1124     enable_cxx_flags='' ;;
1125   *)
1126     enable_cxx_flags="$enableval" ;;
1127 esac],
1128 enable_cxx_flags=GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT)
1129
1130 dnl Run through flags (either default or command-line) and set anything
1131 dnl extra (e.g., #defines) that must accompany particular g++ options.
1132 if test -n "$enable_cxx_flags"; then
1133   for f in $enable_cxx_flags; do
1134     case "$f" in
1135       -fhonor-std)  ;;
1136       -*)  ;;
1137       *)   # and we're trying to pass /what/ exactly?
1138            AC_MSG_ERROR([compiler flags start with a -]) ;;
1139     esac
1140   done
1141 fi
1142 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1143 AC_MSG_RESULT($EXTRA_CXX_FLAGS)
1144 AC_SUBST(EXTRA_CXX_FLAGS)
1145 ])
1146
1147
1148 dnl
1149 dnl Check for which locale library to use:  gnu or generic.
1150 dnl
1151 dnl GLIBCPP_ENABLE_CLOCALE
1152 dnl --enable-clocale=gnu sets config/locale/c_locale_gnu.cc and friends
1153 dnl --enable-clocale=generic sets config/locale/c_locale_generic.cc and friends
1154 dnl
1155 dnl default is generic
1156 dnl
1157 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1158   AC_MSG_CHECKING([for clocale to use])
1159   AC_ARG_ENABLE(clocale,
1160   [  --enable-clocale        enable model for target locale package.
1161   --enable-clocale=MODEL  use MODEL target-speific locale package. [default=generic]
1162   ],
1163   if test x$enable_clocale = xno; then
1164      enable_clocale=no
1165   fi,
1166      enable_clocale=no)
1167
1168   enable_clocale_flag=$enable_clocale
1169
1170   dnl Probe for locale support if no specific model is specified.
1171   dnl Default to "generic"
1172   if test x$enable_clocale_flag = xno; then
1173     case x${target_os} in
1174       xlinux* | xgnu*)
1175         AC_EGREP_CPP([_GLIBCPP_ok], [
1176         #include <features.h>
1177         #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1178           _GLIBCPP_ok
1179         #endif
1180         ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
1181
1182         # Test for bugs early in glibc-2.2.x series
1183         if test x$enable_clocale_flag = xgnu; then
1184           AC_TRY_RUN([
1185           #define _GNU_SOURCE 1
1186           #include <locale.h>
1187           #include <string.h>
1188           #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
1189           extern __typeof(newlocale) __newlocale;
1190           extern __typeof(duplocale) __duplocale;
1191           extern __typeof(strcoll_l) __strcoll_l;
1192           #endif
1193           int main()
1194           {
1195             const char __one[] = "Äuglein Augmen";
1196             const char __two[] = "Äuglein";
1197             int i;
1198             int j;
1199             __locale_t  loc;
1200             __locale_t  loc_dup;
1201             loc = __newlocale(1 << LC_ALL, "de_DE", 0);
1202             loc_dup = __duplocale(loc);
1203             i = __strcoll_l(__one, __two, loc);
1204             j = __strcoll_l(__one, __two, loc_dup);
1205             return 0;
1206           }
1207           ],
1208           [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
1209           [enable_clocale_flag=generic])
1210         fi
1211
1212         # ... at some point put __strxfrm_l tests in as well.
1213         ;;
1214       *)
1215         enable_clocale_flag=generic
1216         ;;
1217     esac
1218   fi
1219
1220   dnl Deal with gettext issues.
1221   AC_ARG_ENABLE(nls,
1222   [  --enable-nls            use Native Language Support (default)],
1223   , enable_nls=yes)
1224   USE_NLS=no
1225
1226   dnl Set configure bits for specified locale package
1227   case x${enable_clocale_flag} in
1228     xgeneric)
1229       AC_MSG_RESULT(generic)
1230
1231       CLOCALE_H=config/locale/generic/c_locale.h
1232       CLOCALE_CC=config/locale/generic/c_locale.cc
1233       CCODECVT_H=config/locale/generic/codecvt_specializations.h
1234       CCODECVT_CC=config/locale/generic/codecvt_members.cc
1235       CCOLLATE_CC=config/locale/generic/collate_members.cc
1236       CCTYPE_CC=config/locale/generic/ctype_members.cc
1237       CMESSAGES_H=config/locale/generic/messages_members.h
1238       CMESSAGES_CC=config/locale/generic/messages_members.cc
1239       CMONEY_CC=config/locale/generic/monetary_members.cc
1240       CNUMERIC_CC=config/locale/generic/numeric_members.cc
1241       CTIME_H=config/locale/generic/time_members.h
1242       CTIME_CC=config/locale/generic/time_members.cc
1243       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1244       ;;
1245     xgnu)
1246       AC_MSG_RESULT(gnu)
1247
1248       # Declare intention to use gettext, and add support for specific
1249       # languages.
1250       # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
1251       ALL_LINGUAS="de fr"
1252
1253       # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
1254       AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
1255       if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
1256         USE_NLS=yes
1257       fi
1258       # Export the build objects.
1259       for ling in $ALL_LINGUAS; do \
1260         glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \
1261         glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \
1262       done
1263       AC_SUBST(glibcpp_MOFILES)
1264       AC_SUBST(glibcpp_POFILES)
1265
1266       CLOCALE_H=config/locale/gnu/c_locale.h
1267       CLOCALE_CC=config/locale/gnu/c_locale.cc
1268       CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1269       CCODECVT_CC=config/locale/gnu/codecvt_members.cc
1270       CCOLLATE_CC=config/locale/gnu/collate_members.cc
1271       CCTYPE_CC=config/locale/gnu/ctype_members.cc
1272       CMESSAGES_H=config/locale/gnu/messages_members.h
1273       CMESSAGES_CC=config/locale/gnu/messages_members.cc
1274       CMONEY_CC=config/locale/gnu/monetary_members.cc
1275       CNUMERIC_CC=config/locale/gnu/numeric_members.cc
1276       CTIME_H=config/locale/gnu/time_members.h
1277       CTIME_CC=config/locale/gnu/time_members.cc
1278       CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
1279       ;;
1280     xieee_1003.1-2001)
1281       AC_MSG_RESULT(IEEE 1003.1)
1282
1283       CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
1284       CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
1285       CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1286       CCODECVT_CC=config/locale/generic/codecvt_members.cc
1287       CCOLLATE_CC=config/locale/generic/collate_members.cc
1288       CCTYPE_CC=config/locale/generic/ctype_members.cc
1289       CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
1290       CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
1291       CMONEY_CC=config/locale/generic/monetary_members.cc
1292       CNUMERIC_CC=config/locale/generic/numeric_members.cc
1293       CTIME_H=config/locale/generic/time_members.h
1294       CTIME_CC=config/locale/generic/time_members.cc
1295       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1296       ;;
1297     *)
1298       echo "$enable_clocale is an unknown locale package" 1>&2
1299       exit 1
1300       ;;
1301   esac
1302
1303   # This is where the testsuite looks for locale catalogs, using the
1304   # -DLOCALEDIR define during testsuite compilation.
1305   glibcpp_localedir=${glibcpp_builddir}/po/share/locale
1306   AC_SUBST(glibcpp_localedir)
1307
1308   # A standalone libintl (e.g., GNU libintl) may be in use.
1309   if test $USE_NLS = yes; then
1310     AC_CHECK_HEADERS([libintl.h], [], USE_NLS=no)
1311     AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no)
1312   fi
1313   if test $USE_NLS = yes; then
1314     AC_DEFINE(_GLIBCPP_USE_NLS)
1315   fi
1316
1317   AC_SUBST(USE_NLS)
1318   AC_SUBST(CLOCALE_H)
1319   AC_SUBST(CCODECVT_H)
1320   AC_SUBST(CMESSAGES_H)
1321   AC_SUBST(CCODECVT_CC)
1322   AC_SUBST(CCOLLATE_CC)
1323   AC_SUBST(CCTYPE_CC)
1324   AC_SUBST(CMESSAGES_CC)
1325   AC_SUBST(CMONEY_CC)
1326   AC_SUBST(CNUMERIC_CC)
1327   AC_SUBST(CTIME_H)
1328   AC_SUBST(CTIME_CC)
1329   AC_SUBST(CLOCALE_CC)
1330   AC_SUBST(CLOCALE_INTERNAL_H)
1331 ])
1332
1333
1334 dnl
1335 dnl Check for which I/O library to use:  libio, or something specific.
1336 dnl
1337 dnl GLIBCPP_ENABLE_CSTDIO
1338 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1339 dnl
1340 dnl default is stdio
1341 dnl
1342 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1343   AC_MSG_CHECKING([for cstdio to use])
1344   AC_ARG_ENABLE(cstdio,
1345   [  --enable-cstdio         enable stdio for target io package.
1346   --enable-cstdio=LIB     use LIB target-speific io package. [default=stdio]
1347   ],
1348   if test x$enable_cstdio = xno; then
1349      enable_cstdio=stdio
1350   fi,
1351      enable_cstdio=stdio)
1352
1353   enable_cstdio_flag=$enable_cstdio
1354
1355   dnl Check if a valid I/O package
1356   case x${enable_cstdio_flag} in
1357     xlibio)
1358       CSTDIO_H=config/io/c_io_libio.h
1359       BASIC_FILE_H=config/io/basic_file_libio.h
1360       BASIC_FILE_CC=config/io/basic_file_libio.cc
1361       AC_MSG_RESULT(libio)
1362
1363       # see if we are on a system with libio native (ie, linux)
1364       AC_CHECK_HEADER(libio.h,  has_libio=yes, has_libio=no)
1365
1366       # Need to check and see what version of glibc is being used. If
1367       # it's not glibc-2.2 or higher, then we'll need to go ahead and
1368       # compile most of libio for linux systems.
1369       if test x$has_libio = x"yes"; then
1370         case "$target" in
1371           *-*-linux*)
1372               AC_MSG_CHECKING([for glibc version >= 2.2])
1373               AC_EGREP_CPP([ok], [
1374             #include <features.h>
1375               #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1376                     ok
1377               #endif
1378               ], glibc_satisfactory=yes, glibc_satisfactory=no)
1379               AC_MSG_RESULT($glibc_satisfactory)
1380             ;;
1381         esac
1382
1383         # XXX at the moment, admit defeat and force the recompilation
1384         # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1385         glibc_satisfactory=no
1386
1387         if test x$glibc_satisfactory = x"yes"; then
1388            need_libio=no
1389            need_wlibio=no
1390         else
1391            need_libio=yes
1392            # bkoz XXX need to add checks to enable this
1393            # pme XXX here's a first pass at such a check
1394            if test x$enable_c_mbchar != xno; then
1395               need_wlibio=yes
1396            else
1397               need_wlibio=no
1398            fi
1399         fi
1400
1401       else
1402          # Using libio, but <libio.h> doesn't exist on the target system. . .
1403          need_libio=yes
1404          # bkoz XXX need to add checks to enable this
1405          # pme XXX here's a first pass at such a check
1406          if test x$enable_c_mbchar != xno; then
1407              need_wlibio=yes
1408          else
1409              need_wlibio=no
1410          fi
1411       fi
1412       ;;
1413     xstdio | x | xno | xnone | xyes)
1414       # default
1415       CSTDIO_H=config/io/c_io_stdio.h
1416       BASIC_FILE_H=config/io/basic_file_stdio.h
1417       BASIC_FILE_CC=config/io/basic_file_stdio.cc
1418       AC_MSG_RESULT(stdio)
1419
1420       # We're not using stdio.
1421       need_libio=no
1422       need_wlibio=no
1423       ;;
1424     *)
1425       echo "$enable_cstdio is an unknown io package" 1>&2
1426       exit 1
1427       ;;
1428   esac
1429   AC_SUBST(CSTDIO_H)
1430   AC_SUBST(BASIC_FILE_H)
1431   AC_SUBST(BASIC_FILE_CC)
1432
1433   # 2000-08-04 bkoz hack
1434   CCODECVT_C=config/io/c_io_libio_codecvt.c
1435   AC_SUBST(CCODECVT_C)
1436   # 2000-08-04 bkoz hack
1437
1438   AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1439                  test "$need_libio" = yes || test "$need_wlibio" = yes)
1440   AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1441   AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1442   if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1443     libio_la=../libio/libio.la
1444   else
1445     libio_la=
1446   fi
1447   AC_SUBST(libio_la)
1448 ])
1449
1450
1451 dnl
1452 dnl Check to see if building and using a C++ precompiled header can be done.
1453 dnl
1454 dnl GLIBCPP_CHECK_PCH
1455 dnl
1456 dnl If it looks like it may work, flip bits on in include/Makefile.am
1457 dnl
1458 AC_DEFUN(GLIBCPP_CHECK_PCH, [
1459   ac_test_CXXFLAGS="${CXXFLAGS+set}"
1460   ac_save_CXXFLAGS="$CXXFLAGS"
1461   CXXFLAGS='-Werror -Winvalid-pch -Wno-deprecated -x c++-header'
1462
1463   AC_MSG_CHECKING([for compiler that seems to compile .gch files])
1464   if test x${glibcpp_pch_comp+set} != xset; then
1465     AC_CACHE_VAL(glibcpp_pch_comp, [
1466       AC_LANG_SAVE
1467       AC_LANG_CPLUSPLUS
1468       AC_TRY_COMPILE([#include <math.h>
1469                      ],
1470                      [ $1(0);],
1471                      [glibcpp_pch_comp=yes], [glibcpp_pch_comp=no])
1472       AC_LANG_RESTORE
1473     ])
1474   fi
1475   AC_MSG_RESULT([$glibcpp_pch_comp])
1476
1477   CXXFLAGS="$ac_save_CXXFLAGS"
1478   AM_CONDITIONAL(GLIBCPP_BUILD_PCH, test "$glibcpp_pch_comp" = yes)
1479 ])
1480
1481 dnl
1482 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1483 dnl We must stage the required headers so that they will be installed
1484 dnl with the library (unlike libgcc, the STL implementation is provided
1485 dnl solely within headers).  Since we must not inject random user-space
1486 dnl macro names into user-provided C++ code, we first stage into <file>-in
1487 dnl and process to <file> with an output command.  The reason for a two-
1488 dnl stage process here is to correctly handle $srcdir!=$objdir without
1489 dnl having to write complex code (the sed commands to clean the macro
1490 dnl namespace are complex and fragile enough as it is).  We must also
1491 dnl add a relative path so that -I- is supported properly.
1492 dnl
1493 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1494   AC_MSG_CHECKING([for thread model used by GCC])
1495   target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1496   AC_MSG_RESULT([$target_thread_file])
1497
1498   if test $target_thread_file != single; then
1499     AC_DEFINE(HAVE_GTHR_DEFAULT)
1500     AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1501   fi
1502
1503   glibcpp_thread_h=gthr-$target_thread_file.h
1504   AC_SUBST(glibcpp_thread_h)
1505 ])
1506
1507
1508 dnl
1509 dnl Check for exception handling support.  If an explicit enable/disable
1510 dnl sjlj exceptions is given, we don't have to detect.  Otherwise the
1511 dnl target may or may not support call frame exceptions.
1512 dnl
1513 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1514 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1515 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1516 dnl
1517 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1518 dnl
1519 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1520   AC_MSG_CHECKING([for exception model to use])
1521   AC_LANG_SAVE
1522   AC_LANG_CPLUSPLUS
1523   AC_ARG_ENABLE(sjlj-exceptions,
1524   [  --enable-sjlj-exceptions  force use of builtin_setjmp for exceptions],
1525   [:],
1526   [dnl Botheration.  Now we've got to detect the exception model.
1527    dnl Link tests against libgcc.a are problematic since -- at least
1528    dnl as of this writing -- we've not been given proper -L bits for
1529    dnl single-tree newlib and libgloss.
1530    dnl
1531    dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1532    dnl conftest files before we got a change to grep them first.
1533    cat > conftest.$ac_ext << EOF
1534 [#]line __oline__ "configure"
1535 struct S { ~S(); };
1536 void bar();
1537 void foo()
1538 {
1539   S s;
1540   bar();
1541 }
1542 EOF
1543    old_CXXFLAGS="$CXXFLAGS"
1544    CXXFLAGS=-S
1545    if AC_TRY_EVAL(ac_compile); then
1546      if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1547        enable_sjlj_exceptions=yes
1548      elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1549        enable_sjlj_exceptions=no
1550      fi
1551    fi
1552    CXXFLAGS="$old_CXXFLAGS"
1553    rm -f conftest*])
1554    if test x$enable_sjlj_exceptions = xyes; then
1555      AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1556         [Define if the compiler is configured for setjmp/longjmp exceptions.])
1557      ac_exception_model_name=sjlj
1558    elif test x$enable_sjlj_exceptions = xno; then
1559      ac_exception_model_name="call frame"
1560    else
1561      AC_MSG_ERROR([unable to detect exception model])
1562    fi
1563    AC_LANG_RESTORE
1564    AC_MSG_RESULT($ac_exception_model_name)
1565 ])
1566
1567
1568 dnl
1569 dnl Check for libunwind exception handling support. If enabled then
1570 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1571 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1572 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1573 dnl on libunwind as well as libgcc.
1574 dnl
1575 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1576 dnl --enable-libunwind-exceptions forces the use of libunwind.
1577 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1578 dnl
1579 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1580 dnl
1581 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1582   AC_MSG_CHECKING([for use of libunwind])
1583   AC_ARG_ENABLE(libunwind-exceptions,
1584   [  --enable-libunwind-exceptions  force use of libunwind for exceptions],
1585   use_libunwind_exceptions=$enableval,
1586   use_libunwind_exceptions=no)
1587   AC_MSG_RESULT($use_libunwind_exceptions)
1588   dnl Option parsed, now set things appropriately
1589   if test x"$use_libunwind_exceptions" = xyes; then
1590     LIBUNWIND_FLAG="-lunwind"
1591   else
1592     LIBUNWIND_FLAG=""
1593   fi
1594   AC_SUBST(LIBUNWIND_FLAG)
1595 ])
1596
1597 dnl
1598 dnl Check for ISO/IEC 9899:1999 "C99" support.
1599 dnl
1600 dnl GLIBCPP_ENABLE_C99
1601 dnl --enable-c99 defines _GLIBCPP_USE_C99
1602 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1603 dnl  +  Usage:  GLIBCPP_ENABLE_C99[(DEFAULT)]
1604 dnl       Where DEFAULT is either `yes' or `no'.  If omitted, it
1605 dnl       defaults to `no'.
1606 dnl  +  If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1607 dnl
1608 dnl GLIBCPP_ENABLE_C99
1609 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1610   define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1611
1612   AC_ARG_ENABLE(c99,
1613   changequote(<<, >>)dnl
1614   <<--enable-c99            turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1615   changequote([, ])dnl
1616   [case "$enableval" in
1617    yes) enable_c99=yes ;;
1618    no)  enable_c99=no ;;
1619    *)   AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1620    esac],
1621   enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1622
1623   AC_LANG_SAVE
1624   AC_LANG_CPLUSPLUS
1625
1626   # Check for the existence of <math.h> functions used if C99 is enabled.
1627   ac_c99_math=yes;
1628   AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1629   AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1630   AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1631   AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1632   AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1633   AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1634   AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1635   AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1636   AC_TRY_COMPILE([#include <math.h>],
1637                  [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1638   AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1639   AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1640   AC_TRY_COMPILE([#include <math.h>],
1641                  [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1642   AC_TRY_COMPILE([#include <math.h>],
1643                  [isunordered(0.0,0.0);],, [ac_c99_math=no])
1644   AC_MSG_RESULT($ac_c99_math)
1645
1646   # Check for the existence in <stdio.h> of vscanf, et. al.
1647   ac_c99_stdio=yes;
1648   AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1649   AC_TRY_COMPILE([#include <stdio.h>],
1650                  [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1651   AC_TRY_COMPILE([#include <stdio.h>
1652                   #include <stdarg.h>
1653                   void foo(char* fmt, ...)
1654                   {va_list args; va_start(args, fmt);
1655                   vfscanf(stderr, "%i", args);}],
1656                   [],, [ac_c99_stdio=no])
1657   AC_TRY_COMPILE([#include <stdio.h>
1658                   #include <stdarg.h>
1659                   void foo(char* fmt, ...)
1660                   {va_list args; va_start(args, fmt);
1661                   vscanf("%i", args);}],
1662                   [],, [ac_c99_stdio=no])
1663   AC_TRY_COMPILE([#include <stdio.h>
1664                   #include <stdarg.h>
1665                   void foo(char* fmt, ...)
1666                   {va_list args; va_start(args, fmt);
1667                   vsnprintf(fmt, 0, "%i", args);}],
1668                   [],, [ac_c99_stdio=no])
1669   AC_TRY_COMPILE([#include <stdio.h>
1670                   #include <stdarg.h>
1671                   void foo(char* fmt, ...)
1672                   {va_list args; va_start(args, fmt);
1673                   vsscanf(fmt, "%i", args);}],
1674                   [],, [ac_c99_stdio=no])
1675   AC_MSG_RESULT($ac_c99_stdio)
1676
1677   # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1678   ac_c99_stdlib=yes;
1679   AC_MSG_CHECKING([for lldiv_t declaration])
1680   AC_CACHE_VAL(ac_c99_lldiv_t, [
1681   AC_TRY_COMPILE([#include <stdlib.h>],
1682                    [ lldiv_t mydivt;],
1683                    [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1684   ])
1685   AC_MSG_RESULT($ac_c99_lldiv_t)
1686
1687   AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1688   AC_TRY_COMPILE([#include <stdlib.h>],
1689                  [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1690   AC_TRY_COMPILE([#include <stdlib.h>],
1691                  [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1692   AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1693   AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1694   AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1695   AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1696   if test x"$ac_c99_lldiv_t" = x"no"; then
1697     ac_c99_stdlib=no;
1698   fi;
1699   AC_MSG_RESULT($ac_c99_stdlib)
1700
1701   # Check for the existence of <wchar.h> functions used if C99 is enabled.
1702   # XXX the wchar.h checks should be rolled into the general C99 bits.
1703   ac_c99_wchar=yes;
1704   AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1705   AC_TRY_COMPILE([#include <wchar.h>],
1706                  [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1707   AC_TRY_COMPILE([#include <wchar.h>],
1708                  [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1709   AC_TRY_COMPILE([#include <wchar.h>],
1710                  [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1711   AC_MSG_RESULT($ac_c99_wchar)
1712
1713   AC_MSG_CHECKING([for enabled ISO C99 support])
1714   if test x"$ac_c99_math" = x"no" ||
1715      test x"$ac_c99_stdio" = x"no" ||
1716      test x"$ac_c99_stdlib" = x"no" ||
1717      test x"$ac_c99_wchar" = x"no"; then
1718     enable_c99=no;
1719   fi;
1720   AC_MSG_RESULT($enable_c99)
1721
1722   # Option parsed, now set things appropriately
1723   if test x"$enable_c99" = x"yes"; then
1724     AC_DEFINE(_GLIBCPP_USE_C99)
1725   fi
1726
1727   AC_LANG_RESTORE
1728 ])
1729
1730
1731 dnl
1732 dnl Check for template specializations for the 'long long' type extension.
1733 dnl The result determines only whether 'long long' I/O is enabled; things
1734 dnl like numeric_limits<> specializations are always available.
1735 dnl
1736 dnl GLIBCPP_ENABLE_LONG_LONG
1737 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1738 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1739 dnl  +  Usage:  GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1740 dnl       Where DEFAULT is either `yes' or `no'.  If omitted, it
1741 dnl       defaults to `no'.
1742 dnl  +  If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1743 dnl
1744 dnl GLIBCPP_ENABLE_LONG_LONG
1745 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1746   define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1747
1748   AC_ARG_ENABLE(long-long,
1749   changequote(<<, >>)dnl
1750   <<--enable-long-long      turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1751   changequote([, ])dnl
1752   [case "$enableval" in
1753    yes) enable_long_long=yes ;;
1754    no)  enable_long_long=no ;;
1755    *)   AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1756    esac],
1757   enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1758
1759   AC_LANG_SAVE
1760   AC_LANG_CPLUSPLUS
1761
1762   AC_MSG_CHECKING([for enabled long long I/O support])
1763   # iostreams require strtoll, strtoull to compile
1764   AC_TRY_COMPILE([#include <stdlib.h>],
1765                  [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1766   AC_TRY_COMPILE([#include <stdlib.h>],
1767                  [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1768
1769   # Option parsed, now set things appropriately
1770   if test x"$enable_long_long" = xyes; then
1771     AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1772   fi
1773   AC_MSG_RESULT($enable_long_long)
1774
1775   AC_LANG_RESTORE
1776 ])
1777
1778
1779 dnl
1780 dnl Check for what type of C headers to use.
1781 dnl
1782 dnl GLIBCPP_ENABLE_CHEADERS
1783 dnl --enable-cheaders= [does stuff].
1784 dnl --disable-cheaders [does not do anything, really].
1785 dnl  +  Usage:  GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1786 dnl       Where DEFAULT is either `c' or `c_std'.
1787 dnl       If ommitted, it defaults to `c_std'.
1788 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1789 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1790 AC_MSG_CHECKING([for c header strategy to use])
1791 AC_ARG_ENABLE(cheaders,
1792 changequote(<<, >>)dnl
1793 <<  --enable-cheaders=MODEL       construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1794 changequote([, ])
1795   [case "$enableval" in
1796    c)
1797         enable_cheaders=c
1798         ;;
1799    c_std)
1800         enable_cheaders=c_std
1801         ;;
1802    *)   AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1803         ;;
1804   esac],
1805   enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1806   AC_MSG_RESULT($enable_cheaders)
1807
1808   dnl Option parsed, now set things appropriately
1809   case "$enable_cheaders" in
1810     c_std)
1811         C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1812         ;;
1813     c)
1814         C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1815         ;;
1816   esac
1817
1818   AC_SUBST(C_INCLUDE_DIR)
1819   AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1820   AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1821   AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1822 ])
1823
1824
1825 dnl
1826 dnl Check for wide character support.  Has the same effect as the option
1827 dnl in gcc's configure, but in a form that autoconf can mess with.
1828 dnl
1829 dnl GLIBCPP_ENABLE_C_MBCHAR
1830 dnl --enable-c-mbchar requests all the wchar_t stuff.
1831 dnl --disable-c-mbchar doesn't.
1832 dnl  +  Usage:  GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1833 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
1834 dnl       defaults to `no'.
1835 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1836 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1837 AC_ARG_ENABLE(c-mbchar,
1838 changequote(<<, >>)dnl
1839 <<  --enable-c-mbchar       enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1840 changequote([, ])dnl
1841 [case "$enableval" in
1842  yes) enable_c_mbchar=yes ;;
1843  no)  enable_c_mbchar=no ;;
1844  *)   AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1845  esac],
1846 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1847 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1848 ])
1849
1850
1851 dnl
1852 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1853 dnl
1854 dnl TOPLEVEL_INCLUDES
1855 dnl LIBMATH_INCLUDES
1856 dnl LIBSUPCXX_INCLUDES
1857 dnl LIBIO_INCLUDES
1858 dnl
1859 dnl GLIBCPP_EXPORT_INCLUDES
1860 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1861   # Root level of the build directory include sources.
1862   GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1863
1864   # Passed down for canadian crosses.
1865   if test x"$CANADIAN" = xyes; then
1866     TOPLEVEL_INCLUDES='-I$(includedir)'
1867   fi
1868
1869   LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1870
1871   LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1872
1873   if test x"$need_libio" = xyes; then
1874     LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1875     AC_SUBST(LIBIO_INCLUDES)
1876   fi
1877
1878   # Now, export this to all the little Makefiles....
1879   AC_SUBST(GLIBCPP_INCLUDES)
1880   AC_SUBST(TOPLEVEL_INCLUDES)
1881   AC_SUBST(LIBMATH_INCLUDES)
1882   AC_SUBST(LIBSUPCXX_INCLUDES)
1883 ])
1884
1885
1886 dnl
1887 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1888 dnl
1889 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1890   # Optimization flags that are probably a good idea for thrill-seekers. Just
1891   # uncomment the lines below and make, everything else is ready to go...
1892   # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1893   OPTIMIZE_CXXFLAGS=
1894   AC_SUBST(OPTIMIZE_CXXFLAGS)
1895
1896   WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings'
1897   AC_SUBST(WARN_FLAGS)
1898 ])
1899
1900 dnl
1901 dnl  GLIBCPP_EXPORT_INSTALL_INFO
1902 dnl  calculates gxx_install_dir
1903 dnl  exports glibcpp_toolexecdir
1904 dnl  exports glibcpp_toolexeclibdir
1905 dnl  exports glibcpp_prefixdir
1906 dnl
1907 dnl Assumes cross_compiling bits already done, and with_cross_host in
1908 dnl particular
1909 dnl
1910 dnl GLIBCPP_EXPORT_INSTALL_INFO
1911 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1912 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1913 # exported correctly in GLIBCPP_CONFIGURE.
1914 glibcpp_toolexecdir=no
1915 glibcpp_toolexeclibdir=no
1916 glibcpp_prefixdir=${prefix}
1917
1918 # Process the option --with-gxx-include-dir=<path to include-files directory>
1919 AC_MSG_CHECKING([for --with-gxx-include-dir])
1920 AC_ARG_WITH(gxx-include-dir,
1921 [  --with-gxx-include-dir  the installation directory for include files],
1922 [case "${withval}" in
1923   yes)
1924     AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1925     gxx_include_dir=no
1926     ;;
1927   no)
1928     gxx_include_dir=no
1929     ;;
1930   *)
1931     gxx_include_dir=${withval}
1932     ;;
1933 esac], [gxx_include_dir=no])
1934 AC_MSG_RESULT($gxx_include_dir)
1935
1936 # Process the option "--enable-version-specific-runtime-libs"
1937 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1938 AC_ARG_ENABLE(version-specific-runtime-libs,
1939 [  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
1940 [case "$enableval" in
1941  yes) version_specific_libs=yes ;;
1942  no)  version_specific_libs=no ;;
1943  *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1944  esac],
1945 version_specific_libs=no)dnl
1946 # Option set, now we can test it.
1947 AC_MSG_RESULT($version_specific_libs)
1948
1949 # Default case for install directory for include files.
1950 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1951   gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1952 fi
1953
1954 # Version-specific runtime libs processing.
1955 if test $version_specific_libs = yes; then
1956   # Need the gcc compiler version to know where to install libraries
1957   # and header files if --enable-version-specific-runtime-libs option
1958   # is selected.
1959   if test x"$gxx_include_dir" = x"no"; then
1960     gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1961   fi
1962   glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1963   glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1964 fi
1965
1966 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1967 # Install a library built with a cross compiler in tooldir, not libdir.
1968 if test x"$glibcpp_toolexecdir" = x"no"; then
1969   if test -n "$with_cross_host" &&
1970      test x"$with_cross_host" != x"no"; then
1971     glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1972     glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1973   else
1974     glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1975     glibcpp_toolexeclibdir='$(libdir)'
1976   fi
1977   multi_os_directory=`$CC -print-multi-os-directory`
1978   case $multi_os_directory in
1979   .) ;; # Avoid trailing /.
1980   *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1981   esac
1982 fi
1983
1984 AC_MSG_CHECKING([for install location])
1985 AC_MSG_RESULT($gxx_include_dir)
1986
1987 AC_SUBST(glibcpp_prefixdir)
1988 AC_SUBST(gxx_include_dir)
1989 AC_SUBST(glibcpp_toolexecdir)
1990 AC_SUBST(glibcpp_toolexeclibdir)
1991 ])
1992
1993
1994 # Check for functions in math library.
1995 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1996 #
1997 # This file can be copied and used freely without restrictions.  It can
1998 # be used in projects which are not available under the GNU Public License
1999 # but which still want to provide support for the GNU gettext functionality.
2000 # Please note that the actual code is *not* freely available.
2001
2002 # serial 1
2003
2004 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
2005 AC_DEFUN(AC_REPLACE_MATHFUNCS,
2006 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
2007
2008
2009 dnl This macro searches for a GNU version of make.  If a match is found, the
2010 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
2011 dnl set to "#". This is useful for  including a special features in a Makefile,
2012 dnl which cannot be handled by other versions of make.  The variable
2013 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
2014 dnl the empty string otherwise.
2015 dnl
2016 dnl Here is an example of its use:
2017 dnl
2018 dnl Makefile.in might contain:
2019 dnl
2020 dnl     # A failsafe way of putting a dependency rule into a makefile
2021 dnl     $(DEPEND):
2022 dnl             $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2023 dnl
2024 dnl     @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2025 dnl     @ifGNUmake@ include $(DEPEND)
2026 dnl     @ifGNUmake@ endif
2027 dnl
2028 dnl Then configure.in would normally contain:
2029 dnl
2030 dnl     CHECK_GNU_MAKE()
2031 dnl     AC_OUTPUT(Makefile)
2032 dnl
2033 dnl Then perhaps to cause gnu make to override any other make, we could do
2034 dnl something like this (note that GNU make always looks for GNUmakefile first):
2035 dnl
2036 dnl     if  ! test x$_cv_gnu_make_command = x ; then
2037 dnl             mv Makefile GNUmakefile
2038 dnl             echo .DEFAULT: > Makefile ;
2039 dnl             echo \  $_cv_gnu_make_command \$@ >> Makefile;
2040 dnl     fi
2041 dnl
2042 dnl Then, if any (well almost any) other make is called, and GNU make also
2043 dnl exists, then the other make wraps the GNU make.
2044 dnl
2045 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2046 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2047 dnl
2048 dnl #### Changes for libstdc++-v3:  reformatting and linewrapping; prepending
2049 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2050 dnl #### conditional's subshell (" --version" is not a command), using a
2051 dnl #### different option to grep(1).
2052 dnl #### -pme
2053 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2054 dnl #### ${MAKE:-make}).
2055 dnl #### -msokolov
2056 AC_DEFUN(
2057   GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2058           _cv_gnu_make_command='' ;
2059 dnl Search all the common names for GNU make
2060           for a in "${MAKE-make}" make gmake gnumake ; do
2061                   if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2062                   then
2063                           _cv_gnu_make_command=$a ;
2064                           break;
2065                   fi
2066           done ;
2067   ) ;
2068 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2069 dnl string, '#' otherwise
2070   if test  "x$_cv_gnu_make_command" != "x"  ; then
2071           ifGNUmake='' ;
2072   else
2073           ifGNUmake='#' ;
2074   fi
2075   AC_SUBST(ifGNUmake)
2076 ])
2077
2078
2079 dnl Check for headers for, and arguments to, the setrlimit() function.
2080 dnl Used only in testsuite_hooks.h.
2081 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2082   AC_TRY_COMPILE([#include <unistd.h>
2083                   #include <sys/time.h>
2084                   #include <sys/resource.h>
2085                  ], [ int f = RLIMIT_$1 ; ],
2086                  [glibcpp_mresult=1], [glibcpp_mresult=0])
2087   AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2088                      [Only used in build directory testsuite_hooks.h.])
2089 ])
2090 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2091   setrlimit_have_headers=yes
2092   AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2093                    [],
2094                    setrlimit_have_headers=no)
2095   # If don't have the headers, then we can't run the tests now, and we
2096   # won't be seeing any of these during testsuite compilation.
2097   if test $setrlimit_have_headers = yes; then
2098     # Can't do these in a loop, else the resulting syntax is wrong.
2099     GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2100     GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2101     GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2102     GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2103
2104     # Check for rlimit, setrlimit.
2105     AC_CACHE_VAL(ac_setrlimit, [
2106       AC_TRY_COMPILE([#include <unistd.h>
2107                   #include <sys/time.h>
2108                   #include <sys/resource.h>
2109                      ],
2110                      [ struct rlimit r; setrlimit(0, &r);],
2111                      [ac_setrlimit=yes], [ac_setrlimit=no])
2112     ])
2113   fi
2114
2115   AC_MSG_CHECKING([for testsuite memory limit support])
2116   if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2117     ac_mem_limits=yes
2118     AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2119   else
2120     ac_mem_limits=no
2121   fi
2122   AC_MSG_RESULT($ac_mem_limits)
2123 ])
2124
2125
2126 dnl
2127 dnl Does any necessary configuration of the testsuite directory.  Generates
2128 dnl the testsuite_hooks.h header.
2129 dnl
2130 dnl GLIBCPP_CONFIGURE_TESTSUITE  [no args]
2131 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2132   GLIBCPP_CHECK_SETRLIMIT
2133
2134   # Look for setenv, so that extended locale tests can be performed.
2135   GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2136
2137   # Export file names for ABI checking.
2138   baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2139   AC_SUBST(baseline_file)
2140
2141   case "$target" in
2142     *-*-cygwin* ) enable_abi_check=no ;;
2143     * ) enable_abi_check=yes ;;
2144   esac
2145
2146   # Don't do ABI checking unless native.
2147   AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2148                  test x"$build" = x"$host" && test -z "$with_cross_host" \
2149                  && test "$enable_abi_check" = yes )
2150 ])
2151
2152
2153 sinclude(../libtool.m4)
2154 dnl The lines below arrange for aclocal not to bring an installed
2155 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2156 dnl add a definition of LIBTOOL to Makefile.in.
2157 ifelse(,,,[AC_SUBST(LIBTOOL)
2158 AC_DEFUN([AM_PROG_LIBTOOL])
2159 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2160 AC_DEFUN([AC_PROG_LD])
2161 ])
2162
2163 dnl
2164 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2165 dnl
2166
2167 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2168   AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2169     AC_TRY_LINK([#include <sys/stat.h>],
2170                 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2171                 [glibcpp_cv_S_ISREG=yes],
2172                 [glibcpp_cv_S_ISREG=no])
2173   ])
2174   AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2175     AC_TRY_LINK([#include <sys/stat.h>],
2176                 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2177                 [glibcpp_cv_S_IFREG=yes],
2178                 [glibcpp_cv_S_IFREG=no])
2179   ])
2180   if test x$glibcpp_cv_S_ISREG = xyes; then
2181     AC_DEFINE(HAVE_S_ISREG)
2182   elif test x$glibcpp_cv_S_IFREG = xyes; then
2183     AC_DEFINE(HAVE_S_IFREG)
2184   fi
2185 ])
2186
2187 dnl
2188 dnl Check whether poll is available in <poll.h>.
2189 dnl
2190
2191 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2192   AC_CACHE_VAL(glibcpp_cv_POLL, [
2193     AC_TRY_COMPILE([#include <poll.h>],
2194                 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2195                 [glibcpp_cv_POLL=yes],
2196                 [glibcpp_cv_POLL=no])
2197   ])
2198   if test x$glibcpp_cv_POLL = xyes; then
2199     AC_DEFINE(HAVE_POLL)
2200   fi
2201 ])
2202
2203 # Check whether LC_MESSAGES is available in <locale.h>.
2204 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2205 #
2206 # This file file be copied and used freely without restrictions.  It can
2207 # be used in projects which are not available under the GNU Public License
2208 # but which still want to provide support for the GNU gettext functionality.
2209 # Please note that the actual code is *not* freely available.
2210
2211 # serial 1
2212
2213 AC_DEFUN(AC_LC_MESSAGES, [
2214   AC_CHECK_HEADER(locale.h, [
2215     AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2216       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2217        ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2218     if test $ac_cv_val_LC_MESSAGES = yes; then
2219       AC_DEFINE(HAVE_LC_MESSAGES)
2220     fi
2221   ])
2222 ])
2223
2224
2225 dnl
2226 dnl Check for whether the Boost-derived checks should be turned on.
2227 dnl
2228 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2229 dnl --enable-concept-checks turns them on.
2230 dnl --disable-concept-checks leaves them off.
2231 dnl  +  Usage:  GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2232 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
2233 dnl       defaults to `no'.
2234 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2235 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2236 AC_ARG_ENABLE(concept-checks,
2237 changequote(<<, >>)dnl
2238 <<  --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2239 changequote([, ])dnl
2240 [case "$enableval" in
2241  yes) enable_concept_checks=yes ;;
2242  no)  enable_concept_checks=no ;;
2243  *)   AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2244  esac],
2245 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2246 dnl Option parsed, now set things appropriately
2247 if test x"$enable_concept_checks" = xyes; then
2248   AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2249 fi
2250 ])
2251
2252
2253 dnl
2254 dnl Add version tags to symbols in shared library (or not), additionally
2255 dnl marking other symbols as private/local (or not).
2256 dnl
2257 dnl GLIBCPP_ENABLE_SYMVERS
2258 dnl --enable-symvers=style adds a version script to the linker call when
2259 dnl       creating the shared library.  The choice of version script is
2260 dnl       controlled by 'style'.
2261 dnl --disable-symvers does not.
2262 dnl  +  Usage:  GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2263 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
2264 dnl       defaults to `no'.  Passing `yes' tries to choose a default style
2265 dnl       based on linker characteristics.  Passing 'no' disables versioning.
2266 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2267 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2268 AC_ARG_ENABLE(symvers,
2269 changequote(<<, >>)dnl
2270 <<  --enable-symvers=style  enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2271 changequote([, ])dnl
2272 [case "$enableval" in
2273  yes) enable_symvers=yes ;;
2274  no)  enable_symvers=no ;;
2275  # other names here, just as sanity checks
2276  #gnu|sun|etcetera) enable_symvers=$enableval ;;
2277  gnu) enable_symvers=$enableval ;;
2278  *)   AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2279  esac],
2280 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2281
2282 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2283 # don't know enough about $LD to do tricks...
2284 if test x$enable_shared = xno ||
2285         test "x$LD" = x ||
2286         test x$glibcpp_gnu_ld_version = x; then
2287   enable_symvers=no
2288 fi
2289
2290 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2291 if test $enable_symvers != no; then
2292   AC_MSG_CHECKING([for shared libgcc])
2293   ac_save_CFLAGS="$CFLAGS"
2294   CFLAGS=' -lgcc_s'
2295   AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2296   CFLAGS="$ac_save_CFLAGS"
2297   AC_MSG_RESULT($glibcpp_shared_libgcc)
2298 fi
2299
2300 # For GNU ld, we need at least this version.  It's 2.12 in the same format
2301 # as the tested-for version.  See GLIBCPP_CHECK_LINKER_FEATURES for more.
2302 glibcpp_min_gnu_ld_version=21200
2303
2304 # Check to see if unspecified "yes" value can win, given results
2305 # above.
2306 if test $enable_symvers = yes ; then
2307   if test $with_gnu_ld = yes &&
2308     test $glibcpp_shared_libgcc = yes ;
2309   then
2310     if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2311         enable_symvers=gnu
2312     else
2313       ac_test_CFLAGS="${CFLAGS+set}"
2314       ac_save_CFLAGS="$CFLAGS"
2315       CFLAGS='-shared -Wl,--version-script,conftest.map'
2316       enable_symvers=no
2317       changequote(,)
2318       echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2319       changequote([,])
2320       AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2321       if test "$ac_test_CFLAGS" = set; then
2322         CFLAGS="$ac_save_CFLAGS"
2323       else
2324         # this is the suspicious part
2325         CFLAGS=''
2326       fi
2327       rm -f conftest.map
2328     fi
2329   else
2330     # just fail for now
2331     enable_symvers=no
2332   fi
2333 fi
2334
2335 dnl Everything parsed; figure out what file to use.
2336 case $enable_symvers in
2337   no)
2338       SYMVER_MAP=config/linker-map.dummy
2339       ;;
2340   gnu)
2341       SYMVER_MAP=config/linker-map.gnu
2342       AC_DEFINE(_GLIBCPP_SYMVER)
2343       ;;
2344 esac
2345
2346 AC_SUBST(SYMVER_MAP)
2347 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2348 AC_MSG_CHECKING([versioning on shared library symbols])
2349 AC_MSG_RESULT($enable_symvers)
2350 ])
2351
2352
2353 # isc-posix.m4 serial 2 (gettext-0.11.2)
2354 dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
2355 dnl This file is free software, distributed under the terms of the GNU
2356 dnl General Public License.  As a special exception to the GNU General
2357 dnl Public License, this file may be distributed as part of a program
2358 dnl that contains a configuration script generated by Autoconf, under
2359 dnl the same distribution terms as the rest of that program.
2360
2361 # This file is not needed with autoconf-2.53 and newer.  Remove it in 2005.
2362
2363 # This test replaces the one in autoconf.
2364 # Currently this macro should have the same name as the autoconf macro
2365 # because gettext's gettext.m4 (distributed in the automake package)
2366 # still uses it.  Otherwise, the use in gettext.m4 makes autoheader
2367 # give these diagnostics:
2368 #   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
2369 #   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
2370
2371 undefine([AC_ISC_POSIX])
2372
2373 AC_DEFUN([AC_ISC_POSIX],
2374   [
2375     dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
2376     AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
2377   ]
2378 )
2379
2380 # Add --enable-maintainer-mode option to configure.
2381 # From Jim Meyering
2382
2383 # serial 1
2384
2385 AC_DEFUN([AM_MAINTAINER_MODE],
2386 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2387   dnl maintainer-mode is disabled by default
2388   AC_ARG_ENABLE(maintainer-mode,
2389 [  --enable-maintainer-mode enable make rules and dependencies not useful
2390                           (and sometimes confusing) to the casual installer],
2391       USE_MAINTAINER_MODE=$enableval,
2392       USE_MAINTAINER_MODE=no)
2393   AC_MSG_RESULT($USE_MAINTAINER_MODE)
2394   AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
2395   MAINT=$MAINTAINER_MODE_TRUE
2396   AC_SUBST(MAINT)dnl
2397 ]
2398 )
2399
2400 # Define a conditional.
2401
2402 AC_DEFUN([AM_CONDITIONAL],
2403 [AC_SUBST($1_TRUE)
2404 AC_SUBST($1_FALSE)
2405 if $2; then
2406   $1_TRUE=
2407   $1_FALSE='#'
2408 else
2409   $1_TRUE='#'
2410   $1_FALSE=
2411 fi])
2412
2413 # Do all the work for Automake.  This macro actually does too much --
2414 # some checks are only needed if your package does certain things.
2415 # But this isn't really a big deal.
2416
2417 # serial 1
2418
2419 dnl Usage:
2420 dnl AM_INIT_AUTOMAKE(package,version, [no-define])
2421
2422 AC_DEFUN([AM_INIT_AUTOMAKE],
2423 [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
2424 AC_REQUIRE([AC_PROG_INSTALL])
2425 PACKAGE=[$1]
2426 AC_SUBST(PACKAGE)
2427 VERSION=[$2]
2428 AC_SUBST(VERSION)
2429 dnl test to see if srcdir already configured
2430 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
2431   AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
2432 fi
2433 ifelse([$3],,
2434 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
2435 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
2436 AC_REQUIRE([AM_SANITY_CHECK])
2437 AC_REQUIRE([AC_ARG_PROGRAM])
2438 dnl FIXME This is truly gross.
2439 missing_dir=`cd $ac_aux_dir && pwd`
2440 AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
2441 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
2442 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
2443 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
2444 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
2445 AC_REQUIRE([AC_PROG_MAKE_SET])])
2446
2447 # Copyright 2002  Free Software Foundation, Inc.
2448
2449 # This program is free software; you can redistribute it and/or modify
2450 # it under the terms of the GNU General Public License as published by
2451 # the Free Software Foundation; either version 2, or (at your option)
2452 # any later version.
2453
2454 # This program is distributed in the hope that it will be useful,
2455 # but WITHOUT ANY WARRANTY; without even the implied warranty of
2456 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2457 # GNU General Public License for more details.
2458
2459 # You should have received a copy of the GNU General Public License
2460 # along with this program; if not, write to the Free Software
2461 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
2462
2463 # AM_AUTOMAKE_VERSION(VERSION)
2464 # ----------------------------
2465 # Automake X.Y traces this macro to ensure aclocal.m4 has been
2466 # generated from the m4 files accompanying Automake X.Y.
2467 AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
2468
2469 # AM_SET_CURRENT_AUTOMAKE_VERSION
2470 # -------------------------------
2471 # Call AM_AUTOMAKE_VERSION so it can be traced.
2472 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
2473 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
2474          [AM_AUTOMAKE_VERSION([1.4-p6])])
2475
2476 #
2477 # Check to make sure that the build environment is sane.
2478 #
2479
2480 AC_DEFUN([AM_SANITY_CHECK],
2481 [AC_MSG_CHECKING([whether build environment is sane])
2482 # Just in case
2483 sleep 1
2484 echo timestamp > conftestfile
2485 # Do `set' in a subshell so we don't clobber the current shell's
2486 # arguments.  Must try -L first in case configure is actually a
2487 # symlink; some systems play weird games with the mod time of symlinks
2488 # (eg FreeBSD returns the mod time of the symlink's containing
2489 # directory).
2490 if (
2491    set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
2492    if test "[$]*" = "X"; then
2493       # -L didn't work.
2494       set X `ls -t $srcdir/configure conftestfile`
2495    fi
2496    if test "[$]*" != "X $srcdir/configure conftestfile" \
2497       && test "[$]*" != "X conftestfile $srcdir/configure"; then
2498
2499       # If neither matched, then we have a broken ls.  This can happen
2500       # if, for instance, CONFIG_SHELL is bash and it inherits a
2501       # broken ls alias from the environment.  This has actually
2502       # happened.  Such a system could not be considered "sane".
2503       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
2504 alias in your environment])
2505    fi
2506
2507    test "[$]2" = conftestfile
2508    )
2509 then
2510    # Ok.
2511    :
2512 else
2513    AC_MSG_ERROR([newly created file is older than distributed files!
2514 Check your system clock])
2515 fi
2516 rm -f conftest*
2517 AC_MSG_RESULT(yes)])
2518
2519 dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
2520 dnl The program must properly implement --version.
2521 AC_DEFUN([AM_MISSING_PROG],
2522 [AC_MSG_CHECKING(for working $2)
2523 # Run test in a subshell; some versions of sh will print an error if
2524 # an executable is not found, even if stderr is redirected.
2525 # Redirect stdin to placate older versions of autoconf.  Sigh.
2526 if ($2 --version) < /dev/null > /dev/null 2>&1; then
2527    $1=$2
2528    AC_MSG_RESULT(found)
2529 else
2530    $1="$3/missing $2"
2531    AC_MSG_RESULT(missing)
2532 fi
2533 AC_SUBST($1)])
2534
2535 # Like AC_CONFIG_HEADER, but automatically create stamp file.
2536
2537 AC_DEFUN([AM_CONFIG_HEADER],
2538 [AC_PREREQ([2.12])
2539 AC_CONFIG_HEADER([$1])
2540 dnl When config.status generates a header, we must update the stamp-h file.
2541 dnl This file resides in the same directory as the config header
2542 dnl that is generated.  We must strip everything past the first ":",
2543 dnl and everything past the last "/".
2544 AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
2545 ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
2546 <<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
2547 <<am_indx=1
2548 for am_file in <<$1>>; do
2549   case " <<$>>CONFIG_HEADERS " in
2550   *" <<$>>am_file "*<<)>>
2551     echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
2552     ;;
2553   esac
2554   am_indx=`expr "<<$>>am_indx" + 1`
2555 done<<>>dnl>>)
2556 changequote([,]))])
2557