2 dnl Initialize configure bits.
4 dnl Define OPTLEVEL='-O2' if new inlining code present.
7 AC_DEFUN(GLIBCPP_CONFIGURE, [
8 dnl Default to --enable-multilib
9 AC_ARG_ENABLE(multilib,
10 [ --enable-multilib build hella library versions (default)],
11 [case "${enableval}" in
14 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
15 esac], [multilib=yes])dnl
17 glibcpp_basedir=$auxdir/$1/libstdc++-v3
18 AC_SUBST(glibcpp_basedir)
20 AM_INIT_AUTOMAKE(libstdc++, 2.91)
22 # Never versions of autoconf add an underscore to these functions.
23 # Prevent future problems ...
24 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
25 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
26 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
27 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
31 # FIXME: We temporarily define our own version of AC_PROG_CC. This is
32 # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
33 # are probably using a cross compiler, which will not be able to fully
34 # link an executable. This should really be fixed in autoconf
37 AC_DEFUN(LIB_AC_PROG_CC,
38 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
39 dnl Fool anybody using AC_PROG_CC.
40 AC_PROVIDE([AC_PROG_CC])
41 AC_CHECK_PROG(CC, gcc, gcc)
42 if test -z "$CC"; then
43 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
44 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
49 if test $ac_cv_prog_gcc = yes; then
51 dnl Check whether -g works, even if CFLAGS is set, in case the package
52 dnl plays around with CFLAGS (such as to build both debugging and
53 dnl normal versions of a library), tasteless as that idea is.
54 ac_test_CFLAGS="${CFLAGS+set}"
55 ac_save_CFLAGS="$CFLAGS"
58 if test "$ac_test_CFLAGS" = set; then
59 CFLAGS="$ac_save_CFLAGS"
60 elif test $ac_cv_prog_cc_g = yes; then
67 test "${CFLAGS+set}" = set || CFLAGS="-g"
73 # Can't just call these here as g++ requires libstc++ to be built....
76 # Likewise for AC_PROG_CXX.
77 AC_DEFUN(LIB_AC_PROG_CXX,
78 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
79 dnl Fool anybody using AC_PROG_CXX.
80 AC_PROVIDE([AC_PROG_CXX])
81 # Use CXX_libstdcxx so that we do not cause CXX to be cached with the
82 # flags that come in CXX while configuring libstdc++. They're different
83 # from those used for all other target libraries. If CXX is set in
84 # the environment, respect that here.
86 AC_CHECK_PROGS(CXX_libstdcxx, $CCC c++ g++ gcc CC cxx cc++, gcc)
89 test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
93 if test $ac_cv_prog_gxx = yes; then
95 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
96 dnl plays around with CXXFLAGS (such as to build both debugging and
97 dnl normal versions of a library), tasteless as that idea is.
98 ac_test_CXXFLAGS="${CXXFLAGS+set}"
99 ac_save_CXXFLAGS="$CXXFLAGS"
102 if test "$ac_test_CXXFLAGS" = set; then
103 CXXFLAGS="$ac_save_CXXFLAGS"
104 elif test $ac_cv_prog_cxx_g = yes; then
111 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
117 AC_CHECK_TOOL(AS, as)
118 AC_CHECK_TOOL(AR, ar)
119 AC_CHECK_TOOL(RANLIB, ranlib, :)
125 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
126 # at least currently, we never actually build a program, so we never
127 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
128 # fails, because we are probably configuring with a cross compiler
129 # which cant create executables. So we include AC_EXEEXT to keep
130 # automake happy, but we dont execute it, since we dont care about
136 . [$]{glibcpp_basedir}/configure.host
138 case [$]{glibcpp_basedir} in
139 /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
140 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
143 # This does for the target what configure.host does for the host. In
144 # addition to possibly modifying the same flags, it also sets up symlinks.
150 dnl Check to see if g++ can compile this library, and if so, if any version-
151 dnl specific precautions need to be taken.
153 dnl GLIBCPP_CHECK_COMPILER_VERSION
154 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
155 if test ! -f stamp-sanity-compiler; then
156 AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
163 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
165 AC_MSG_RESULT($gpp_satisfactory)
166 touch stamp-sanity-compiler
172 dnl Test for newer compiler features, or features that are present in newer
173 dnl compiler version but not older compiler versions should be placed
176 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
177 dnl new inlining code or the new system_header pragma will die on -Werror.
178 dnl Leave it out by default and use maint-mode to use it.
180 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
181 dnl compiler supports it.
182 dnl GLIBCPP_CHECK_COMPILER_FEATURES
183 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
184 # All these tests are for C++; save the language and the compiler flags.
185 # The CXXFLAGS thing is suspicious, but based on similar bits
186 # found in GLIBCPP_CONFIGURE.
189 ac_test_CXXFLAGS="${CXXFLAGS+set}"
190 ac_save_CXXFLAGS="$CXXFLAGS"
192 # Check for maintainer-mode bits.
193 if test x"$USE_MAINTAINER_MODE" = xno; then
199 # Check for -ffunction-sections -fdata-sections
200 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
201 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
202 AC_TRY_COMPILE(, [int foo;
203 ], [ac_fdsections=yes], [ac_fdsections=no])
204 if test "$ac_test_CXXFLAGS" = set; then
205 CXXFLAGS="$ac_save_CXXFLAGS"
207 # this is the suspicious part
210 if test x"$ac_fdsections" = x"yes" && test x"$enable_debug" = x"no"; then
211 SECTION_FLAGS='-ffunction-sections -fdata-sections'
213 AC_MSG_RESULT($ac_fdsections)
217 AC_SUBST(SECTION_FLAGS)
222 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
223 dnl the native linker is in use, all variables will be defined to something
224 dnl safe (like an empty string).
226 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
227 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
229 dnl GLIBCPP_CHECK_LINKER_FEATURES
230 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
231 # If we're not using GNU ld, then there's no point in even trying these
232 # tests. Check for that first. We should have already tested for gld
233 # by now (in libtool), but require it now just to be safe...
236 AC_REQUIRE([AC_PROG_LD])
239 if test "$ac_cv_prog_gnu_ld" = "notbroken"; then
240 # GNU ld it is! Joy and bunny rabbits!
242 # All these tests are for C++; save the language and the compiler flags.
243 # Need to do this so that g++ won't try to link in libstdc++
244 ac_test_CFLAGS="${CFLAGS+set}"
245 ac_save_CFLAGS="$CFLAGS"
246 CFLAGS='-x c++ -Wl,--gc-sections'
248 # Check for -Wl,--gc-sections
249 # XXX This test is broken at the moment, as symbols required for
250 # linking are now in libsupc++ (not built yet.....). In addition,
251 # this test has cored on solaris in the past. In addition,
252 # --gc-sections doesn't really work at the moment (keeps on discarding
253 # used sections, first .eh_frame and now some of the glibc sections for
254 # iconv). Bzzzzt. Thanks for playing, maybe next time.
255 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
263 ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
264 if test "$ac_test_CFLAGS" = set; then
265 CFLAGS="$ac_save_CFLAGS"
267 # this is the suspicious part
270 if test "$ac_sectionLDflags" = "yes"; then
271 SECTION_LDFLAGS='-Wl,--gc-sections'
273 AC_MSG_RESULT($ac_sectionLDflags)
276 # Set linker optimization flags.
277 if test x"$ac_cv_prog_gnu_ld" = x"yes" && test x"$enable_debug" = x"no"; then
278 OPT_LDFLAGS='-Wl,-O1'
281 AC_SUBST(SECTION_LDFLAGS)
282 AC_SUBST(OPT_LDFLAGS)
287 dnl Check to see if the (math function) argument passed is
288 dnl declared when using the c++ compiler
289 dnl ASSUMES argument is a math function with ONE parameter
291 dnl GLIBCPP_CHECK_MATH_DECL_1
292 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
293 AC_MSG_CHECKING([for $1 declaration])
294 if test x${glibcpp_cv_func_$1_use+set} != xset; then
295 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
298 AC_TRY_COMPILE([#include <math.h>
304 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
308 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
312 dnl Check to see if the (math function) argument passed is
313 dnl 1) declared when using the c++ compiler
314 dnl 2) has "C" linkage
315 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
317 dnl Define HAVE_CARGF etc if "cargf" is declared and links
319 dnl argument 1 is name of function to check
321 dnl ASSUMES argument is a math function with ONE parameter
323 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
324 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
325 GLIBCPP_CHECK_MATH_DECL_1($1)
326 if test x$glibcpp_cv_func_$1_use = x"yes"; then
329 GLIBCPP_CHECK_MATH_DECL_1(_$1)
330 if test x$glibcpp_cv_func__$1_use = x"yes"; then
338 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
339 dnl of functions at once. It's an all-or-nothing check -- either
340 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
341 dnl Doing it this way saves significant configure time.
342 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
343 AC_MSG_CHECKING([for $1 functions])
344 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
347 AC_TRY_COMPILE([#include <math.h>],
348 [ `for x in $3; do echo "$x (0);"; done` ],
349 [glibcpp_cv_func_$2_use=yes],
350 [glibcpp_cv_func_$2_use=no])
352 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
353 if test x$glibcpp_cv_func_$2_use = x"yes"; then
359 dnl Check to see if the (math function) argument passed is
360 dnl declared when using the c++ compiler
361 dnl ASSUMES argument is a math function with ONE parameter
363 dnl GLIBCPP_CHECK_MATH_DECL_2
364 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
365 AC_MSG_CHECKING([for $1 declaration])
366 if test x${glibcpp_cv_func_$1_use+set} != xset; then
367 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
370 AC_TRY_COMPILE([#include <math.h>],
372 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
376 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
380 dnl Check to see if the (math function) argument passed is
381 dnl 1) declared when using the c++ compiler
382 dnl 2) has "C" linkage
384 dnl Define HAVE_CARGF etc if "cargf" is declared and links
386 dnl argument 1 is name of function to check
388 dnl ASSUMES argument is a math function with TWO parameters
390 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
391 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
392 GLIBCPP_CHECK_MATH_DECL_2($1)
393 if test x$glibcpp_cv_func_$1_use = x"yes"; then
396 GLIBCPP_CHECK_MATH_DECL_2(_$1)
397 if test x$glibcpp_cv_func__$1_use = x"yes"; then
405 dnl Check to see if the (math function) argument passed is
406 dnl declared when using the c++ compiler
407 dnl ASSUMES argument is a math function with ONE parameter
409 dnl GLIBCPP_CHECK_MATH_DECL_3
410 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
411 AC_MSG_CHECKING([for $1 declaration])
412 if test x${glibcpp_cv_func_$1_use+set} != xset; then
413 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
416 AC_TRY_COMPILE([#include <math.h>],
418 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
422 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
426 dnl Check to see if the (math function) argument passed is
427 dnl 1) declared when using the c++ compiler
428 dnl 2) has "C" linkage
430 dnl Define HAVE_CARGF etc if "cargf" is declared and links
432 dnl argument 1 is name of function to check
434 dnl ASSUMES argument is a math function with THREE parameters
436 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
437 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
438 GLIBCPP_CHECK_MATH_DECL_3($1)
439 if test x$glibcpp_cv_func_$1_use = x"yes"; then
442 GLIBCPP_CHECK_MATH_DECL_3(_$1)
443 if test x$glibcpp_cv_func__$1_use = x"yes"; then
451 dnl Check to see if the (stdlib function) argument passed is
452 dnl 1) declared when using the c++ compiler
453 dnl 2) has "C" linkage
455 dnl Define HAVE_STRTOLD if "strtold" is declared and links
456 dnl Define HAVE_STRTOF if "strtof" is declared and links
458 dnl argument 1 is name of function to check
460 dnl ASSUMES argument is a math function with TWO parameters
462 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
463 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
464 AC_MSG_CHECKING([for $1 declaration])
465 if test x${glibcpp_cv_func_$1_use+set} != xset; then
466 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
469 AC_TRY_COMPILE([#include <stdlib.h>],
471 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
475 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
476 if test x$glibcpp_cv_func_$1_use = x"yes"; then
483 dnl Because the builtins are picky picky picky about the arguments they take,
484 dnl do an explict linkage tests here.
485 dnl Check to see if the (math function) argument passed is
486 dnl 1) declared when using the c++ compiler
487 dnl 2) has "C" linkage
489 dnl Define HAVE_CARGF etc if "cargf" is declared and links
491 dnl argument 1 is name of function to check
493 dnl ASSUMES argument is a math function with ONE parameter
495 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
496 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
497 AC_MSG_CHECKING([for $1 declaration])
498 if test x${glibcpp_cv_func_$1_use+set} != xset; then
499 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
502 AC_TRY_COMPILE([#include <math.h>],
504 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
508 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
509 if test x$glibcpp_cv_func_$1_use = x"yes"; then
510 AC_MSG_CHECKING([for $1 linkage])
511 if test x${glibcpp_cv_func_$1_link+set} != xset; then
512 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
513 AC_TRY_LINK([#include <math.h>],
515 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
518 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
519 if test x$glibcpp_cv_func_$1_link = x"yes"; then
520 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
521 AC_DEFINE_UNQUOTED(${ac_tr_func})
528 dnl Check to see what builtin math functions are supported
530 dnl check for __builtin_abs
531 dnl check for __builtin_fabsf
532 dnl check for __builtin_fabs
533 dnl check for __builtin_fabl
534 dnl check for __builtin_labs
535 dnl check for __builtin_sqrtf
536 dnl check for __builtin_sqrtl
537 dnl check for __builtin_fsqrt
538 dnl check for __builtin_sinf
539 dnl check for __builtin_sin
540 dnl check for __builtin_sinl
541 dnl check for __builtin_cosf
542 dnl check for __builtin_cos
543 dnl check for __builtin_cosl
545 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
546 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
547 dnl Test for builtin math functions.
548 dnl These are made in gcc/c-common.c
549 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
550 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
551 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
552 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
553 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
555 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
556 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
557 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
559 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
560 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
561 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
563 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
564 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
565 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
567 dnl There is, without a doubt, a more elegant way to have these
568 dnl names exported so that they won't be stripped out of acconfig.h by
569 dnl autoheader. I leave this as an exercise to somebody less frustrated
570 dnl than I.... please email the libstdc++ list if you can figure out a
571 dnl more elegant approach (see autoconf/acgen.m4 and specifically
572 dnl AC_CHECK_FUNC for things to steal.)
574 if test x$dummyvar = x"yes"; then
575 AC_DEFINE(HAVE___BUILTIN_ABS)
576 AC_DEFINE(HAVE___BUILTIN_LABS)
577 AC_DEFINE(HAVE___BUILTIN_COS)
578 AC_DEFINE(HAVE___BUILTIN_COSF)
579 AC_DEFINE(HAVE___BUILTIN_COSL)
580 AC_DEFINE(HAVE___BUILTIN_FABS)
581 AC_DEFINE(HAVE___BUILTIN_FABSF)
582 AC_DEFINE(HAVE___BUILTIN_FABSL)
583 AC_DEFINE(HAVE___BUILTIN_SIN)
584 AC_DEFINE(HAVE___BUILTIN_SINF)
585 AC_DEFINE(HAVE___BUILTIN_SINL)
586 AC_DEFINE(HAVE___BUILTIN_FSQRT)
587 AC_DEFINE(HAVE___BUILTIN_SQRTF)
588 AC_DEFINE(HAVE___BUILTIN_SQRTL)
594 dnl Check to see what the underlying c library
595 dnl These checks need to do two things:
596 dnl 1) make sure the name is declared when using the c++ compiler
597 dnl 2) make sure the name has "C" linkage
598 dnl This might seem like overkill but experience has shown that it's not...
600 dnl Define HAVE_STRTOF etc if "strtof" is found.
601 dnl Define HAVE_STRTOLD etc if "strtold" is found.
603 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
604 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
605 ac_test_CXXFLAGS="${CXXFLAGS+set}"
606 ac_save_CXXFLAGS="$CXXFLAGS"
607 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
609 AC_CHECK_FUNCS(strtof)
610 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
612 CXXFLAGS="$ac_save_CXXFLAGS"
617 dnl Check to see what the underlying c library or math library is like.
618 dnl These checks need to do two things:
619 dnl 1) make sure the name is declared when using the c++ compiler
620 dnl 2) make sure the name has "C" linkage
621 dnl This might seem like overkill but experience has shown that it's not...
623 dnl Define HAVE_CARGF etc if "cargf" is found.
625 dnl GLIBCPP_CHECK_MATH_SUPPORT
626 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
627 ac_test_CXXFLAGS="${CXXFLAGS+set}"
628 ac_save_CXXFLAGS="$CXXFLAGS"
629 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
632 AC_CHECK_LIB(m, sin, libm="-lm")
636 dnl Check to see if certain C math functions exist.
637 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
638 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
639 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
640 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
641 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
642 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
643 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
645 dnl Check to see if basic C math functions have float versions.
646 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
651 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
654 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
655 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
656 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
657 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
658 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
659 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
660 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
661 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
662 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
663 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
664 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
665 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
666 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
668 dnl Check to see if basic C math functions have long double versions.
669 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
674 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
677 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
678 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
679 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
680 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
681 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
682 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
683 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
684 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
685 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
686 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
687 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
688 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
689 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
690 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
691 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
692 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
694 dnl Some runtimes have these functions with a preceding underscore. Please
695 dnl keep this sync'd with the one above. And if you add any new symbol,
696 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
697 dnl Check to see if certain C math functions exist.
699 dnl Check to see if basic C math functions have float versions.
700 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
702 _acosf _asinf _atanf \
704 _coshf _sinhf _tanhf)
705 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
709 dnl Check to see if basic C math functions have long double versions.
710 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
712 _acosl _asinl _atanl \
714 _coshl _sinhl _tanhl)
715 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
720 CXXFLAGS="$ac_save_CXXFLAGS"
725 dnl Check to see if there is native support for complex
727 dnl Don't compile bits in math/* if native support exits.
729 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found.
731 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
732 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
733 dnl Check for complex versions of math functions of platform.
734 AC_CHECK_LIB(m, main)
735 AC_REPLACE_MATHFUNCS(nan hypot hypotf atan2f expf copysignf)
737 dnl Compile the long double complex functions only if the function
738 dnl provides the non-complex long double functions that are needed.
739 dnl Currently this includes copysignl and atan2l, which should be
740 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
741 USE_COMPLEX_LONG_DOUBLE=no
742 if test x$ac_cv_func_atan2l = x"yes" \
743 && test x$ac_cv_func_copysignl = x"yes"; then
744 USE_COMPLEX_LONG_DOUBLE=yes
745 AC_REPLACE_MATHFUNCS(hypotl signbitl)
748 AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
752 dnl Check to see what architecture and operating system we are compiling
753 dnl for. Also, if architecture- or OS-specific flags are required for
754 dnl compilation, pick them up here.
756 dnl GLIBCPP_CHECK_TARGET
757 AC_DEFUN(GLIBCPP_CHECK_TARGET, [
758 . [$]{glibcpp_basedir}/configure.target
759 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
760 AC_MSG_RESULT(OS config directory is $os_include_dir)
761 AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h)
766 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
767 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
768 dnl must have been previously checked.)
770 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
771 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
773 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
774 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
776 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
777 dnl others even if wchar_t support is not on.
778 AC_MSG_CHECKING([for mbstate_t])
779 AC_TRY_COMPILE([#include <wchar.h>],
780 [mbstate_t teststate;],
781 have_mbstate_t=yes, have_mbstate_t=no)
782 AC_MSG_RESULT($have_mbstate_t)
783 if test x"$have_mbstate_t" = xyes; then
784 AC_DEFINE(HAVE_MBSTATE_T)
787 dnl Sanity check for existence of ISO C99 headers for extended encoding.
788 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
789 AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
791 dnl Only continue checking if the ISO C99 headers exist and support is on.
792 if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes \
793 && test x"$enable_c_mbchar" != xno; then
795 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
796 dnl numeric_limits can instantiate type_traits<wchar_t>
797 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
798 AC_TRY_COMPILE([#include <wchar.h>],
799 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
800 has_wchar_minmax=yes, has_wchar_minmax=no)
801 AC_MSG_RESULT($has_wchar_minmax)
803 dnl Test wchar.h for WEOF, which is what we use to determine whether
804 dnl to specialize for char_traits<wchar_t> or not.
805 AC_MSG_CHECKING([for WEOF])
808 #include <stddef.h>],
810 has_weof=yes, has_weof=no)
811 AC_MSG_RESULT($has_weof)
813 dnl Tests for wide character functions used in char_traits<wchar_t>.
814 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
815 wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
817 AC_MSG_CHECKING([for ISO C99 wchar_t support])
818 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
819 && test x"$ac_wfuncs" = xyes; then
820 ac_isoC99_wchar_t=yes
824 AC_MSG_RESULT($ac_isoC99_wchar_t)
826 dnl Use iconv for wchar_t to char conversions. As such, check for
827 dnl X/Open Portability Guide, version 2 features (XPG2).
828 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
829 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
831 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
832 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
834 LIBS="$LIBS $libiconv"
836 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
837 ac_XPG2funcs=yes, ac_XPG2funcs=no)
841 AC_MSG_CHECKING([for XPG2 wchar_t support])
842 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
843 && test x"$ac_XPG2funcs" = xyes; then
848 AC_MSG_RESULT($ac_XPG2_wchar_t)
850 dnl At the moment, only enable wchar_t specializations if all the
851 dnl above support is present.
852 AC_MSG_CHECKING([for enabled wchar_t specializations])
853 if test x"$ac_isoC99_wchar_t" = xyes \
854 && test x"$ac_XPG2_wchar_t" = xyes; then
855 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
861 dnl Wide characters disabled by the user.
862 AC_MSG_WARN([wchar_t support disabled.])
868 dnl Check to see if this version of GNU C++ is afflicted by bugs in
869 dnl __complex__ float support.
871 dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
873 dnl Check to see if this version of GNU C++ is afflicted by bugs in
874 dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
875 dnl gcc-2.95.x when using the library, unless we define the default copy
876 dnl ctor in the specializations of complex<>.
878 dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
879 dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
880 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
881 AC_REQUIRE([AC_PROG_CXX])
883 AC_MSG_CHECKING([for GNU C++ __complex__ support])
884 AC_CACHE_VAL(glibcpp_cv_complex, [
887 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
888 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
889 [ dcomplex x; f(x); ],
890 glibcpp_cv_complex=ok,
891 glibcpp_cv_complex=buggy
895 AC_MSG_RESULT($glibcpp_cv_complex)
896 if test $glibcpp_cv_complex = buggy; then
897 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
900 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
901 AC_CACHE_VAL(glibcpp_cv_float_complex, [
905 cat > conftest.h <<EOB
907 // Check for buggy __complex__ that causes ICE in most versions of egcs
908 // and gcc-2.95.x on certain platforms (eg., x86-win32).
910 // See http://gcc.gnu.org/ml/gcc-bugs/1999-07n/msg00845.html for
911 // more info on the bug itself.
916 __complex__ float m_value;
917 float_complex (float = 0.0f, float = 0.0f);
918 float_complex (__complex__ float val) : m_value (val) {}
919 float_complex foo (const float_complex &val)
920 { return float_complex (~val.m_value); }
923 AC_TRY_COMPILE([#include "conftest.h"], ,
924 glibcpp_cv_float_complex=ok,
925 glibcpp_cv_float_complex=buggy
929 AC_MSG_RESULT($glibcpp_cv_float_complex)
930 if test $glibcpp_cv_float_complex = buggy; then
931 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
937 dnl Check for special debugging mode; not for production use.
939 dnl GLIBCPP_ENABLE_DEBUG
940 dnl --enable-debug sets '-ggdb3 -O0'.
941 dnl --disable-debug sets '-g' and whatever optimization options the
942 dnl compiler can handle.
943 dnl + --enable-maintainer-mode automatically defaults this to on.
944 dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
945 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
946 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
947 dnl defaults to `no'.
948 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
949 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
951 changequote(<<, >>)dnl
952 << --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
954 [case "${enableval}" in
955 yes) enable_debug=yes ;;
956 no) enable_debug=no ;;
957 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
959 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
961 dnl Option parsed, now set things appropriately
962 case "${enable_debug}" in
964 DEBUG_FLAGS='-O0 -ggdb3'
970 AC_SUBST(DEBUG_FLAGS)
975 dnl Check for "unusual" flags to pass to the compiler while building.
977 dnl GLIBCPP_ENABLE_CXX_FLAGS
978 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
979 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
980 dnl Somehow this same set of flags must be passed when [re]building
982 dnl --disable-cxx-flags passes nothing.
983 dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
984 dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
985 dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
986 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
987 dnl If "default flags" is an empty string (or "none"), the effect is
988 dnl the same as --disable or --enable=no.
989 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
990 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
991 AC_ARG_ENABLE(cxx-flags,
992 changequote(<<, >>)dnl
993 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
994 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
996 [case "x$enableval" in
998 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1000 enable_cxx_flags='' ;;
1002 enable_cxx_flags="$enableval" ;;
1004 enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
1006 dnl Thinko on my part during design. This kludge is the workaround.
1007 if test "$enable_cxx_flags" = "none"; then
1008 enable_cxx_flags='';
1011 dnl Run through flags (either default or command-line) and set anything
1012 dnl extra (e.g., #defines) that must accompany particular g++ options.
1013 if test -n "$enable_cxx_flags"; then
1014 for f in $enable_cxx_flags; do
1018 *) # and we're trying to pass /what/ exactly?
1019 AC_MSG_ERROR([compiler flags start with a -]) ;;
1023 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1024 AC_SUBST(EXTRA_CXX_FLAGS)
1029 dnl Check for which locale library to use: gnu or generic.
1031 dnl GLIBCPP_ENABLE_CLOCALE
1032 dnl --enable-clocale=gnu sets config/c_locale_gnu.cc and friends
1033 dnl --enable-clocale=generic sets config/c_locale_generic.cc and friends
1035 dnl default is generic
1037 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1038 AC_MSG_CHECKING([for clocale to use])
1039 AC_ARG_ENABLE(clocale,
1040 [ --enable-clocale enable model for target locale package.
1041 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
1043 if test x$enable_clocale = xno; then
1044 enable_clocale=generic
1046 enable_clocale=generic)
1048 enable_clocale_flag=$enable_clocale
1050 dnl Check if a valid locale package
1051 case x${enable_clocale_flag} in
1053 CLOCALE_H=config/c_locale_gnu.h
1054 CLOCALE_CC=config/c_locale_gnu.cc
1058 CLOCALE_H=config/c_locale_generic.h
1059 CLOCALE_CC=config/c_locale_generic.cc
1060 AC_MSG_RESULT(generic)
1063 echo "$enable_clocale is an unknown locale package" 1>&2
1068 AC_LINK_FILES($CLOCALE_H, include/bits/c++locale.h)
1069 AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
1074 dnl Check for which I/O library to use: libio, or something specific.
1076 dnl GLIBCPP_ENABLE_CSTDIO
1077 dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
1079 dnl default is stdio
1081 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1082 AC_MSG_CHECKING([for cstdio to use])
1083 AC_ARG_ENABLE(cstdio,
1084 [ --enable-cstdio enable stdio for target io package.
1085 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1087 if test x$enable_cstdio = xno; then
1090 enable_cstdio=stdio)
1092 enable_cstdio_flag=$enable_cstdio
1094 dnl Check if a valid I/O package
1095 case x${enable_cstdio_flag} in
1097 CSTDIO_H=config/c_io_libio.h
1098 BASIC_FILE_H=config/basic_file_libio.h
1099 BASIC_FILE_CC=config/basic_file_libio.cc
1100 AC_MSG_RESULT(libio)
1102 # see if we are on a system with libio native (ie, linux)
1103 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1105 # Need to check and see what version of glibc is being used. If
1106 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1107 # compile most of libio for linux systems.
1108 if test x$has_libio = x"yes"; then
1111 AC_MSG_CHECKING([for glibc version >= 2.2])
1112 AC_EGREP_CPP([ok], [
1113 #include <features.h>
1114 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1117 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1118 AC_MSG_RESULT($glibc_satisfactory)
1122 # XXX at the moment, admit defeat and force the recompilation
1123 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1124 glibc_satisfactory=no
1126 if test x$glibc_satisfactory = x"yes"; then
1131 # bkoz XXX need to add checks to enable this
1132 # pme XXX here's a first pass at such a check
1133 if test x$enable_c_mbchar != xno; then
1141 # Using libio, but <libio.h> doesn't exist on the target system. . .
1143 # bkoz XXX need to add checks to enable this
1144 # pme XXX here's a first pass at such a check
1145 if test x$enable_c_mbchar != xno; then
1152 xstdio | x | xno | xnone | xyes)
1154 CSTDIO_H=config/c_io_stdio.h
1155 BASIC_FILE_H=config/basic_file_stdio.h
1156 BASIC_FILE_CC=config/basic_file_stdio.cc
1157 AC_MSG_RESULT(stdio)
1159 # We're not using stdio.
1164 echo "$enable_cstdio is an unknown io package" 1>&2
1168 AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
1169 AC_LINK_FILES($BASIC_FILE_H, include/bits/basic_file_model.h)
1170 AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
1172 # 2000-08-04 bkoz hack
1173 CCODECVT_C=config/c_io_libio_codecvt.c
1174 AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
1175 # 2000-08-04 bkoz hack
1177 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1178 test "$need_libio" = yes || test "$need_wlibio" = yes)
1179 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1180 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1181 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1182 libio_la=../libio/libio.la
1191 dnl Check for which threading library to use.
1193 dnl GLIBCPP_ENABLE_THREADS
1194 dnl --enable-threads=posix sets config/threads-posix.h et. al.
1196 dnl Default is no threads, which also disables _IO_MTSAFE_IO in
1197 dnl libio. Any actual thread package will enable it.
1199 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1200 dnl Note this comes from the gcc/config.in and libjava/config.in
1201 dnl Efforts should be made to keep this in sync.
1202 AC_MSG_CHECKING([for threads package to use])
1203 AC_ARG_ENABLE(threads,
1204 [ --enable-threads enable thread usage for target GCC.
1205 --enable-threads=LIB use LIB thread package for target GCC. [default=no]
1207 if test x$enable_threads = xno; then
1212 enable_threads_flag=$enable_threads
1214 dnl Check if a valid thread package
1215 case x${enable_threads_flag} in
1218 target_thread_file='single'
1222 target_thread_file='posix'
1224 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
1225 xsolaris | xwin32 | xdce | xvxworks)
1226 target_thread_file=$enable_threads_flag
1229 echo "$enable_threads is an unknown thread package" 1>&2
1234 dnl Check for thread package actually supported in libstdc++
1236 case "$target_thread_file" in
1238 THREADH=threads-no.h
1241 THREADH=threads-posix.h
1243 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
1244 AC_MSG_ERROR(thread package $THREADS not yet supported)
1247 AC_MSG_ERROR($THREADS is an unsupported/unknown thread package)
1250 AC_MSG_RESULT($THREADH)
1252 AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
1253 if test $THREADH != threads-no.h; then
1254 AC_DEFINE(_GLIBCPP_USE_THREADS)
1260 dnl Check for template specializations for the 'long long' type extension.
1262 dnl GLIBCPP_ENABLE_LONG_LONG
1263 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1264 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1265 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1266 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1267 dnl defaults to `no'.
1268 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1270 dnl GLIBCPP_ENABLE_LONG_LONG
1271 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1272 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1274 AC_ARG_ENABLE(long-long,
1275 changequote(<<, >>)dnl
1276 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1277 changequote([, ])dnl
1278 [case "$enableval" in
1279 yes) enable_long_long=yes ;;
1280 no) enable_long_long=no ;;
1281 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1283 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1285 # Allow use of os-dependent settings, so that macros that turn on
1286 # C99 capabilities can be defined and used in a consistent way.
1287 OS_INC_PATH=${srcdir}/$os_include_dir
1288 ac_test_CFLAGS="${CFLAGS+set}"
1289 ac_save_CFLAGS="$CFLAGS"
1290 CFLAGS="-I$OS_INC_PATH"
1292 # Check for the existence of functions used if long long is enabled.
1293 AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
1294 AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
1296 # Check for lldiv_t, et. al.
1297 AC_MSG_CHECKING([for lldiv_t declaration])
1298 AC_CACHE_VAL(glibcpp_lldiv_t_use, [
1299 AC_TRY_COMPILE([#include <bits/os_defines.h>
1300 #include <stdlib.h>],
1302 [glibcpp_lldiv_t_use=yes], [glibcpp_lldiv_t_use=no])
1304 AC_MSG_RESULT($glibcpp_lldiv_t_use)
1305 if test x$glibcpp_lldiv_t_use = x"yes"; then
1306 AC_DEFINE(HAVE_LLDIV_T)
1309 AC_MSG_CHECKING([for enabled long long])
1310 if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
1311 enable_long_long=no;
1313 AC_MSG_RESULT($enable_long_long)
1315 # Option parsed, now set things appropriately
1316 if test x"$enable_long_long" = xyes; then
1317 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1321 CFLAGS="$ac_save_CFLAGS"
1326 dnl Check for what kind of C headers to use.
1328 dnl GLIBCPP_ENABLE_CHEADERS
1329 dnl --enable-cheaders= [does stuff].
1330 dnl --disable-cheaders [does not do anything, really].
1331 dnl + This will eventually need to be 'c_shadow' by default.
1332 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1333 dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
1334 dnl If ommitted, it defaults to `c_std'.
1335 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1336 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1337 AC_MSG_CHECKING([for c header strategy to use])
1338 AC_ARG_ENABLE(cheaders,
1339 changequote(<<, >>)dnl
1340 << --enable-cheaders construct "C" header files for
1341 g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1343 [case "$enableval" in
1348 enable_cheaders=c_std
1351 enable_cheaders=c_shadow
1353 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1356 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1357 AC_MSG_RESULT($enable_cheaders)
1359 dnl Option parsed, now set things appropriately
1360 case "$enable_cheaders" in
1362 CSHADOW_FLAGS="-fno-builtin"
1363 C_INCLUDE_DIR='${top_srcdir}/include/c_shadow'
1364 AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
1368 C_INCLUDE_DIR='${top_srcdir}/include/c_std'
1372 C_INCLUDE_DIR='${top_srcdir}/include/c'
1376 AC_SUBST(CSHADOW_FLAGS)
1377 AC_SUBST(C_INCLUDE_DIR)
1378 AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
1383 dnl Check for wide character support. Has the same effect as the option
1384 dnl in gcc's configure, but in a form that autoconf can mess with.
1386 dnl GLIBCPP_ENABLE_C_MBCHAR
1387 dnl --enable-c-mbchar requests all the wchar_t stuff.
1388 dnl --disable-c-mbchar doesn't.
1389 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1390 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1391 dnl defaults to `no'.
1392 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1393 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1394 AC_ARG_ENABLE(c-mbchar,
1395 changequote(<<, >>)dnl
1396 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1397 changequote([, ])dnl
1398 [case "$enableval" in
1399 yes) enable_c_mbchar=yes ;;
1400 no) enable_c_mbchar=no ;;
1401 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1403 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1404 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1409 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1411 dnl GLIBCPP_INCLUDE_DIR
1413 dnl TOPLEVEL_INCLUDES
1414 dnl LIBMATH_INCLUDES
1415 dnl LIBSUPCXX_INCLUDES
1417 dnl CSHADOW_INCLUDES
1419 dnl GLIBCPP_EXPORT_INCLUDE
1420 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1421 # Root level of the include sources.
1422 GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
1424 # Can either use include/c or include/c_std to grab "C" headers. This
1425 # variable is set to the include directory currently in use.
1426 # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS
1428 # Passed down for canadian crosses.
1429 if test x"$CANADIAN" = xyes; then
1430 TOPLEVEL_INCLUDES='-I$(includedir)'
1433 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1435 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1437 #if GLIBCPP_NEED_LIBIO
1438 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1440 #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
1443 #if GLIBCPP_USE_CSHADOW
1444 # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
1445 # -I$(top_blddir)/cshadow'
1447 CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
1450 # Now, export this to all the little Makefiles....
1451 AC_SUBST(GLIBCPP_INCLUDE_DIR)
1452 AC_SUBST(TOPLEVEL_INCLUDES)
1453 AC_SUBST(LIBMATH_INCLUDES)
1454 AC_SUBST(LIBSUPCXX_INCLUDES)
1455 AC_SUBST(LIBIO_INCLUDES)
1456 AC_SUBST(CSTD_INCLUDES)
1461 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1463 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1464 # Optimization flags that are probably a good idea for thrill-seekers. Just
1465 # uncomment the lines below and make, everything else is ready to go...
1466 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1468 AC_SUBST(OPTIMIZE_CXXFLAGS)
1470 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1471 AC_SUBST(WARN_FLAGS)
1475 dnl GLIBCPP_EXPORT_INSTALL_INFO
1476 dnl calculates gxx_install_dir
1477 dnl exports glibcpp_toolexecdir
1478 dnl exports glibcpp_toolexeclibdir
1480 dnl Assumes cross_compiling bits already done, and with_cross_host in
1483 dnl GLIBCPP_EXPORT_INSTALL_INFO
1484 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1486 glibcpp_toolexecdir=no
1487 glibcpp_toolexeclibdir=no
1489 AC_MSG_CHECKING([for interface version number])
1490 libstdcxx_interface=$INTERFACE
1491 AC_MSG_RESULT($libstdcxx_interface)
1493 # Process the option --with-gxx-include-dir=<path to include-files directory>
1494 AC_MSG_CHECKING([for --with-gxx-include-dir])
1495 AC_ARG_WITH(gxx-include-dir,
1496 [ --with-gxx-include-dir the installation directory for include files],
1497 [case "${withval}" in
1499 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1506 gxx_include_dir=${withval}
1508 esac], [gxx_include_dir=no])
1509 AC_MSG_RESULT($gxx_include_dir)
1511 # Process the option "--enable-version-specific-runtime-libs"
1512 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1513 AC_ARG_ENABLE(version-specific-runtime-libs,
1514 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1515 [ version_specific_libs=yes
1516 # Need the gcc compiler version to know where to install libraries
1517 # and header files if --enable-version-specific-runtime-libs option
1520 gcc_version_trigger=${srcdir}/../gcc/version.c
1521 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
1522 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1523 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
1524 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1525 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}
1527 ],version_specific_libs=no)
1528 AC_MSG_RESULT($version_specific_libs)
1530 # Default case for install directory for include files.
1531 if test x"$version_specific_libs" = x"no" \
1532 && test x"$gxx_include_dir"=x"no"; then
1533 gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
1536 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1537 # Install a library built with a cross compiler in tooldir, not libdir.
1538 if test x"$glibcpp_toolexecdir" = x"no"; then
1539 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
1540 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1541 glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
1543 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1544 glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
1548 AC_MSG_CHECKING([for install location])
1549 AC_MSG_RESULT($gxx_include_dir)
1551 AC_SUBST(gxx_include_dir)
1552 AC_SUBST(glibcpp_toolexecdir)
1553 AC_SUBST(glibcpp_toolexeclibdir)
1557 # Check whether LC_MESSAGES is available in <locale.h>.
1558 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1560 # This file file be copied and used freely without restrictions. It can
1561 # be used in projects which are not available under the GNU Public License
1562 # but which still want to provide support for the GNU gettext functionality.
1563 # Please note that the actual code is *not* freely available.
1567 AC_DEFUN(AC_LC_MESSAGES, [
1568 AC_CHECK_HEADER(locale.h, [
1569 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
1570 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1571 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
1572 if test $ac_cv_val_LC_MESSAGES = yes; then
1573 AC_DEFINE(HAVE_LC_MESSAGES)
1579 # Check for functions in math library.
1580 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1582 # This file can be copied and used freely without restrictions. It can
1583 # be used in projects which are not available under the GNU Public License
1584 # but which still want to provide support for the GNU gettext functionality.
1585 # Please note that the actual code is *not* freely available.
1589 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1590 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1591 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])
1592 AC_SUBST(LIBMATHOBJS)dnl
1596 # Check for string functions.
1597 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1599 # This file can be copied and used freely without restrictions. It can
1600 # be used in projects which are not available under the GNU Public License
1601 # but which still want to provide support for the GNU gettext functionality.
1602 # Please note that the actual code is *not* freely available.
1606 dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
1607 AC_DEFUN(AC_REPLACE_STRINGFUNCS,
1608 [AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
1609 AC_SUBST(LIBSTRINGOBJS)dnl
1613 dnl This macro searches for a GNU version of make. If a match is found, the
1614 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1615 dnl set to "#". This is useful for including a special features in a Makefile,
1616 dnl which cannot be handled by other versions of make. The variable
1617 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1618 dnl the empty string otherwise.
1620 dnl Here is an example of its use:
1622 dnl Makefile.in might contain:
1624 dnl # A failsafe way of putting a dependency rule into a makefile
1626 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1628 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1629 dnl @ifGNUmake@ include $(DEPEND)
1630 dnl @ifGNUmake@ endif
1632 dnl Then configure.in would normally contain:
1634 dnl CHECK_GNU_MAKE()
1635 dnl AC_OUTPUT(Makefile)
1637 dnl Then perhaps to cause gnu make to override any other make, we could do
1638 dnl something like this (note that GNU make always looks for GNUmakefile first):
1640 dnl if ! test x$_cv_gnu_make_command = x ; then
1641 dnl mv Makefile GNUmakefile
1642 dnl echo .DEFAULT: > Makefile ;
1643 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1646 dnl Then, if any (well almost any) other make is called, and GNU make also
1647 dnl exists, then the other make wraps the GNU make.
1649 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
1650 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
1652 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1653 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
1654 dnl #### conditional's subshell (" --version" is not a command), using a
1655 dnl #### different option to grep(1).
1657 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
1658 dnl #### ${MAKE:-make}).
1661 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1662 _cv_gnu_make_command='' ;
1663 dnl Search all the common names for GNU make
1664 for a in "${MAKE-make}" make gmake gnumake ; do
1665 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
1667 _cv_gnu_make_command=$a ;
1672 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1673 dnl string, '#' otherwise
1674 if test "x$_cv_gnu_make_command" != "x" ; then
1682 sinclude(../libtool.m4)
1683 dnl The lines below arrange for aclocal not to bring an installed
1684 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
1685 dnl add a definition of LIBTOOL to Makefile.in.
1686 ifelse(,,,[AC_SUBST(LIBTOOL)
1687 AC_DEFUN([AM_PROG_LIBTOOL])
1688 AC_DEFUN([AC_LIBTOOL_DLOPEN])
1689 AC_DEFUN([AC_PROG_LD])