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 and the user has not requested debug mode.
183 dnl GLIBCPP_CHECK_COMPILER_FEATURES
184 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
185 # All these tests are for C++; save the language and the compiler flags.
186 # The CXXFLAGS thing is suspicious, but based on similar bits
187 # found in GLIBCPP_CONFIGURE.
190 ac_test_CXXFLAGS="${CXXFLAGS+set}"
191 ac_save_CXXFLAGS="$CXXFLAGS"
193 # Check for maintainer-mode bits.
194 if test x"$USE_MAINTAINER_MODE" = xno; then
200 # Check for -ffunction-sections -fdata-sections
201 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
202 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
203 AC_TRY_COMPILE(, [int foo;
204 ], [ac_fdsections=yes], [ac_fdsections=no])
205 if test "$ac_test_CXXFLAGS" = set; then
206 CXXFLAGS="$ac_save_CXXFLAGS"
208 # this is the suspicious part
211 if test x"$ac_fdsections" = x"yes" && test x"$enable_debug" = x"no"; then
212 SECTION_FLAGS='-ffunction-sections -fdata-sections'
214 AC_MSG_RESULT($ac_fdsections)
218 AC_SUBST(SECTION_FLAGS)
223 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
224 dnl the native linker is in use, all variables will be defined to something
225 dnl safe (like an empty string).
227 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
228 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
230 dnl GLIBCPP_CHECK_LINKER_FEATURES
231 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
232 # If we're not using GNU ld, then there's no point in even trying these
233 # tests. Check for that first. We should have already tested for gld
234 # by now (in libtool), but require it now just to be safe...
237 AC_REQUIRE([AC_PROG_LD])
240 if test "$ac_cv_prog_gnu_ld" = "notbroken"; then
241 # GNU ld it is! Joy and bunny rabbits!
243 # All these tests are for C++; save the language and the compiler flags.
244 # Need to do this so that g++ won't try to link in libstdc++
245 ac_test_CFLAGS="${CFLAGS+set}"
246 ac_save_CFLAGS="$CFLAGS"
247 CFLAGS='-x c++ -Wl,--gc-sections'
249 # Check for -Wl,--gc-sections
250 # XXX This test is broken at the moment, as symbols required for
251 # linking are now in libsupc++ (not built yet.....). In addition,
252 # this test has cored on solaris in the past. In addition,
253 # --gc-sections doesn't really work at the moment (keeps on discarding
254 # used sections, first .eh_frame and now some of the glibc sections for
255 # iconv). Bzzzzt. Thanks for playing, maybe next time.
256 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
264 ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
265 if test "$ac_test_CFLAGS" = set; then
266 CFLAGS="$ac_save_CFLAGS"
268 # this is the suspicious part
271 if test "$ac_sectionLDflags" = "yes"; then
272 SECTION_LDFLAGS='-Wl,--gc-sections'
274 AC_MSG_RESULT($ac_sectionLDflags)
277 # Set linker optimization flags.
278 if test x"$ac_cv_prog_gnu_ld" = x"yes" && test x"$enable_debug" = x"no"; then
279 OPT_LDFLAGS='-Wl,-O1'
282 AC_SUBST(SECTION_LDFLAGS)
283 AC_SUBST(OPT_LDFLAGS)
288 dnl Check to see if the (math function) argument passed is
289 dnl declared when using the c++ compiler
290 dnl ASSUMES argument is a math function with ONE parameter
292 dnl GLIBCPP_CHECK_MATH_DECL_1
293 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
294 AC_MSG_CHECKING([for $1 declaration])
295 if test x${glibcpp_cv_func_$1_use+set} != xset; then
296 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
299 AC_TRY_COMPILE([#include <math.h>
305 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
309 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
313 dnl Check to see if the (math function) argument passed is
314 dnl 1) declared when using the c++ compiler
315 dnl 2) has "C" linkage
316 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
318 dnl Define HAVE_CARGF etc if "cargf" is declared and links
320 dnl argument 1 is name of function to check
322 dnl ASSUMES argument is a math function with ONE parameter
324 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
325 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
326 GLIBCPP_CHECK_MATH_DECL_1($1)
327 if test x$glibcpp_cv_func_$1_use = x"yes"; then
330 GLIBCPP_CHECK_MATH_DECL_1(_$1)
331 if test x$glibcpp_cv_func__$1_use = x"yes"; then
339 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
340 dnl of functions at once. It's an all-or-nothing check -- either
341 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
342 dnl Doing it this way saves significant configure time.
343 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
344 AC_MSG_CHECKING([for $1 functions])
345 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
348 AC_TRY_COMPILE([#include <math.h>],
349 [ `for x in $3; do echo "$x (0);"; done` ],
350 [glibcpp_cv_func_$2_use=yes],
351 [glibcpp_cv_func_$2_use=no])
353 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
354 if test x$glibcpp_cv_func_$2_use = x"yes"; then
360 dnl Check to see if the (math function) argument passed is
361 dnl declared when using the c++ compiler
362 dnl ASSUMES argument is a math function with ONE parameter
364 dnl GLIBCPP_CHECK_MATH_DECL_2
365 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
366 AC_MSG_CHECKING([for $1 declaration])
367 if test x${glibcpp_cv_func_$1_use+set} != xset; then
368 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
371 AC_TRY_COMPILE([#include <math.h>],
373 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
377 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
381 dnl Check to see if the (math function) argument passed is
382 dnl 1) declared when using the c++ compiler
383 dnl 2) has "C" linkage
385 dnl Define HAVE_CARGF etc if "cargf" is declared and links
387 dnl argument 1 is name of function to check
389 dnl ASSUMES argument is a math function with TWO parameters
391 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
392 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
393 GLIBCPP_CHECK_MATH_DECL_2($1)
394 if test x$glibcpp_cv_func_$1_use = x"yes"; then
397 GLIBCPP_CHECK_MATH_DECL_2(_$1)
398 if test x$glibcpp_cv_func__$1_use = x"yes"; then
406 dnl Check to see if the (math function) argument passed is
407 dnl declared when using the c++ compiler
408 dnl ASSUMES argument is a math function with ONE parameter
410 dnl GLIBCPP_CHECK_MATH_DECL_3
411 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
412 AC_MSG_CHECKING([for $1 declaration])
413 if test x${glibcpp_cv_func_$1_use+set} != xset; then
414 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
417 AC_TRY_COMPILE([#include <math.h>],
419 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
423 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
427 dnl Check to see if the (math function) argument passed is
428 dnl 1) declared when using the c++ compiler
429 dnl 2) has "C" linkage
431 dnl Define HAVE_CARGF etc if "cargf" is declared and links
433 dnl argument 1 is name of function to check
435 dnl ASSUMES argument is a math function with THREE parameters
437 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
438 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
439 GLIBCPP_CHECK_MATH_DECL_3($1)
440 if test x$glibcpp_cv_func_$1_use = x"yes"; then
443 GLIBCPP_CHECK_MATH_DECL_3(_$1)
444 if test x$glibcpp_cv_func__$1_use = x"yes"; then
452 dnl Check to see if the (stdlib function) argument passed is
453 dnl 1) declared when using the c++ compiler
454 dnl 2) has "C" linkage
456 dnl Define HAVE_STRTOLD if "strtold" is declared and links
457 dnl Define HAVE_STRTOF if "strtof" is declared and links
459 dnl argument 1 is name of function to check
461 dnl ASSUMES argument is a math function with TWO parameters
463 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
464 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
465 AC_MSG_CHECKING([for $1 declaration])
466 if test x${glibcpp_cv_func_$1_use+set} != xset; then
467 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
470 AC_TRY_COMPILE([#include <stdlib.h>],
472 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
476 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
477 if test x$glibcpp_cv_func_$1_use = x"yes"; then
484 dnl Because the builtins are picky picky picky about the arguments they take,
485 dnl do an explict linkage tests here.
486 dnl Check to see if the (math function) argument passed is
487 dnl 1) declared when using the c++ compiler
488 dnl 2) has "C" linkage
490 dnl Define HAVE_CARGF etc if "cargf" is declared and links
492 dnl argument 1 is name of function to check
494 dnl ASSUMES argument is a math function with ONE parameter
496 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
497 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
498 AC_MSG_CHECKING([for $1 declaration])
499 if test x${glibcpp_cv_func_$1_use+set} != xset; then
500 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
503 AC_TRY_COMPILE([#include <math.h>],
505 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
509 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
510 if test x$glibcpp_cv_func_$1_use = x"yes"; then
511 AC_MSG_CHECKING([for $1 linkage])
512 if test x${glibcpp_cv_func_$1_link+set} != xset; then
513 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
514 AC_TRY_LINK([#include <math.h>],
516 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
519 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
520 if test x$glibcpp_cv_func_$1_link = x"yes"; then
521 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
522 AC_DEFINE_UNQUOTED(${ac_tr_func})
529 dnl Check to see what builtin math functions are supported
531 dnl check for __builtin_abs
532 dnl check for __builtin_fabsf
533 dnl check for __builtin_fabs
534 dnl check for __builtin_fabl
535 dnl check for __builtin_labs
536 dnl check for __builtin_sqrtf
537 dnl check for __builtin_sqrtl
538 dnl check for __builtin_fsqrt
539 dnl check for __builtin_sinf
540 dnl check for __builtin_sin
541 dnl check for __builtin_sinl
542 dnl check for __builtin_cosf
543 dnl check for __builtin_cos
544 dnl check for __builtin_cosl
546 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
547 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
548 dnl Test for builtin math functions.
549 dnl These are made in gcc/c-common.c
550 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
551 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
552 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
553 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
554 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
556 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
557 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
558 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
560 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
561 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
562 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
564 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
565 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
566 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
568 dnl There is, without a doubt, a more elegant way to have these
569 dnl names exported so that they won't be stripped out of acconfig.h by
570 dnl autoheader. I leave this as an exercise to somebody less frustrated
571 dnl than I.... please email the libstdc++ list if you can figure out a
572 dnl more elegant approach (see autoconf/acgen.m4 and specifically
573 dnl AC_CHECK_FUNC for things to steal.)
575 if test x$dummyvar = x"yes"; then
576 AC_DEFINE(HAVE___BUILTIN_ABS)
577 AC_DEFINE(HAVE___BUILTIN_LABS)
578 AC_DEFINE(HAVE___BUILTIN_COS)
579 AC_DEFINE(HAVE___BUILTIN_COSF)
580 AC_DEFINE(HAVE___BUILTIN_COSL)
581 AC_DEFINE(HAVE___BUILTIN_FABS)
582 AC_DEFINE(HAVE___BUILTIN_FABSF)
583 AC_DEFINE(HAVE___BUILTIN_FABSL)
584 AC_DEFINE(HAVE___BUILTIN_SIN)
585 AC_DEFINE(HAVE___BUILTIN_SINF)
586 AC_DEFINE(HAVE___BUILTIN_SINL)
587 AC_DEFINE(HAVE___BUILTIN_FSQRT)
588 AC_DEFINE(HAVE___BUILTIN_SQRTF)
589 AC_DEFINE(HAVE___BUILTIN_SQRTL)
595 dnl Check to see what the underlying c library
596 dnl These checks need to do two things:
597 dnl 1) make sure the name is declared when using the c++ compiler
598 dnl 2) make sure the name has "C" linkage
599 dnl This might seem like overkill but experience has shown that it's not...
601 dnl Define HAVE_STRTOF etc if "strtof" is found.
602 dnl Define HAVE_STRTOLD etc if "strtold" is found.
604 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
605 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
606 ac_test_CXXFLAGS="${CXXFLAGS+set}"
607 ac_save_CXXFLAGS="$CXXFLAGS"
608 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
610 AC_CHECK_FUNCS(strtof)
611 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
613 CXXFLAGS="$ac_save_CXXFLAGS"
618 dnl Check to see what the underlying c library or math library is like.
619 dnl These checks need to do two things:
620 dnl 1) make sure the name is declared when using the c++ compiler
621 dnl 2) make sure the name has "C" linkage
622 dnl This might seem like overkill but experience has shown that it's not...
624 dnl Define HAVE_CARGF etc if "cargf" is found.
626 dnl GLIBCPP_CHECK_MATH_SUPPORT
627 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
628 ac_test_CXXFLAGS="${CXXFLAGS+set}"
629 ac_save_CXXFLAGS="$CXXFLAGS"
630 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
633 AC_CHECK_LIB(m, sin, libm="-lm")
637 dnl Check to see if certain C math functions exist.
638 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
639 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
640 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
641 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
642 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
643 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
644 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
646 dnl Check to see if basic C math functions have float versions.
647 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
652 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
655 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
656 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
657 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
658 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
659 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
660 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
661 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
662 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
663 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
664 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
665 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
666 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
667 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
669 dnl Check to see if basic C math functions have long double versions.
670 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
675 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
678 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
679 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
680 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
681 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
682 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
683 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
684 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
685 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
686 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
687 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
688 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
689 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
690 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
691 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
692 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
693 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
695 dnl Some runtimes have these functions with a preceding underscore. Please
696 dnl keep this sync'd with the one above. And if you add any new symbol,
697 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
698 dnl Check to see if certain C math functions exist.
700 dnl Check to see if basic C math functions have float versions.
701 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
703 _acosf _asinf _atanf \
705 _coshf _sinhf _tanhf)
706 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
710 dnl Check to see if basic C math functions have long double versions.
711 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
713 _acosl _asinl _atanl \
715 _coshl _sinhl _tanhl)
716 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
721 CXXFLAGS="$ac_save_CXXFLAGS"
726 dnl Check to see if there is native support for complex
728 dnl Don't compile bits in math/* if native support exits.
730 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found.
732 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
733 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
734 dnl Check for complex versions of math functions of platform.
735 AC_CHECK_LIB(m, main)
736 AC_REPLACE_MATHFUNCS(nan hypot hypotf atan2f expf copysignf)
738 dnl Compile the long double complex functions only if the function
739 dnl provides the non-complex long double functions that are needed.
740 dnl Currently this includes copysignl and atan2l, which should be
741 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
742 USE_COMPLEX_LONG_DOUBLE=no
743 if test x$ac_cv_func_atan2l = x"yes" \
744 && test x$ac_cv_func_copysignl = x"yes"; then
745 USE_COMPLEX_LONG_DOUBLE=yes
746 AC_REPLACE_MATHFUNCS(hypotl signbitl)
749 AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
753 dnl Check to see what architecture and operating system we are compiling
754 dnl for. Also, if architecture- or OS-specific flags are required for
755 dnl compilation, pick them up here.
757 dnl GLIBCPP_CHECK_TARGET
758 AC_DEFUN(GLIBCPP_CHECK_TARGET, [
759 . [$]{glibcpp_basedir}/configure.target
760 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
761 AC_MSG_RESULT(OS config directory is $os_include_dir)
762 AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h)
767 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
768 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
769 dnl must have been previously checked.)
771 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
772 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
774 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
775 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
777 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
778 dnl others even if wchar_t support is not on.
779 AC_MSG_CHECKING([for mbstate_t])
780 AC_TRY_COMPILE([#include <wchar.h>],
781 [mbstate_t teststate;],
782 have_mbstate_t=yes, have_mbstate_t=no)
783 AC_MSG_RESULT($have_mbstate_t)
784 if test x"$have_mbstate_t" = xyes; then
785 AC_DEFINE(HAVE_MBSTATE_T)
788 dnl Sanity check for existence of ISO C99 headers for extended encoding.
789 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
790 AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
792 dnl Only continue checking if the ISO C99 headers exist and support is on.
793 if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes \
794 && test x"$enable_c_mbchar" != xno; then
796 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
797 dnl numeric_limits can instantiate type_traits<wchar_t>
798 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
799 AC_TRY_COMPILE([#include <wchar.h>],
800 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
801 has_wchar_minmax=yes, has_wchar_minmax=no)
802 AC_MSG_RESULT($has_wchar_minmax)
804 dnl Test wchar.h for WEOF, which is what we use to determine whether
805 dnl to specialize for char_traits<wchar_t> or not.
806 AC_MSG_CHECKING([for WEOF])
809 #include <stddef.h>],
811 has_weof=yes, has_weof=no)
812 AC_MSG_RESULT($has_weof)
814 dnl Tests for wide character functions used in char_traits<wchar_t>.
815 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
816 wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
818 AC_MSG_CHECKING([for ISO C99 wchar_t support])
819 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
820 && test x"$ac_wfuncs" = xyes; then
821 ac_isoC99_wchar_t=yes
825 AC_MSG_RESULT($ac_isoC99_wchar_t)
827 dnl Use iconv for wchar_t to char conversions. As such, check for
828 dnl X/Open Portability Guide, version 2 features (XPG2).
829 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
830 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
832 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
833 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
835 LIBS="$LIBS $libiconv"
837 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
838 ac_XPG2funcs=yes, ac_XPG2funcs=no)
842 AC_MSG_CHECKING([for XPG2 wchar_t support])
843 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
844 && test x"$ac_XPG2funcs" = xyes; then
849 AC_MSG_RESULT($ac_XPG2_wchar_t)
851 dnl At the moment, only enable wchar_t specializations if all the
852 dnl above support is present.
853 AC_MSG_CHECKING([for enabled wchar_t specializations])
854 if test x"$ac_isoC99_wchar_t" = xyes \
855 && test x"$ac_XPG2_wchar_t" = xyes; then
856 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
862 dnl Wide characters disabled by the user.
863 AC_MSG_WARN([wchar_t support disabled.])
869 dnl Check to see if this version of GNU C++ is afflicted by bugs in
870 dnl __complex__ float support.
872 dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
874 dnl Check to see if this version of GNU C++ is afflicted by bugs in
875 dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
876 dnl gcc-2.95.x when using the library, unless we define the default copy
877 dnl ctor in the specializations of complex<>.
879 dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
880 dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
881 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
882 AC_REQUIRE([AC_PROG_CXX])
884 AC_MSG_CHECKING([for GNU C++ __complex__ support])
885 AC_CACHE_VAL(glibcpp_cv_complex, [
888 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
889 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
890 [ dcomplex x; f(x); ],
891 glibcpp_cv_complex=ok,
892 glibcpp_cv_complex=buggy
896 AC_MSG_RESULT($glibcpp_cv_complex)
897 if test $glibcpp_cv_complex = buggy; then
898 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
901 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
902 AC_CACHE_VAL(glibcpp_cv_float_complex, [
906 cat > conftest.h <<EOB
908 // Check for buggy __complex__ that causes ICE in most versions of egcs
909 // and gcc-2.95.x on certain platforms (eg., x86-win32).
911 // See http://gcc.gnu.org/ml/gcc-bugs/1999-07n/msg00845.html for
912 // more info on the bug itself.
917 __complex__ float m_value;
918 float_complex (float = 0.0f, float = 0.0f);
919 float_complex (__complex__ float val) : m_value (val) {}
920 float_complex foo (const float_complex &val)
921 { return float_complex (~val.m_value); }
924 AC_TRY_COMPILE([#include "conftest.h"], ,
925 glibcpp_cv_float_complex=ok,
926 glibcpp_cv_float_complex=buggy
930 AC_MSG_RESULT($glibcpp_cv_float_complex)
931 if test $glibcpp_cv_float_complex = buggy; then
932 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
938 dnl Check for special debugging mode; not for production use.
940 dnl GLIBCPP_ENABLE_DEBUG
941 dnl --enable-debug sets '-ggdb3 -O0'.
942 dnl --disable-debug sets '-g' and whatever optimization options the
943 dnl compiler can handle.
944 dnl + --enable-maintainer-mode automatically defaults this to on.
945 dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
946 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
947 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
948 dnl defaults to `no'.
949 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
950 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
952 changequote(<<, >>)dnl
953 << --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
955 [case "${enableval}" in
956 yes) enable_debug=yes ;;
957 no) enable_debug=no ;;
958 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
960 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
962 dnl Option parsed, now set things appropriately
963 case "${enable_debug}" in
965 DEBUG_FLAGS='-O0 -ggdb3'
971 AC_SUBST(DEBUG_FLAGS)
976 dnl Check for "unusual" flags to pass to the compiler while building.
978 dnl GLIBCPP_ENABLE_CXX_FLAGS
979 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
980 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
981 dnl Somehow this same set of flags must be passed when [re]building
983 dnl --disable-cxx-flags passes nothing.
984 dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
985 dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
986 dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
987 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
988 dnl If "default flags" is an empty string (or "none"), the effect is
989 dnl the same as --disable or --enable=no.
990 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
991 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
992 AC_ARG_ENABLE(cxx-flags,
993 changequote(<<, >>)dnl
994 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
995 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
997 [case "x$enableval" in
999 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1001 enable_cxx_flags='' ;;
1003 enable_cxx_flags="$enableval" ;;
1005 enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
1007 dnl Thinko on my part during design. This kludge is the workaround.
1008 if test "$enable_cxx_flags" = "none"; then
1009 enable_cxx_flags='';
1012 dnl Run through flags (either default or command-line) and set anything
1013 dnl extra (e.g., #defines) that must accompany particular g++ options.
1014 if test -n "$enable_cxx_flags"; then
1015 for f in $enable_cxx_flags; do
1019 *) # and we're trying to pass /what/ exactly?
1020 AC_MSG_ERROR([compiler flags start with a -]) ;;
1024 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1025 AC_SUBST(EXTRA_CXX_FLAGS)
1030 dnl Check for which locale library to use: gnu or generic.
1032 dnl GLIBCPP_ENABLE_CLOCALE
1033 dnl --enable-clocale=gnu sets config/c_locale_gnu.cc and friends
1034 dnl --enable-clocale=generic sets config/c_locale_generic.cc and friends
1036 dnl default is generic
1038 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1039 AC_MSG_CHECKING([for clocale to use])
1040 AC_ARG_ENABLE(clocale,
1041 [ --enable-clocale enable model for target locale package.
1042 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
1044 if test x$enable_clocale = xno; then
1045 enable_clocale=generic
1047 enable_clocale=generic)
1049 enable_clocale_flag=$enable_clocale
1051 dnl Check if a valid locale package
1052 case x${enable_clocale_flag} in
1054 CLOCALE_H=config/c_locale_gnu.h
1055 CLOCALE_CC=config/c_locale_gnu.cc
1059 CLOCALE_H=config/c_locale_generic.h
1060 CLOCALE_CC=config/c_locale_generic.cc
1061 AC_MSG_RESULT(generic)
1064 echo "$enable_clocale is an unknown locale package" 1>&2
1069 AC_LINK_FILES($CLOCALE_H, include/bits/c++locale.h)
1070 AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
1075 dnl Check for which I/O library to use: libio, or something specific.
1077 dnl GLIBCPP_ENABLE_CSTDIO
1078 dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
1080 dnl default is stdio
1082 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1083 AC_MSG_CHECKING([for cstdio to use])
1084 AC_ARG_ENABLE(cstdio,
1085 [ --enable-cstdio enable stdio for target io package.
1086 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1088 if test x$enable_cstdio = xno; then
1091 enable_cstdio=stdio)
1093 enable_cstdio_flag=$enable_cstdio
1095 dnl Check if a valid I/O package
1096 case x${enable_cstdio_flag} in
1098 CSTDIO_H=config/c_io_libio.h
1099 BASIC_FILE_H=config/basic_file_libio.h
1100 BASIC_FILE_CC=config/basic_file_libio.cc
1101 AC_MSG_RESULT(libio)
1103 # see if we are on a system with libio native (ie, linux)
1104 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1106 # Need to check and see what version of glibc is being used. If
1107 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1108 # compile most of libio for linux systems.
1109 if test x$has_libio = x"yes"; then
1112 AC_MSG_CHECKING([for glibc version >= 2.2])
1113 AC_EGREP_CPP([ok], [
1114 #include <features.h>
1115 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1118 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1119 AC_MSG_RESULT($glibc_satisfactory)
1123 # XXX at the moment, admit defeat and force the recompilation
1124 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1125 glibc_satisfactory=no
1127 if test x$glibc_satisfactory = x"yes"; then
1132 # bkoz XXX need to add checks to enable this
1133 # pme XXX here's a first pass at such a check
1134 if test x$enable_c_mbchar != xno; then
1142 # Using libio, but <libio.h> doesn't exist on the target system. . .
1144 # bkoz XXX need to add checks to enable this
1145 # pme XXX here's a first pass at such a check
1146 if test x$enable_c_mbchar != xno; then
1153 xstdio | x | xno | xnone | xyes)
1155 CSTDIO_H=config/c_io_stdio.h
1156 BASIC_FILE_H=config/basic_file_stdio.h
1157 BASIC_FILE_CC=config/basic_file_stdio.cc
1158 AC_MSG_RESULT(stdio)
1160 # We're not using stdio.
1165 echo "$enable_cstdio is an unknown io package" 1>&2
1169 AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
1170 AC_LINK_FILES($BASIC_FILE_H, include/bits/basic_file_model.h)
1171 AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
1173 # 2000-08-04 bkoz hack
1174 CCODECVT_C=config/c_io_libio_codecvt.c
1175 AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
1176 # 2000-08-04 bkoz hack
1178 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1179 test "$need_libio" = yes || test "$need_wlibio" = yes)
1180 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1181 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1182 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1183 libio_la=../libio/libio.la
1192 dnl Check for which threading library to use.
1194 dnl GLIBCPP_ENABLE_THREADS
1195 dnl --enable-threads=posix sets config/threads-posix.h et. al.
1197 dnl Default is no threads, which also disables _IO_MTSAFE_IO in
1198 dnl libio. Any actual thread package will enable it.
1200 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1201 dnl Note this comes from the gcc/config.in and libjava/config.in
1202 dnl Efforts should be made to keep this in sync.
1203 AC_MSG_CHECKING([for threads package to use])
1204 AC_ARG_ENABLE(threads,
1205 [ --enable-threads enable thread usage for target GCC.
1206 --enable-threads=LIB use LIB thread package for target GCC. [default=no]
1208 if test x$enable_threads = xno; then
1213 enable_threads_flag=$enable_threads
1215 dnl Check if a valid thread package
1216 case x${enable_threads_flag} in
1219 target_thread_file='single'
1223 target_thread_file='posix'
1225 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
1226 xsolaris | xwin32 | xdce | xvxworks)
1227 target_thread_file=$enable_threads_flag
1230 echo "$enable_threads is an unknown thread package" 1>&2
1235 dnl Check for thread package actually supported in libstdc++
1237 case "$target_thread_file" in
1239 THREADH=threads-no.h
1242 THREADH=threads-posix.h
1244 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
1245 AC_MSG_ERROR(thread package $THREADS not yet supported)
1248 AC_MSG_ERROR($THREADS is an unsupported/unknown thread package)
1251 AC_MSG_RESULT($THREADH)
1253 AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
1254 if test $THREADH != threads-no.h; then
1255 AC_DEFINE(_GLIBCPP_USE_THREADS)
1261 dnl Check for exception handling support. If an explicit enable/disable
1262 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1263 dnl target may or may not support call frame exceptions.
1265 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1266 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1267 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1269 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1271 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1272 AC_MSG_CHECKING([for exception model to use])
1275 AC_ARG_ENABLE(sjlj-exceptions,
1276 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1278 [dnl Botheration. Now we've got to detect the exception model.
1279 dnl Link tests against libgcc.a are problematic since -- at least
1280 dnl as of this writing -- we've not been given proper -L bits for
1281 dnl single-tree newlib and libgloss.
1283 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1284 dnl conftest files before we got a change to grep them first.
1285 cat > conftest.$ac_ext << EOF
1286 [#]line __oline__ "configure"
1295 old_CXXFLAGS="$CXXFLAGS"
1297 if AC_TRY_EVAL(ac_compile); then
1298 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1299 enable_sjlj_exceptions=yes
1300 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1301 enable_sjlj_exceptions=no
1304 CXXFLAGS="$old_CXXFLAGS"
1306 if test x$enable_sjlj_exceptions = xyes; then
1307 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1308 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1309 ac_exception_model_name=sjlj
1310 elif test x$enable_sjlj_exceptions = xno; then
1311 ac_exception_model_name="call frame"
1313 AC_MSG_ERROR([unable to detect exception model])
1316 AC_MSG_RESULT($ac_exception_model_name)
1321 dnl Check for template specializations for the 'long long' type extension.
1323 dnl GLIBCPP_ENABLE_LONG_LONG
1324 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1325 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1326 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1327 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1328 dnl defaults to `no'.
1329 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1331 dnl GLIBCPP_ENABLE_LONG_LONG
1332 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1333 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1335 AC_ARG_ENABLE(long-long,
1336 changequote(<<, >>)dnl
1337 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1338 changequote([, ])dnl
1339 [case "$enableval" in
1340 yes) enable_long_long=yes ;;
1341 no) enable_long_long=no ;;
1342 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1344 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1346 # Allow use of os-dependent settings, so that macros that turn on
1347 # C99 capabilities can be defined and used in a consistent way.
1348 OS_INC_PATH=${srcdir}/$os_include_dir
1349 ac_test_CFLAGS="${CFLAGS+set}"
1350 ac_save_CFLAGS="$CFLAGS"
1351 CFLAGS="-I$OS_INC_PATH"
1353 # Check for the existence of functions used if long long is enabled.
1354 AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
1355 AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
1357 # Check for lldiv_t, et. al.
1358 AC_MSG_CHECKING([for lldiv_t declaration])
1359 AC_CACHE_VAL(glibcpp_lldiv_t_use, [
1360 AC_TRY_COMPILE([#include <bits/os_defines.h>
1361 #include <stdlib.h>],
1363 [glibcpp_lldiv_t_use=yes], [glibcpp_lldiv_t_use=no])
1365 AC_MSG_RESULT($glibcpp_lldiv_t_use)
1366 if test x$glibcpp_lldiv_t_use = x"yes"; then
1367 AC_DEFINE(HAVE_LLDIV_T)
1370 AC_MSG_CHECKING([for enabled long long])
1371 if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
1372 enable_long_long=no;
1374 AC_MSG_RESULT($enable_long_long)
1376 # Option parsed, now set things appropriately
1377 if test x"$enable_long_long" = xyes; then
1378 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1382 CFLAGS="$ac_save_CFLAGS"
1387 dnl Check for what kind of C headers to use.
1389 dnl GLIBCPP_ENABLE_CHEADERS
1390 dnl --enable-cheaders= [does stuff].
1391 dnl --disable-cheaders [does not do anything, really].
1392 dnl + This will eventually need to be 'c_shadow' by default.
1393 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1394 dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
1395 dnl If ommitted, it defaults to `c_std'.
1396 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1397 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1398 AC_MSG_CHECKING([for c header strategy to use])
1399 AC_ARG_ENABLE(cheaders,
1400 changequote(<<, >>)dnl
1401 << --enable-cheaders construct "C" header files for
1402 g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1404 [case "$enableval" in
1409 enable_cheaders=c_std
1412 enable_cheaders=c_shadow
1414 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1417 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1418 AC_MSG_RESULT($enable_cheaders)
1420 dnl Option parsed, now set things appropriately
1421 case "$enable_cheaders" in
1423 CSHADOW_FLAGS="-fno-builtin"
1424 C_INCLUDE_DIR='${top_srcdir}/include/c_shadow'
1425 AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
1429 C_INCLUDE_DIR='${top_srcdir}/include/c_std'
1433 C_INCLUDE_DIR='${top_srcdir}/include/c'
1437 AC_SUBST(CSHADOW_FLAGS)
1438 AC_SUBST(C_INCLUDE_DIR)
1439 AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
1444 dnl Check for wide character support. Has the same effect as the option
1445 dnl in gcc's configure, but in a form that autoconf can mess with.
1447 dnl GLIBCPP_ENABLE_C_MBCHAR
1448 dnl --enable-c-mbchar requests all the wchar_t stuff.
1449 dnl --disable-c-mbchar doesn't.
1450 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1451 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1452 dnl defaults to `no'.
1453 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1454 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1455 AC_ARG_ENABLE(c-mbchar,
1456 changequote(<<, >>)dnl
1457 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1458 changequote([, ])dnl
1459 [case "$enableval" in
1460 yes) enable_c_mbchar=yes ;;
1461 no) enable_c_mbchar=no ;;
1462 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1464 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1465 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1470 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1472 dnl GLIBCPP_INCLUDE_DIR
1474 dnl TOPLEVEL_INCLUDES
1475 dnl LIBMATH_INCLUDES
1476 dnl LIBSUPCXX_INCLUDES
1478 dnl CSHADOW_INCLUDES
1480 dnl GLIBCPP_EXPORT_INCLUDE
1481 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1482 # Root level of the include sources.
1483 GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
1485 # Can either use include/c or include/c_std to grab "C" headers. This
1486 # variable is set to the include directory currently in use.
1487 # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS
1489 # Passed down for canadian crosses.
1490 if test x"$CANADIAN" = xyes; then
1491 TOPLEVEL_INCLUDES='-I$(includedir)'
1494 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1496 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1498 #if GLIBCPP_NEED_LIBIO
1499 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1501 #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
1504 #if GLIBCPP_USE_CSHADOW
1505 # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
1506 # -I$(top_blddir)/cshadow'
1508 CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
1511 # Now, export this to all the little Makefiles....
1512 AC_SUBST(GLIBCPP_INCLUDE_DIR)
1513 AC_SUBST(TOPLEVEL_INCLUDES)
1514 AC_SUBST(LIBMATH_INCLUDES)
1515 AC_SUBST(LIBSUPCXX_INCLUDES)
1516 AC_SUBST(LIBIO_INCLUDES)
1517 AC_SUBST(CSTD_INCLUDES)
1522 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1524 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1525 # Optimization flags that are probably a good idea for thrill-seekers. Just
1526 # uncomment the lines below and make, everything else is ready to go...
1527 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1529 AC_SUBST(OPTIMIZE_CXXFLAGS)
1531 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1532 AC_SUBST(WARN_FLAGS)
1536 dnl GLIBCPP_EXPORT_INSTALL_INFO
1537 dnl calculates gxx_install_dir
1538 dnl exports glibcpp_toolexecdir
1539 dnl exports glibcpp_toolexeclibdir
1541 dnl Assumes cross_compiling bits already done, and with_cross_host in
1544 dnl GLIBCPP_EXPORT_INSTALL_INFO
1545 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1547 glibcpp_toolexecdir=no
1548 glibcpp_toolexeclibdir=no
1550 AC_MSG_CHECKING([for interface version number])
1551 libstdcxx_interface=$INTERFACE
1552 AC_MSG_RESULT($libstdcxx_interface)
1554 # Process the option --with-gxx-include-dir=<path to include-files directory>
1555 AC_MSG_CHECKING([for --with-gxx-include-dir])
1556 AC_ARG_WITH(gxx-include-dir,
1557 [ --with-gxx-include-dir the installation directory for include files],
1558 [case "${withval}" in
1560 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1567 gxx_include_dir=${withval}
1569 esac], [gxx_include_dir=no])
1570 AC_MSG_RESULT($gxx_include_dir)
1572 # Process the option "--enable-version-specific-runtime-libs"
1573 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1574 AC_ARG_ENABLE(version-specific-runtime-libs,
1575 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1576 [ version_specific_libs=yes
1577 # Need the gcc compiler version to know where to install libraries
1578 # and header files if --enable-version-specific-runtime-libs option
1581 gcc_version_trigger=${srcdir}/../gcc/version.c
1582 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
1583 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1584 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
1585 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1586 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}
1588 ],version_specific_libs=no)
1589 AC_MSG_RESULT($version_specific_libs)
1591 # Default case for install directory for include files.
1592 if test x"$version_specific_libs" = x"no" \
1593 && test x"$gxx_include_dir" = x"no"; then
1594 gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
1597 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1598 # Install a library built with a cross compiler in tooldir, not libdir.
1599 if test x"$glibcpp_toolexecdir" = x"no"; then
1600 if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
1601 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1602 glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
1604 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1605 glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
1609 AC_MSG_CHECKING([for install location])
1610 AC_MSG_RESULT($gxx_include_dir)
1612 AC_SUBST(gxx_include_dir)
1613 AC_SUBST(glibcpp_toolexecdir)
1614 AC_SUBST(glibcpp_toolexeclibdir)
1618 # Check whether LC_MESSAGES is available in <locale.h>.
1619 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1621 # This file file be copied and used freely without restrictions. It can
1622 # be used in projects which are not available under the GNU Public License
1623 # but which still want to provide support for the GNU gettext functionality.
1624 # Please note that the actual code is *not* freely available.
1628 AC_DEFUN(AC_LC_MESSAGES, [
1629 AC_CHECK_HEADER(locale.h, [
1630 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
1631 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1632 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
1633 if test $ac_cv_val_LC_MESSAGES = yes; then
1634 AC_DEFINE(HAVE_LC_MESSAGES)
1640 # Check for functions in math library.
1641 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1643 # This file can be copied and used freely without restrictions. It can
1644 # be used in projects which are not available under the GNU Public License
1645 # but which still want to provide support for the GNU gettext functionality.
1646 # Please note that the actual code is *not* freely available.
1650 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1651 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1652 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])
1653 AC_SUBST(LIBMATHOBJS)dnl
1657 # Check for string functions.
1658 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1660 # This file can be copied and used freely without restrictions. It can
1661 # be used in projects which are not available under the GNU Public License
1662 # but which still want to provide support for the GNU gettext functionality.
1663 # Please note that the actual code is *not* freely available.
1667 dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
1668 AC_DEFUN(AC_REPLACE_STRINGFUNCS,
1669 [AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
1670 AC_SUBST(LIBSTRINGOBJS)dnl
1674 dnl This macro searches for a GNU version of make. If a match is found, the
1675 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1676 dnl set to "#". This is useful for including a special features in a Makefile,
1677 dnl which cannot be handled by other versions of make. The variable
1678 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1679 dnl the empty string otherwise.
1681 dnl Here is an example of its use:
1683 dnl Makefile.in might contain:
1685 dnl # A failsafe way of putting a dependency rule into a makefile
1687 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1689 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1690 dnl @ifGNUmake@ include $(DEPEND)
1691 dnl @ifGNUmake@ endif
1693 dnl Then configure.in would normally contain:
1695 dnl CHECK_GNU_MAKE()
1696 dnl AC_OUTPUT(Makefile)
1698 dnl Then perhaps to cause gnu make to override any other make, we could do
1699 dnl something like this (note that GNU make always looks for GNUmakefile first):
1701 dnl if ! test x$_cv_gnu_make_command = x ; then
1702 dnl mv Makefile GNUmakefile
1703 dnl echo .DEFAULT: > Makefile ;
1704 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1707 dnl Then, if any (well almost any) other make is called, and GNU make also
1708 dnl exists, then the other make wraps the GNU make.
1710 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
1711 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
1713 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1714 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
1715 dnl #### conditional's subshell (" --version" is not a command), using a
1716 dnl #### different option to grep(1).
1718 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
1719 dnl #### ${MAKE:-make}).
1722 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1723 _cv_gnu_make_command='' ;
1724 dnl Search all the common names for GNU make
1725 for a in "${MAKE-make}" make gmake gnumake ; do
1726 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
1728 _cv_gnu_make_command=$a ;
1733 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1734 dnl string, '#' otherwise
1735 if test "x$_cv_gnu_make_command" != "x" ; then
1743 sinclude(../libtool.m4)
1744 dnl The lines below arrange for aclocal not to bring an installed
1745 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
1746 dnl add a definition of LIBTOOL to Makefile.in.
1747 ifelse(,,,[AC_SUBST(LIBTOOL)
1748 AC_DEFUN([AM_PROG_LIBTOOL])
1749 AC_DEFUN([AC_LIBTOOL_DLOPEN])
1750 AC_DEFUN([AC_PROG_LD])