OSDN Git Service

* acinclude.m4 (GLIBCPP_CHECK_PCH): Only set glibcpp_PCHFLAGS if
[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   if test "$glibcpp_pch_comp" = yes; then
1480         glibcpp_PCHFLAGS="-include bits/stdc++.h"
1481   else
1482         glibcpp_PCHFLAGS=""
1483   fi
1484   AC_SUBST(glibcpp_PCHFLAGS)
1485 ])
1486
1487 dnl
1488 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1489 dnl We must stage the required headers so that they will be installed
1490 dnl with the library (unlike libgcc, the STL implementation is provided
1491 dnl solely within headers).  Since we must not inject random user-space
1492 dnl macro names into user-provided C++ code, we first stage into <file>-in
1493 dnl and process to <file> with an output command.  The reason for a two-
1494 dnl stage process here is to correctly handle $srcdir!=$objdir without
1495 dnl having to write complex code (the sed commands to clean the macro
1496 dnl namespace are complex and fragile enough as it is).  We must also
1497 dnl add a relative path so that -I- is supported properly.
1498 dnl
1499 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1500   AC_MSG_CHECKING([for thread model used by GCC])
1501   target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1502   AC_MSG_RESULT([$target_thread_file])
1503
1504   if test $target_thread_file != single; then
1505     AC_DEFINE(HAVE_GTHR_DEFAULT)
1506     AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1507   fi
1508
1509   glibcpp_thread_h=gthr-$target_thread_file.h
1510   AC_SUBST(glibcpp_thread_h)
1511 ])
1512
1513
1514 dnl
1515 dnl Check for exception handling support.  If an explicit enable/disable
1516 dnl sjlj exceptions is given, we don't have to detect.  Otherwise the
1517 dnl target may or may not support call frame exceptions.
1518 dnl
1519 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1520 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1521 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1522 dnl
1523 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1524 dnl
1525 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1526   AC_MSG_CHECKING([for exception model to use])
1527   AC_LANG_SAVE
1528   AC_LANG_CPLUSPLUS
1529   AC_ARG_ENABLE(sjlj-exceptions,
1530   [  --enable-sjlj-exceptions  force use of builtin_setjmp for exceptions],
1531   [:],
1532   [dnl Botheration.  Now we've got to detect the exception model.
1533    dnl Link tests against libgcc.a are problematic since -- at least
1534    dnl as of this writing -- we've not been given proper -L bits for
1535    dnl single-tree newlib and libgloss.
1536    dnl
1537    dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1538    dnl conftest files before we got a change to grep them first.
1539    cat > conftest.$ac_ext << EOF
1540 [#]line __oline__ "configure"
1541 struct S { ~S(); };
1542 void bar();
1543 void foo()
1544 {
1545   S s;
1546   bar();
1547 }
1548 EOF
1549    old_CXXFLAGS="$CXXFLAGS"
1550    CXXFLAGS=-S
1551    if AC_TRY_EVAL(ac_compile); then
1552      if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1553        enable_sjlj_exceptions=yes
1554      elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1555        enable_sjlj_exceptions=no
1556      fi
1557    fi
1558    CXXFLAGS="$old_CXXFLAGS"
1559    rm -f conftest*])
1560    if test x$enable_sjlj_exceptions = xyes; then
1561      AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1562         [Define if the compiler is configured for setjmp/longjmp exceptions.])
1563      ac_exception_model_name=sjlj
1564    elif test x$enable_sjlj_exceptions = xno; then
1565      ac_exception_model_name="call frame"
1566    else
1567      AC_MSG_ERROR([unable to detect exception model])
1568    fi
1569    AC_LANG_RESTORE
1570    AC_MSG_RESULT($ac_exception_model_name)
1571 ])
1572
1573
1574 dnl
1575 dnl Check for libunwind exception handling support. If enabled then
1576 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1577 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1578 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1579 dnl on libunwind as well as libgcc.
1580 dnl
1581 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1582 dnl --enable-libunwind-exceptions forces the use of libunwind.
1583 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1584 dnl
1585 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1586 dnl
1587 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1588   AC_MSG_CHECKING([for use of libunwind])
1589   AC_ARG_ENABLE(libunwind-exceptions,
1590   [  --enable-libunwind-exceptions  force use of libunwind for exceptions],
1591   use_libunwind_exceptions=$enableval,
1592   use_libunwind_exceptions=no)
1593   AC_MSG_RESULT($use_libunwind_exceptions)
1594   dnl Option parsed, now set things appropriately
1595   if test x"$use_libunwind_exceptions" = xyes; then
1596     LIBUNWIND_FLAG="-lunwind"
1597   else
1598     LIBUNWIND_FLAG=""
1599   fi
1600   AC_SUBST(LIBUNWIND_FLAG)
1601 ])
1602
1603 dnl
1604 dnl Check for ISO/IEC 9899:1999 "C99" support.
1605 dnl
1606 dnl GLIBCPP_ENABLE_C99
1607 dnl --enable-c99 defines _GLIBCPP_USE_C99
1608 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1609 dnl  +  Usage:  GLIBCPP_ENABLE_C99[(DEFAULT)]
1610 dnl       Where DEFAULT is either `yes' or `no'.  If omitted, it
1611 dnl       defaults to `no'.
1612 dnl  +  If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1613 dnl
1614 dnl GLIBCPP_ENABLE_C99
1615 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1616   define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1617
1618   AC_ARG_ENABLE(c99,
1619   changequote(<<, >>)dnl
1620   <<--enable-c99            turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1621   changequote([, ])dnl
1622   [case "$enableval" in
1623    yes) enable_c99=yes ;;
1624    no)  enable_c99=no ;;
1625    *)   AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1626    esac],
1627   enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1628
1629   AC_LANG_SAVE
1630   AC_LANG_CPLUSPLUS
1631
1632   # Check for the existence of <math.h> functions used if C99 is enabled.
1633   ac_c99_math=yes;
1634   AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1635   AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1636   AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1637   AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1638   AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1639   AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1640   AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1641   AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1642   AC_TRY_COMPILE([#include <math.h>],
1643                  [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1644   AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1645   AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1646   AC_TRY_COMPILE([#include <math.h>],
1647                  [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1648   AC_TRY_COMPILE([#include <math.h>],
1649                  [isunordered(0.0,0.0);],, [ac_c99_math=no])
1650   AC_MSG_RESULT($ac_c99_math)
1651
1652   # Check for the existence in <stdio.h> of vscanf, et. al.
1653   ac_c99_stdio=yes;
1654   AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1655   AC_TRY_COMPILE([#include <stdio.h>],
1656                  [snprintf("12", 0, "%i");],, [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                   vfscanf(stderr, "%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                   vscanf("%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                   vsnprintf(fmt, 0, "%i", args);}],
1674                   [],, [ac_c99_stdio=no])
1675   AC_TRY_COMPILE([#include <stdio.h>
1676                   #include <stdarg.h>
1677                   void foo(char* fmt, ...)
1678                   {va_list args; va_start(args, fmt);
1679                   vsscanf(fmt, "%i", args);}],
1680                   [],, [ac_c99_stdio=no])
1681   AC_MSG_RESULT($ac_c99_stdio)
1682
1683   # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1684   ac_c99_stdlib=yes;
1685   AC_MSG_CHECKING([for lldiv_t declaration])
1686   AC_CACHE_VAL(ac_c99_lldiv_t, [
1687   AC_TRY_COMPILE([#include <stdlib.h>],
1688                    [ lldiv_t mydivt;],
1689                    [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1690   ])
1691   AC_MSG_RESULT($ac_c99_lldiv_t)
1692
1693   AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1694   AC_TRY_COMPILE([#include <stdlib.h>],
1695                  [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1696   AC_TRY_COMPILE([#include <stdlib.h>],
1697                  [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1698   AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1699   AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1700   AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1701   AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1702   if test x"$ac_c99_lldiv_t" = x"no"; then
1703     ac_c99_stdlib=no;
1704   fi;
1705   AC_MSG_RESULT($ac_c99_stdlib)
1706
1707   # Check for the existence of <wchar.h> functions used if C99 is enabled.
1708   # XXX the wchar.h checks should be rolled into the general C99 bits.
1709   ac_c99_wchar=yes;
1710   AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1711   AC_TRY_COMPILE([#include <wchar.h>],
1712                  [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1713   AC_TRY_COMPILE([#include <wchar.h>],
1714                  [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1715   AC_TRY_COMPILE([#include <wchar.h>],
1716                  [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1717   AC_MSG_RESULT($ac_c99_wchar)
1718
1719   AC_MSG_CHECKING([for enabled ISO C99 support])
1720   if test x"$ac_c99_math" = x"no" ||
1721      test x"$ac_c99_stdio" = x"no" ||
1722      test x"$ac_c99_stdlib" = x"no" ||
1723      test x"$ac_c99_wchar" = x"no"; then
1724     enable_c99=no;
1725   fi;
1726   AC_MSG_RESULT($enable_c99)
1727
1728   # Option parsed, now set things appropriately
1729   if test x"$enable_c99" = x"yes"; then
1730     AC_DEFINE(_GLIBCPP_USE_C99)
1731   fi
1732
1733   AC_LANG_RESTORE
1734 ])
1735
1736
1737 dnl
1738 dnl Check for template specializations for the 'long long' type extension.
1739 dnl The result determines only whether 'long long' I/O is enabled; things
1740 dnl like numeric_limits<> specializations are always available.
1741 dnl
1742 dnl GLIBCPP_ENABLE_LONG_LONG
1743 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1744 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1745 dnl  +  Usage:  GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1746 dnl       Where DEFAULT is either `yes' or `no'.  If omitted, it
1747 dnl       defaults to `no'.
1748 dnl  +  If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1749 dnl
1750 dnl GLIBCPP_ENABLE_LONG_LONG
1751 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1752   define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1753
1754   AC_ARG_ENABLE(long-long,
1755   changequote(<<, >>)dnl
1756   <<--enable-long-long      turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1757   changequote([, ])dnl
1758   [case "$enableval" in
1759    yes) enable_long_long=yes ;;
1760    no)  enable_long_long=no ;;
1761    *)   AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1762    esac],
1763   enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1764
1765   AC_LANG_SAVE
1766   AC_LANG_CPLUSPLUS
1767
1768   AC_MSG_CHECKING([for enabled long long I/O support])
1769   # iostreams require strtoll, strtoull to compile
1770   AC_TRY_COMPILE([#include <stdlib.h>],
1771                  [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1772   AC_TRY_COMPILE([#include <stdlib.h>],
1773                  [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1774
1775   # Option parsed, now set things appropriately
1776   if test x"$enable_long_long" = xyes; then
1777     AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1778   fi
1779   AC_MSG_RESULT($enable_long_long)
1780
1781   AC_LANG_RESTORE
1782 ])
1783
1784
1785 dnl
1786 dnl Check for what type of C headers to use.
1787 dnl
1788 dnl GLIBCPP_ENABLE_CHEADERS
1789 dnl --enable-cheaders= [does stuff].
1790 dnl --disable-cheaders [does not do anything, really].
1791 dnl  +  Usage:  GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1792 dnl       Where DEFAULT is either `c' or `c_std'.
1793 dnl       If ommitted, it defaults to `c_std'.
1794 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1795 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1796 AC_MSG_CHECKING([for c header strategy to use])
1797 AC_ARG_ENABLE(cheaders,
1798 changequote(<<, >>)dnl
1799 <<  --enable-cheaders=MODEL       construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1800 changequote([, ])
1801   [case "$enableval" in
1802    c)
1803         enable_cheaders=c
1804         ;;
1805    c_std)
1806         enable_cheaders=c_std
1807         ;;
1808    *)   AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1809         ;;
1810   esac],
1811   enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1812   AC_MSG_RESULT($enable_cheaders)
1813
1814   dnl Option parsed, now set things appropriately
1815   case "$enable_cheaders" in
1816     c_std)
1817         C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1818         ;;
1819     c)
1820         C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1821         ;;
1822   esac
1823
1824   AC_SUBST(C_INCLUDE_DIR)
1825   AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1826   AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1827   AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1828 ])
1829
1830
1831 dnl
1832 dnl Check for wide character support.  Has the same effect as the option
1833 dnl in gcc's configure, but in a form that autoconf can mess with.
1834 dnl
1835 dnl GLIBCPP_ENABLE_C_MBCHAR
1836 dnl --enable-c-mbchar requests all the wchar_t stuff.
1837 dnl --disable-c-mbchar doesn't.
1838 dnl  +  Usage:  GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1839 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
1840 dnl       defaults to `no'.
1841 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1842 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1843 AC_ARG_ENABLE(c-mbchar,
1844 changequote(<<, >>)dnl
1845 <<  --enable-c-mbchar       enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1846 changequote([, ])dnl
1847 [case "$enableval" in
1848  yes) enable_c_mbchar=yes ;;
1849  no)  enable_c_mbchar=no ;;
1850  *)   AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1851  esac],
1852 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1853 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1854 ])
1855
1856
1857 dnl
1858 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1859 dnl
1860 dnl TOPLEVEL_INCLUDES
1861 dnl LIBMATH_INCLUDES
1862 dnl LIBSUPCXX_INCLUDES
1863 dnl LIBIO_INCLUDES
1864 dnl
1865 dnl GLIBCPP_EXPORT_INCLUDES
1866 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1867   # Root level of the build directory include sources.
1868   GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1869
1870   # Passed down for canadian crosses.
1871   if test x"$CANADIAN" = xyes; then
1872     TOPLEVEL_INCLUDES='-I$(includedir)'
1873   fi
1874
1875   LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1876
1877   LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1878
1879   if test x"$need_libio" = xyes; then
1880     LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1881     AC_SUBST(LIBIO_INCLUDES)
1882   fi
1883
1884   # Now, export this to all the little Makefiles....
1885   AC_SUBST(GLIBCPP_INCLUDES)
1886   AC_SUBST(TOPLEVEL_INCLUDES)
1887   AC_SUBST(LIBMATH_INCLUDES)
1888   AC_SUBST(LIBSUPCXX_INCLUDES)
1889 ])
1890
1891
1892 dnl
1893 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1894 dnl
1895 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1896   # Optimization flags that are probably a good idea for thrill-seekers. Just
1897   # uncomment the lines below and make, everything else is ready to go...
1898   # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1899   OPTIMIZE_CXXFLAGS=
1900   AC_SUBST(OPTIMIZE_CXXFLAGS)
1901
1902   WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings'
1903   AC_SUBST(WARN_FLAGS)
1904 ])
1905
1906 dnl
1907 dnl  GLIBCPP_EXPORT_INSTALL_INFO
1908 dnl  calculates gxx_install_dir
1909 dnl  exports glibcpp_toolexecdir
1910 dnl  exports glibcpp_toolexeclibdir
1911 dnl  exports glibcpp_prefixdir
1912 dnl
1913 dnl Assumes cross_compiling bits already done, and with_cross_host in
1914 dnl particular
1915 dnl
1916 dnl GLIBCPP_EXPORT_INSTALL_INFO
1917 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1918 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1919 # exported correctly in GLIBCPP_CONFIGURE.
1920 glibcpp_toolexecdir=no
1921 glibcpp_toolexeclibdir=no
1922 glibcpp_prefixdir=${prefix}
1923
1924 # Process the option --with-gxx-include-dir=<path to include-files directory>
1925 AC_MSG_CHECKING([for --with-gxx-include-dir])
1926 AC_ARG_WITH(gxx-include-dir,
1927 [  --with-gxx-include-dir  the installation directory for include files],
1928 [case "${withval}" in
1929   yes)
1930     AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1931     gxx_include_dir=no
1932     ;;
1933   no)
1934     gxx_include_dir=no
1935     ;;
1936   *)
1937     gxx_include_dir=${withval}
1938     ;;
1939 esac], [gxx_include_dir=no])
1940 AC_MSG_RESULT($gxx_include_dir)
1941
1942 # Process the option "--enable-version-specific-runtime-libs"
1943 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1944 AC_ARG_ENABLE(version-specific-runtime-libs,
1945 [  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
1946 [case "$enableval" in
1947  yes) version_specific_libs=yes ;;
1948  no)  version_specific_libs=no ;;
1949  *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1950  esac],
1951 version_specific_libs=no)dnl
1952 # Option set, now we can test it.
1953 AC_MSG_RESULT($version_specific_libs)
1954
1955 # Default case for install directory for include files.
1956 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1957   gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1958 fi
1959
1960 # Version-specific runtime libs processing.
1961 if test $version_specific_libs = yes; then
1962   # Need the gcc compiler version to know where to install libraries
1963   # and header files if --enable-version-specific-runtime-libs option
1964   # is selected.
1965   if test x"$gxx_include_dir" = x"no"; then
1966     gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1967   fi
1968   glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1969   glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1970 fi
1971
1972 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1973 # Install a library built with a cross compiler in tooldir, not libdir.
1974 if test x"$glibcpp_toolexecdir" = x"no"; then
1975   if test -n "$with_cross_host" &&
1976      test x"$with_cross_host" != x"no"; then
1977     glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1978     glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1979   else
1980     glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1981     glibcpp_toolexeclibdir='$(libdir)'
1982   fi
1983   multi_os_directory=`$CC -print-multi-os-directory`
1984   case $multi_os_directory in
1985   .) ;; # Avoid trailing /.
1986   *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1987   esac
1988 fi
1989
1990 AC_MSG_CHECKING([for install location])
1991 AC_MSG_RESULT($gxx_include_dir)
1992
1993 AC_SUBST(glibcpp_prefixdir)
1994 AC_SUBST(gxx_include_dir)
1995 AC_SUBST(glibcpp_toolexecdir)
1996 AC_SUBST(glibcpp_toolexeclibdir)
1997 ])
1998
1999
2000 # Check for functions in math library.
2001 # Ulrich Drepper <drepper@cygnus.com>, 1998.
2002 #
2003 # This file can be copied and used freely without restrictions.  It can
2004 # be used in projects which are not available under the GNU Public License
2005 # but which still want to provide support for the GNU gettext functionality.
2006 # Please note that the actual code is *not* freely available.
2007
2008 # serial 1
2009
2010 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
2011 AC_DEFUN(AC_REPLACE_MATHFUNCS,
2012 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
2013
2014
2015 dnl This macro searches for a GNU version of make.  If a match is found, the
2016 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
2017 dnl set to "#". This is useful for  including a special features in a Makefile,
2018 dnl which cannot be handled by other versions of make.  The variable
2019 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
2020 dnl the empty string otherwise.
2021 dnl
2022 dnl Here is an example of its use:
2023 dnl
2024 dnl Makefile.in might contain:
2025 dnl
2026 dnl     # A failsafe way of putting a dependency rule into a makefile
2027 dnl     $(DEPEND):
2028 dnl             $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2029 dnl
2030 dnl     @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2031 dnl     @ifGNUmake@ include $(DEPEND)
2032 dnl     @ifGNUmake@ endif
2033 dnl
2034 dnl Then configure.in would normally contain:
2035 dnl
2036 dnl     CHECK_GNU_MAKE()
2037 dnl     AC_OUTPUT(Makefile)
2038 dnl
2039 dnl Then perhaps to cause gnu make to override any other make, we could do
2040 dnl something like this (note that GNU make always looks for GNUmakefile first):
2041 dnl
2042 dnl     if  ! test x$_cv_gnu_make_command = x ; then
2043 dnl             mv Makefile GNUmakefile
2044 dnl             echo .DEFAULT: > Makefile ;
2045 dnl             echo \  $_cv_gnu_make_command \$@ >> Makefile;
2046 dnl     fi
2047 dnl
2048 dnl Then, if any (well almost any) other make is called, and GNU make also
2049 dnl exists, then the other make wraps the GNU make.
2050 dnl
2051 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2052 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2053 dnl
2054 dnl #### Changes for libstdc++-v3:  reformatting and linewrapping; prepending
2055 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2056 dnl #### conditional's subshell (" --version" is not a command), using a
2057 dnl #### different option to grep(1).
2058 dnl #### -pme
2059 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2060 dnl #### ${MAKE:-make}).
2061 dnl #### -msokolov
2062 AC_DEFUN(
2063   GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2064           _cv_gnu_make_command='' ;
2065 dnl Search all the common names for GNU make
2066           for a in "${MAKE-make}" make gmake gnumake ; do
2067                   if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2068                   then
2069                           _cv_gnu_make_command=$a ;
2070                           break;
2071                   fi
2072           done ;
2073   ) ;
2074 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2075 dnl string, '#' otherwise
2076   if test  "x$_cv_gnu_make_command" != "x"  ; then
2077           ifGNUmake='' ;
2078   else
2079           ifGNUmake='#' ;
2080   fi
2081   AC_SUBST(ifGNUmake)
2082 ])
2083
2084
2085 dnl Check for headers for, and arguments to, the setrlimit() function.
2086 dnl Used only in testsuite_hooks.h.
2087 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2088   AC_TRY_COMPILE([#include <unistd.h>
2089                   #include <sys/time.h>
2090                   #include <sys/resource.h>
2091                  ], [ int f = RLIMIT_$1 ; ],
2092                  [glibcpp_mresult=1], [glibcpp_mresult=0])
2093   AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2094                      [Only used in build directory testsuite_hooks.h.])
2095 ])
2096 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2097   setrlimit_have_headers=yes
2098   AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2099                    [],
2100                    setrlimit_have_headers=no)
2101   # If don't have the headers, then we can't run the tests now, and we
2102   # won't be seeing any of these during testsuite compilation.
2103   if test $setrlimit_have_headers = yes; then
2104     # Can't do these in a loop, else the resulting syntax is wrong.
2105     GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2106     GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2107     GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2108     GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2109
2110     # Check for rlimit, setrlimit.
2111     AC_CACHE_VAL(ac_setrlimit, [
2112       AC_TRY_COMPILE([#include <unistd.h>
2113                   #include <sys/time.h>
2114                   #include <sys/resource.h>
2115                      ],
2116                      [ struct rlimit r; setrlimit(0, &r);],
2117                      [ac_setrlimit=yes], [ac_setrlimit=no])
2118     ])
2119   fi
2120
2121   AC_MSG_CHECKING([for testsuite memory limit support])
2122   if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2123     ac_mem_limits=yes
2124     AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2125   else
2126     ac_mem_limits=no
2127   fi
2128   AC_MSG_RESULT($ac_mem_limits)
2129 ])
2130
2131
2132 dnl
2133 dnl Does any necessary configuration of the testsuite directory.  Generates
2134 dnl the testsuite_hooks.h header.
2135 dnl
2136 dnl GLIBCPP_CONFIGURE_TESTSUITE  [no args]
2137 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2138   GLIBCPP_CHECK_SETRLIMIT
2139
2140   # Look for setenv, so that extended locale tests can be performed.
2141   GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2142
2143   # Export file names for ABI checking.
2144   baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2145   AC_SUBST(baseline_file)
2146
2147   case "$target" in
2148     *-*-cygwin* ) enable_abi_check=no ;;
2149     * ) enable_abi_check=yes ;;
2150   esac
2151
2152   # Don't do ABI checking unless native.
2153   AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2154                  test x"$build" = x"$host" && test -z "$with_cross_host" \
2155                  && test "$enable_abi_check" = yes )
2156 ])
2157
2158
2159 sinclude(../libtool.m4)
2160 dnl The lines below arrange for aclocal not to bring an installed
2161 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2162 dnl add a definition of LIBTOOL to Makefile.in.
2163 ifelse(,,,[AC_SUBST(LIBTOOL)
2164 AC_DEFUN([AM_PROG_LIBTOOL])
2165 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2166 AC_DEFUN([AC_PROG_LD])
2167 ])
2168
2169 dnl
2170 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2171 dnl
2172
2173 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2174   AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2175     AC_TRY_LINK([#include <sys/stat.h>],
2176                 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2177                 [glibcpp_cv_S_ISREG=yes],
2178                 [glibcpp_cv_S_ISREG=no])
2179   ])
2180   AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2181     AC_TRY_LINK([#include <sys/stat.h>],
2182                 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2183                 [glibcpp_cv_S_IFREG=yes],
2184                 [glibcpp_cv_S_IFREG=no])
2185   ])
2186   if test x$glibcpp_cv_S_ISREG = xyes; then
2187     AC_DEFINE(HAVE_S_ISREG)
2188   elif test x$glibcpp_cv_S_IFREG = xyes; then
2189     AC_DEFINE(HAVE_S_IFREG)
2190   fi
2191 ])
2192
2193 dnl
2194 dnl Check whether poll is available in <poll.h>.
2195 dnl
2196
2197 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2198   AC_CACHE_VAL(glibcpp_cv_POLL, [
2199     AC_TRY_COMPILE([#include <poll.h>],
2200                 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2201                 [glibcpp_cv_POLL=yes],
2202                 [glibcpp_cv_POLL=no])
2203   ])
2204   if test x$glibcpp_cv_POLL = xyes; then
2205     AC_DEFINE(HAVE_POLL)
2206   fi
2207 ])
2208
2209 # Check whether LC_MESSAGES is available in <locale.h>.
2210 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2211 #
2212 # This file file be copied and used freely without restrictions.  It can
2213 # be used in projects which are not available under the GNU Public License
2214 # but which still want to provide support for the GNU gettext functionality.
2215 # Please note that the actual code is *not* freely available.
2216
2217 # serial 1
2218
2219 AC_DEFUN(AC_LC_MESSAGES, [
2220   AC_CHECK_HEADER(locale.h, [
2221     AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2222       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2223        ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2224     if test $ac_cv_val_LC_MESSAGES = yes; then
2225       AC_DEFINE(HAVE_LC_MESSAGES)
2226     fi
2227   ])
2228 ])
2229
2230
2231 dnl
2232 dnl Check for whether the Boost-derived checks should be turned on.
2233 dnl
2234 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2235 dnl --enable-concept-checks turns them on.
2236 dnl --disable-concept-checks leaves them off.
2237 dnl  +  Usage:  GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2238 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
2239 dnl       defaults to `no'.
2240 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2241 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2242 AC_ARG_ENABLE(concept-checks,
2243 changequote(<<, >>)dnl
2244 <<  --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2245 changequote([, ])dnl
2246 [case "$enableval" in
2247  yes) enable_concept_checks=yes ;;
2248  no)  enable_concept_checks=no ;;
2249  *)   AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2250  esac],
2251 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2252 dnl Option parsed, now set things appropriately
2253 if test x"$enable_concept_checks" = xyes; then
2254   AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2255 fi
2256 ])
2257
2258
2259 dnl
2260 dnl Add version tags to symbols in shared library (or not), additionally
2261 dnl marking other symbols as private/local (or not).
2262 dnl
2263 dnl GLIBCPP_ENABLE_SYMVERS
2264 dnl --enable-symvers=style adds a version script to the linker call when
2265 dnl       creating the shared library.  The choice of version script is
2266 dnl       controlled by 'style'.
2267 dnl --disable-symvers does not.
2268 dnl  +  Usage:  GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2269 dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
2270 dnl       defaults to `no'.  Passing `yes' tries to choose a default style
2271 dnl       based on linker characteristics.  Passing 'no' disables versioning.
2272 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2273 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2274 AC_ARG_ENABLE(symvers,
2275 changequote(<<, >>)dnl
2276 <<  --enable-symvers=style  enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2277 changequote([, ])dnl
2278 [case "$enableval" in
2279  yes) enable_symvers=yes ;;
2280  no)  enable_symvers=no ;;
2281  # other names here, just as sanity checks
2282  #gnu|sun|etcetera) enable_symvers=$enableval ;;
2283  gnu) enable_symvers=$enableval ;;
2284  *)   AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2285  esac],
2286 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2287
2288 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2289 # don't know enough about $LD to do tricks...
2290 if test x$enable_shared = xno ||
2291         test "x$LD" = x ||
2292         test x$glibcpp_gnu_ld_version = x; then
2293   enable_symvers=no
2294 fi
2295
2296 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2297 if test $enable_symvers != no; then
2298   AC_MSG_CHECKING([for shared libgcc])
2299   ac_save_CFLAGS="$CFLAGS"
2300   CFLAGS=' -lgcc_s'
2301   AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2302   CFLAGS="$ac_save_CFLAGS"
2303   AC_MSG_RESULT($glibcpp_shared_libgcc)
2304 fi
2305
2306 # For GNU ld, we need at least this version.  It's 2.12 in the same format
2307 # as the tested-for version.  See GLIBCPP_CHECK_LINKER_FEATURES for more.
2308 glibcpp_min_gnu_ld_version=21200
2309
2310 # Check to see if unspecified "yes" value can win, given results
2311 # above.
2312 if test $enable_symvers = yes ; then
2313   if test $with_gnu_ld = yes &&
2314     test $glibcpp_shared_libgcc = yes ;
2315   then
2316     if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2317         enable_symvers=gnu
2318     else
2319       ac_test_CFLAGS="${CFLAGS+set}"
2320       ac_save_CFLAGS="$CFLAGS"
2321       CFLAGS='-shared -Wl,--version-script,conftest.map'
2322       enable_symvers=no
2323       changequote(,)
2324       echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2325       changequote([,])
2326       AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2327       if test "$ac_test_CFLAGS" = set; then
2328         CFLAGS="$ac_save_CFLAGS"
2329       else
2330         # this is the suspicious part
2331         CFLAGS=''
2332       fi
2333       rm -f conftest.map
2334     fi
2335   else
2336     # just fail for now
2337     enable_symvers=no
2338   fi
2339 fi
2340
2341 dnl Everything parsed; figure out what file to use.
2342 case $enable_symvers in
2343   no)
2344       SYMVER_MAP=config/linker-map.dummy
2345       ;;
2346   gnu)
2347       SYMVER_MAP=config/linker-map.gnu
2348       AC_DEFINE(_GLIBCPP_SYMVER)
2349       ;;
2350 esac
2351
2352 AC_SUBST(SYMVER_MAP)
2353 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2354 AC_MSG_CHECKING([versioning on shared library symbols])
2355 AC_MSG_RESULT($enable_symvers)
2356 ])
2357
2358
2359 # isc-posix.m4 serial 2 (gettext-0.11.2)
2360 dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
2361 dnl This file is free software, distributed under the terms of the GNU
2362 dnl General Public License.  As a special exception to the GNU General
2363 dnl Public License, this file may be distributed as part of a program
2364 dnl that contains a configuration script generated by Autoconf, under
2365 dnl the same distribution terms as the rest of that program.
2366
2367 # This file is not needed with autoconf-2.53 and newer.  Remove it in 2005.
2368
2369 # This test replaces the one in autoconf.
2370 # Currently this macro should have the same name as the autoconf macro
2371 # because gettext's gettext.m4 (distributed in the automake package)
2372 # still uses it.  Otherwise, the use in gettext.m4 makes autoheader
2373 # give these diagnostics:
2374 #   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
2375 #   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
2376
2377 undefine([AC_ISC_POSIX])
2378
2379 AC_DEFUN([AC_ISC_POSIX],
2380   [
2381     dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
2382     AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
2383   ]
2384 )
2385
2386 # Add --enable-maintainer-mode option to configure.
2387 # From Jim Meyering
2388
2389 # serial 1
2390
2391 AC_DEFUN([AM_MAINTAINER_MODE],
2392 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2393   dnl maintainer-mode is disabled by default
2394   AC_ARG_ENABLE(maintainer-mode,
2395 [  --enable-maintainer-mode enable make rules and dependencies not useful
2396                           (and sometimes confusing) to the casual installer],
2397       USE_MAINTAINER_MODE=$enableval,
2398       USE_MAINTAINER_MODE=no)
2399   AC_MSG_RESULT($USE_MAINTAINER_MODE)
2400   AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
2401   MAINT=$MAINTAINER_MODE_TRUE
2402   AC_SUBST(MAINT)dnl
2403 ]
2404 )
2405
2406 # Define a conditional.
2407
2408 AC_DEFUN([AM_CONDITIONAL],
2409 [AC_SUBST($1_TRUE)
2410 AC_SUBST($1_FALSE)
2411 if $2; then
2412   $1_TRUE=
2413   $1_FALSE='#'
2414 else
2415   $1_TRUE='#'
2416   $1_FALSE=
2417 fi])
2418
2419 # Do all the work for Automake.  This macro actually does too much --
2420 # some checks are only needed if your package does certain things.
2421 # But this isn't really a big deal.
2422
2423 # serial 1
2424
2425 dnl Usage:
2426 dnl AM_INIT_AUTOMAKE(package,version, [no-define])
2427
2428 AC_DEFUN([AM_INIT_AUTOMAKE],
2429 [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
2430 AC_REQUIRE([AC_PROG_INSTALL])
2431 PACKAGE=[$1]
2432 AC_SUBST(PACKAGE)
2433 VERSION=[$2]
2434 AC_SUBST(VERSION)
2435 dnl test to see if srcdir already configured
2436 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
2437   AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
2438 fi
2439 ifelse([$3],,
2440 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
2441 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
2442 AC_REQUIRE([AM_SANITY_CHECK])
2443 AC_REQUIRE([AC_ARG_PROGRAM])
2444 dnl FIXME This is truly gross.
2445 missing_dir=`cd $ac_aux_dir && pwd`
2446 AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
2447 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
2448 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
2449 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
2450 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
2451 AC_REQUIRE([AC_PROG_MAKE_SET])])
2452
2453 # Copyright 2002  Free Software Foundation, Inc.
2454
2455 # This program is free software; you can redistribute it and/or modify
2456 # it under the terms of the GNU General Public License as published by
2457 # the Free Software Foundation; either version 2, or (at your option)
2458 # any later version.
2459
2460 # This program is distributed in the hope that it will be useful,
2461 # but WITHOUT ANY WARRANTY; without even the implied warranty of
2462 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2463 # GNU General Public License for more details.
2464
2465 # You should have received a copy of the GNU General Public License
2466 # along with this program; if not, write to the Free Software
2467 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
2468
2469 # AM_AUTOMAKE_VERSION(VERSION)
2470 # ----------------------------
2471 # Automake X.Y traces this macro to ensure aclocal.m4 has been
2472 # generated from the m4 files accompanying Automake X.Y.
2473 AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
2474
2475 # AM_SET_CURRENT_AUTOMAKE_VERSION
2476 # -------------------------------
2477 # Call AM_AUTOMAKE_VERSION so it can be traced.
2478 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
2479 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
2480          [AM_AUTOMAKE_VERSION([1.4-p6])])
2481
2482 #
2483 # Check to make sure that the build environment is sane.
2484 #
2485
2486 AC_DEFUN([AM_SANITY_CHECK],
2487 [AC_MSG_CHECKING([whether build environment is sane])
2488 # Just in case
2489 sleep 1
2490 echo timestamp > conftestfile
2491 # Do `set' in a subshell so we don't clobber the current shell's
2492 # arguments.  Must try -L first in case configure is actually a
2493 # symlink; some systems play weird games with the mod time of symlinks
2494 # (eg FreeBSD returns the mod time of the symlink's containing
2495 # directory).
2496 if (
2497    set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
2498    if test "[$]*" = "X"; then
2499       # -L didn't work.
2500       set X `ls -t $srcdir/configure conftestfile`
2501    fi
2502    if test "[$]*" != "X $srcdir/configure conftestfile" \
2503       && test "[$]*" != "X conftestfile $srcdir/configure"; then
2504
2505       # If neither matched, then we have a broken ls.  This can happen
2506       # if, for instance, CONFIG_SHELL is bash and it inherits a
2507       # broken ls alias from the environment.  This has actually
2508       # happened.  Such a system could not be considered "sane".
2509       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
2510 alias in your environment])
2511    fi
2512
2513    test "[$]2" = conftestfile
2514    )
2515 then
2516    # Ok.
2517    :
2518 else
2519    AC_MSG_ERROR([newly created file is older than distributed files!
2520 Check your system clock])
2521 fi
2522 rm -f conftest*
2523 AC_MSG_RESULT(yes)])
2524
2525 dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
2526 dnl The program must properly implement --version.
2527 AC_DEFUN([AM_MISSING_PROG],
2528 [AC_MSG_CHECKING(for working $2)
2529 # Run test in a subshell; some versions of sh will print an error if
2530 # an executable is not found, even if stderr is redirected.
2531 # Redirect stdin to placate older versions of autoconf.  Sigh.
2532 if ($2 --version) < /dev/null > /dev/null 2>&1; then
2533    $1=$2
2534    AC_MSG_RESULT(found)
2535 else
2536    $1="$3/missing $2"
2537    AC_MSG_RESULT(missing)
2538 fi
2539 AC_SUBST($1)])
2540
2541 # Like AC_CONFIG_HEADER, but automatically create stamp file.
2542
2543 AC_DEFUN([AM_CONFIG_HEADER],
2544 [AC_PREREQ([2.12])
2545 AC_CONFIG_HEADER([$1])
2546 dnl When config.status generates a header, we must update the stamp-h file.
2547 dnl This file resides in the same directory as the config header
2548 dnl that is generated.  We must strip everything past the first ":",
2549 dnl and everything past the last "/".
2550 AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
2551 ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
2552 <<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
2553 <<am_indx=1
2554 for am_file in <<$1>>; do
2555   case " <<$>>CONFIG_HEADERS " in
2556   *" <<$>>am_file "*<<)>>
2557     echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
2558     ;;
2559   esac
2560   am_indx=`expr "<<$>>am_indx" + 1`
2561 done<<>>dnl>>)
2562 changequote([,]))])
2563