2 dnl Initialize basic configure bits, set toplevel_srcdir for Makefiles.
4 dnl GLIBCPP_TOPREL_CONFIGURE
5 AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
6 dnl Default to --enable-multilib (this is also passed by default
7 dnl from the ubercommon-top-level configure)
8 AC_ARG_ENABLE(multilib,
9 [ --enable-multilib build hella library versions (default)],
10 [case "${enableval}" in
13 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
14 esac], [multilib=yes])dnl
16 # When building with srcdir == objdir, links to the source files will
17 # be created in directories within the target_subdir. We have to
18 # adjust toplevel_srcdir accordingly, so that configure finds
19 # install-sh and other auxiliary files that live in the top-level
21 if test "${srcdir}" = "."; then
22 if test -z "${with_target_subdir}"; then
25 if test "${with_target_subdir}" != "."; then
26 toprel="${with_multisrctop}../.."
28 toprel="${with_multisrctop}.."
34 AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
35 toplevel_srcdir=\${top_srcdir}/$toprel
36 AC_SUBST(toplevel_srcdir)
40 dnl Initialize the rest of the library configury.
43 AC_DEFUN(GLIBCPP_CONFIGURE, [
44 # Export build and source directories.
45 # These need to be absolute paths, yet at the same time need to
46 # canonicalize only relative paths, because then amd will not unmount
47 # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
48 glibcpp_builddir=`${PWDCMD-pwd}`
50 [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
51 *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
53 AC_SUBST(glibcpp_builddir)
54 AC_SUBST(glibcpp_srcdir)
56 dnl This is here just to satisfy automake.
57 ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
60 # Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.5x, can also
61 # be 'cp -p' if linking isn't available. Uncomment the next line to
62 # force a particular method.
63 #ac_cv_prog_LN_S='cp -p'
66 # We use these options to decide which functions to include.
67 AC_ARG_WITH(target-subdir,
68 [ --with-target-subdir=SUBDIR
69 configuring in a subdirectory])
70 AC_ARG_WITH(cross-host,
71 [ --with-cross-host=HOST configuring with a cross compiler])
73 glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
74 AC_SUBST(glibcpp_basedir)
76 # Never versions of autoconf add an underscore to these functions.
77 # Prevent future problems ...
78 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
79 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
80 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
81 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
84 # FIXME: We temporarily define our own version of AC_PROG_CC. This is
85 # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
86 # are probably using a cross compiler, which will not be able to fully
87 # link an executable. This is addressed in later versions of autoconf.
89 AC_DEFUN(LIB_AC_PROG_CC,
90 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
91 dnl Fool anybody using AC_PROG_CC.
92 AC_PROVIDE([AC_PROG_CC])
93 AC_CHECK_PROG(CC, gcc, gcc)
94 if test -z "$CC"; then
95 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
96 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
101 if test $ac_cv_prog_gcc = yes; then
103 dnl Check whether -g works, even if CFLAGS is set, in case the package
104 dnl plays around with CFLAGS (such as to build both debugging and
105 dnl normal versions of a library), tasteless as that idea is.
106 ac_test_CFLAGS="${CFLAGS+set}"
107 ac_save_CFLAGS="$CFLAGS"
110 if test "$ac_test_CFLAGS" = set; then
111 CFLAGS="$ac_save_CFLAGS"
112 elif test $ac_cv_prog_cc_g = yes; then
119 test "${CFLAGS+set}" = set || CFLAGS="-g"
125 # Likewise for AC_PROG_CXX. We can't just call it directly because g++
126 # will try to link in libstdc++.
127 AC_DEFUN(LIB_AC_PROG_CXX,
128 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
129 dnl Fool anybody using AC_PROG_CXX.
130 AC_PROVIDE([AC_PROG_CXX])
131 # Use glibcpp_CXX so that we do not cause CXX to be cached with the
132 # flags that come in CXX while configuring libstdc++. They're different
133 # from those used for all other target libraries. If CXX is set in
134 # the environment, respect that here.
136 AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
137 AC_SUBST(glibcpp_CXX)
139 test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
143 if test $ac_cv_prog_gxx = yes; then
145 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
146 dnl plays around with CXXFLAGS (such as to build both debugging and
147 dnl normal versions of a library), tasteless as that idea is.
148 ac_test_CXXFLAGS="${CXXFLAGS+set}"
149 ac_save_CXXFLAGS="$CXXFLAGS"
152 if test "$ac_test_CXXFLAGS" = set; then
153 CXXFLAGS="$ac_save_CXXFLAGS"
154 elif test $ac_cv_prog_cxx_g = yes; then
161 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
167 # For directory versioning (e.g., headers) and other variables.
168 AC_MSG_CHECKING([for GCC version number])
169 gcc_version=`$glibcpp_CXX -dumpversion`
170 AC_MSG_RESULT($gcc_version)
172 # For some reason, gettext needs this.
175 AC_CHECK_TOOL(AS, as)
176 AC_CHECK_TOOL(AR, ar)
177 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
182 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
183 # at least currently, we never actually build a program, so we never
184 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
185 # fails, because we are probably configuring with a cross compiler
186 # which can't create executables. So we include AC_EXEEXT to keep
187 # automake happy, but we don't execute it, since we don't care about
190 # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
191 # to nothing, so nothing would remain between `then' and `fi' if it
192 # were not for the `:' below.
197 case [$]{glibcpp_basedir} in
198 /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
199 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
202 # Find platform-specific directories containing configuration info. In
203 # addition to possibly modifying the same flags, it also sets up symlinks.
209 dnl Check to see if g++ can compile this library, and if so, if any version-
210 dnl specific precautions need to be taken.
212 dnl GLIBCPP_CHECK_COMPILER_VERSION
213 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
214 if test ! -f stamp-sanity-compiler; then
215 AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
222 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
224 AC_MSG_RESULT($gpp_satisfactory)
225 touch stamp-sanity-compiler
231 dnl Tests for newer compiler features, or features that are present in newer
232 dnl compiler versions but not older compiler versions still in use, should
235 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
236 dnl new inlining code or the new system_header pragma will die on -Werror.
237 dnl Leave it out by default and use maint-mode to use it.
239 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
240 dnl compiler supports it and the user has not requested debug mode.
242 dnl GLIBCPP_CHECK_COMPILER_FEATURES
243 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
244 # All these tests are for C++; save the language and the compiler flags.
245 # The CXXFLAGS thing is suspicious, but based on similar bits previously
246 # found in GLIBCPP_CONFIGURE.
249 ac_test_CXXFLAGS="${CXXFLAGS+set}"
250 ac_save_CXXFLAGS="$CXXFLAGS"
252 # Check for maintainer-mode bits.
253 if test x"$USE_MAINTAINER_MODE" = xno; then
259 # Check for -ffunction-sections -fdata-sections
260 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
261 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
262 AC_TRY_COMPILE(, [int foo;
263 ], [ac_fdsections=yes], [ac_fdsections=no])
264 if test "$ac_test_CXXFLAGS" = set; then
265 CXXFLAGS="$ac_save_CXXFLAGS"
267 # this is the suspicious part
270 if test x"$ac_fdsections" = x"yes"; then
271 SECTION_FLAGS='-ffunction-sections -fdata-sections'
273 AC_MSG_RESULT($ac_fdsections)
277 AC_SUBST(SECTION_FLAGS)
282 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
283 dnl the native linker is in use, all variables will be defined to something
284 dnl safe (like an empty string).
286 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
287 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
288 dnl Define LD, with_gnu_ld, and (possibly) glibcpp_gnu_ld_version as
289 dnl side-effects of testing.
291 dnl GLIBCPP_CHECK_LINKER_FEATURES
292 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
293 # If we're not using GNU ld, then there's no point in even trying these
294 # tests. Check for that first. We should have already tested for gld
295 # by now (in libtool), but require it now just to be safe...
296 test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
297 test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
298 AC_REQUIRE([AC_PROG_LD])
300 # The name set by libtool depends on the version of libtool. Shame on us
301 # for depending on an impl detail, but c'est la vie. Older versions used
302 # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
303 # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
304 # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
305 # set (hence we're using an older libtool), then set it.
306 if test x${with_gnu_ld+set} != xset; then
307 if test x${ac_cv_prog_gnu_ld+set} != xset; then
308 # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
311 with_gnu_ld=$ac_cv_prog_gnu_ld
315 # Start by getting the version number. I think the libtool test already
316 # does some of this, but throws away the result.
318 ldver=`$LD --version 2>/dev/null | head -1 | \
319 sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
321 glibcpp_gnu_ld_version=`echo $ldver | \
322 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
325 if test "$with_gnu_ld" = "notbroken"; then
326 # GNU ld it is! Joy and bunny rabbits!
328 # All these tests are for C++; save the language and the compiler flags.
329 # Need to do this so that g++ won't try to link in libstdc++
330 ac_test_CFLAGS="${CFLAGS+set}"
331 ac_save_CFLAGS="$CFLAGS"
332 CFLAGS='-x c++ -Wl,--gc-sections'
334 # Check for -Wl,--gc-sections
335 # XXX This test is broken at the moment, as symbols required for
336 # linking are now in libsupc++ (not built yet.....). In addition,
337 # this test has cored on solaris in the past. In addition,
338 # --gc-sections doesn't really work at the moment (keeps on discarding
339 # used sections, first .eh_frame and now some of the glibc sections for
340 # iconv). Bzzzzt. Thanks for playing, maybe next time.
341 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
349 ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
350 if test "$ac_test_CFLAGS" = set; then
351 CFLAGS="$ac_save_CFLAGS"
353 # this is the suspicious part
356 if test "$ac_sectionLDflags" = "yes"; then
357 SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
359 AC_MSG_RESULT($ac_sectionLDflags)
362 # Set linker optimization flags.
363 if test x"$with_gnu_ld" = x"yes"; then
364 OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
367 AC_SUBST(SECTION_LDFLAGS)
368 AC_SUBST(OPT_LDFLAGS)
373 dnl Check to see if the (math function) argument passed is
374 dnl declared when using the c++ compiler
375 dnl ASSUMES argument is a math function with ONE parameter
377 dnl GLIBCPP_CHECK_MATH_DECL_1
378 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
379 AC_MSG_CHECKING([for $1 declaration])
380 if test x${glibcpp_cv_func_$1_use+set} != xset; then
381 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
384 AC_TRY_COMPILE([#include <math.h>
390 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
394 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
398 dnl Check to see if the (math function) argument passed is
399 dnl 1) declared when using the c++ compiler
400 dnl 2) has "C" linkage
401 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
403 dnl Define HAVE_CARGF etc if "cargf" is declared and links
405 dnl argument 1 is name of function to check
407 dnl ASSUMES argument is a math function with ONE parameter
409 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
410 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
411 GLIBCPP_CHECK_MATH_DECL_1($1)
412 if test x$glibcpp_cv_func_$1_use = x"yes"; then
415 GLIBCPP_CHECK_MATH_DECL_1(_$1)
416 if test x$glibcpp_cv_func__$1_use = x"yes"; then
424 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
425 dnl of functions at once. It's an all-or-nothing check -- either
426 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
427 dnl Doing it this way saves significant configure time.
428 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
429 AC_MSG_CHECKING([for $1 functions])
430 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
433 AC_TRY_COMPILE([#include <math.h>],
434 [ `for x in $3; do echo "$x (0);"; done` ],
435 [glibcpp_cv_func_$2_use=yes],
436 [glibcpp_cv_func_$2_use=no])
438 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
439 if test x$glibcpp_cv_func_$2_use = x"yes"; then
445 dnl Check to see if the (math function) argument passed is
446 dnl declared when using the c++ compiler
447 dnl ASSUMES argument is a math function with TWO parameters
449 dnl GLIBCPP_CHECK_MATH_DECL_2
450 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
451 AC_MSG_CHECKING([for $1 declaration])
452 if test x${glibcpp_cv_func_$1_use+set} != xset; then
453 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
456 AC_TRY_COMPILE([#include <math.h>],
458 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
462 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
466 dnl Check to see if the (math function) argument passed is
467 dnl 1) declared when using the c++ compiler
468 dnl 2) has "C" linkage
470 dnl Define HAVE_CARGF etc if "cargf" is declared and links
472 dnl argument 1 is name of function to check
474 dnl ASSUMES argument is a math function with TWO parameters
476 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
477 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
478 GLIBCPP_CHECK_MATH_DECL_2($1)
479 if test x$glibcpp_cv_func_$1_use = x"yes"; then
482 GLIBCPP_CHECK_MATH_DECL_2(_$1)
483 if test x$glibcpp_cv_func__$1_use = x"yes"; then
491 dnl Check to see if the (math function) argument passed is
492 dnl declared when using the c++ compiler
493 dnl ASSUMES argument is a math function with THREE parameters
495 dnl GLIBCPP_CHECK_MATH_DECL_3
496 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
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)
512 dnl Check to see if the (math function) argument passed is
513 dnl 1) declared when using the c++ compiler
514 dnl 2) has "C" linkage
516 dnl Define HAVE_CARGF etc if "cargf" is declared and links
518 dnl argument 1 is name of function to check
520 dnl ASSUMES argument is a math function with THREE parameters
522 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
523 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
524 GLIBCPP_CHECK_MATH_DECL_3($1)
525 if test x$glibcpp_cv_func_$1_use = x"yes"; then
528 GLIBCPP_CHECK_MATH_DECL_3(_$1)
529 if test x$glibcpp_cv_func__$1_use = x"yes"; then
537 dnl Check to see if the (stdlib function) argument passed is
538 dnl 1) declared when using the c++ compiler
539 dnl 2) has "C" linkage
541 dnl argument 1 is name of function to check
543 dnl ASSUMES argument is a math function with TWO parameters
545 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
546 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
547 AC_MSG_CHECKING([for $1 declaration])
548 if test x${glibcpp_cv_func_$1_use+set} != xset; then
549 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
552 AC_TRY_COMPILE([#include <stdlib.h>],
554 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
558 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
559 if test x$glibcpp_cv_func_$1_use = x"yes"; then
566 dnl Check to see if the (stdlib function) argument passed is
567 dnl 1) declared when using the c++ compiler
568 dnl 2) has "C" linkage
570 dnl argument 1 is name of function to check
572 dnl ASSUMES argument is a function with THREE parameters
574 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3
575 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
576 AC_MSG_CHECKING([for $1 declaration])
577 if test x${glibcpp_cv_func_$1_use+set} != xset; then
578 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
581 AC_TRY_COMPILE([#include <stdlib.h>],
583 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
587 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
588 if test x$glibcpp_cv_func_$1_use = x"yes"; then
594 dnl Because the builtins are picky picky picky about the arguments they take,
595 dnl do an explict linkage tests here.
596 dnl Check to see if the (math function) argument passed is
597 dnl 1) declared when using the c++ compiler
598 dnl 2) has "C" linkage
600 dnl Define HAVE_CARGF etc if "cargf" is declared and links
602 dnl argument 1 is name of function to check
604 dnl ASSUMES argument is a math function with ONE parameter
606 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
607 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
608 AC_MSG_CHECKING([for $1 declaration])
609 if test x${glibcpp_cv_func_$1_use+set} != xset; then
610 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
613 AC_TRY_COMPILE([#include <math.h>],
615 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
619 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
620 if test x$glibcpp_cv_func_$1_use = x"yes"; then
621 AC_MSG_CHECKING([for $1 linkage])
622 if test x${glibcpp_cv_func_$1_link+set} != xset; then
623 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
624 AC_TRY_LINK([#include <math.h>],
626 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
629 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
630 if test x$glibcpp_cv_func_$1_link = x"yes"; then
631 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
632 AC_DEFINE_UNQUOTED(${ac_tr_func})
639 dnl Check to see what builtin math functions are supported
641 dnl check for __builtin_abs
642 dnl check for __builtin_fabsf
643 dnl check for __builtin_fabs
644 dnl check for __builtin_fabl
645 dnl check for __builtin_labs
646 dnl check for __builtin_sqrtf
647 dnl check for __builtin_sqrtl
648 dnl check for __builtin_sqrt
649 dnl check for __builtin_sinf
650 dnl check for __builtin_sin
651 dnl check for __builtin_sinl
652 dnl check for __builtin_cosf
653 dnl check for __builtin_cos
654 dnl check for __builtin_cosl
656 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
657 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
658 dnl Test for builtin math functions.
659 dnl These are made in gcc/c-common.c
660 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
661 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
662 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
663 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
664 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
666 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
667 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
668 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
670 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
671 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
672 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
674 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
675 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
676 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
678 dnl There is, without a doubt, a more elegant way to have these
679 dnl names exported so that they won't be stripped out of acconfig.h by
680 dnl autoheader. I leave this as an exercise to somebody less frustrated
681 dnl than I.... please email the libstdc++ list if you can figure out a
682 dnl more elegant approach (see autoconf/acgen.m4 and specifically
683 dnl AC_CHECK_FUNC for things to steal.)
685 if test x$dummyvar = x"yes"; then
686 AC_DEFINE(HAVE___BUILTIN_ABS)
687 AC_DEFINE(HAVE___BUILTIN_LABS)
688 AC_DEFINE(HAVE___BUILTIN_COS)
689 AC_DEFINE(HAVE___BUILTIN_COSF)
690 AC_DEFINE(HAVE___BUILTIN_COSL)
691 AC_DEFINE(HAVE___BUILTIN_FABS)
692 AC_DEFINE(HAVE___BUILTIN_FABSF)
693 AC_DEFINE(HAVE___BUILTIN_FABSL)
694 AC_DEFINE(HAVE___BUILTIN_SIN)
695 AC_DEFINE(HAVE___BUILTIN_SINF)
696 AC_DEFINE(HAVE___BUILTIN_SINL)
697 AC_DEFINE(HAVE___BUILTIN_SQRT)
698 AC_DEFINE(HAVE___BUILTIN_SQRTF)
699 AC_DEFINE(HAVE___BUILTIN_SQRTL)
704 dnl Check to see what the underlying c library is like
705 dnl These checks need to do two things:
706 dnl 1) make sure the name is declared when using the c++ compiler
707 dnl 2) make sure the name has "C" linkage
708 dnl This might seem like overkill but experience has shown that it's not...
710 dnl Define HAVE_STRTOLD if "strtold" is declared and links
711 dnl Define HAVE_STRTOF if "strtof" is declared and links
712 dnl Define HAVE_DRAND48 if "drand48" is declared and links
714 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
715 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
716 ac_test_CXXFLAGS="${CXXFLAGS+set}"
717 ac_save_CXXFLAGS="$CXXFLAGS"
718 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
720 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
721 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
722 AC_CHECK_FUNCS(drand48)
724 CXXFLAGS="$ac_save_CXXFLAGS"
728 dnl Check to see what the underlying c library or math library is like.
729 dnl These checks need to do two things:
730 dnl 1) make sure the name is declared when using the c++ compiler
731 dnl 2) make sure the name has "C" linkage
732 dnl This might seem like overkill but experience has shown that it's not...
734 dnl Define HAVE_CARGF etc if "cargf" is found.
736 dnl GLIBCPP_CHECK_MATH_SUPPORT
737 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
738 ac_test_CXXFLAGS="${CXXFLAGS+set}"
739 ac_save_CXXFLAGS="$CXXFLAGS"
740 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
743 AC_CHECK_LIB(m, sin, libm="-lm")
747 dnl Check to see if certain C math functions exist.
748 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
749 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
750 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
751 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
752 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
753 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
754 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
755 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
757 dnl Check to see if basic C math functions have float versions.
758 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
763 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
766 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
767 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
768 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
769 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
770 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
771 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
772 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
773 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
774 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
775 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
776 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
777 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
778 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
779 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
780 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
781 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
783 dnl Check to see if basic C math functions have long double versions.
784 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
789 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
792 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
793 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
794 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
795 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
796 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
797 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
798 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
799 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
800 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
801 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
802 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
803 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
804 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
805 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
806 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
807 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
808 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
810 dnl Some runtimes have these functions with a preceding underscore. Please
811 dnl keep this sync'd with the one above. And if you add any new symbol,
812 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
813 dnl Check to see if certain C math functions exist.
815 dnl Check to see if basic C math functions have float versions.
816 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
818 _acosf _asinf _atanf \
820 _coshf _sinhf _tanhf)
821 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
825 dnl Check to see if basic C math functions have long double versions.
826 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
828 _acosl _asinl _atanl \
830 _coshl _sinhl _tanhl)
831 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
836 CXXFLAGS="$ac_save_CXXFLAGS"
841 dnl Check to see if there is native support for complex
843 dnl Don't compile bits in math/* if native support exits.
845 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
847 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
848 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
849 dnl Check for complex versions of math functions of platform.
850 AC_CHECK_LIB(m, main)
851 AC_REPLACE_MATHFUNCS(nan copysignf)
853 dnl For __signbit to signbit conversions.
854 AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
855 AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
857 dnl Compile the long double complex functions only if the function
858 dnl provides the non-complex long double functions that are needed.
859 dnl Currently this includes copysignl, which should be
860 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
861 if test x$ac_cv_func_copysignl = x"yes"; then
862 AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
865 if test -n "$LIBMATHOBJS"; then
868 AC_SUBST(LIBMATHOBJS)
869 AM_CONDITIONAL(GLIBCPP_BUILD_LIBMATH, test "$need_libmath" = yes)
873 dnl Check to see what architecture and operating system we are compiling
874 dnl for. Also, if architecture- or OS-specific flags are required for
875 dnl compilation, pick them up here.
877 dnl GLIBCPP_CHECK_TARGET
878 AC_DEFUN(GLIBCPP_CHECK_TARGET, [
879 . [$]{glibcpp_basedir}/configure.target
880 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
881 AC_MSG_RESULT(OS config directory is $os_include_dir)
886 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
887 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
888 dnl must have been previously checked.)
890 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
891 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
893 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
894 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
895 dnl Wide characters disabled by default.
898 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
899 dnl others even if wchar_t support is not on.
900 AC_MSG_CHECKING([for mbstate_t])
901 AC_TRY_COMPILE([#include <wchar.h>],
902 [mbstate_t teststate;],
903 have_mbstate_t=yes, have_mbstate_t=no)
904 AC_MSG_RESULT($have_mbstate_t)
905 if test x"$have_mbstate_t" = xyes; then
906 AC_DEFINE(HAVE_MBSTATE_T)
909 dnl Sanity check for existence of ISO C99 headers for extended encoding.
910 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
911 AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
913 dnl Only continue checking if the ISO C99 headers exist and support is on.
914 if test x"$ac_has_wchar_h" = xyes &&
915 test x"$ac_has_wctype_h" = xyes &&
916 test x"$enable_c_mbchar" != xno; then
918 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
919 dnl numeric_limits can instantiate type_traits<wchar_t>
920 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
921 AC_TRY_COMPILE([#include <wchar.h>],
922 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
923 has_wchar_minmax=yes, has_wchar_minmax=no)
924 AC_MSG_RESULT($has_wchar_minmax)
926 dnl Test wchar.h for WEOF, which is what we use to determine whether
927 dnl to specialize for char_traits<wchar_t> or not.
928 AC_MSG_CHECKING([for WEOF])
931 #include <stddef.h>],
933 has_weof=yes, has_weof=no)
934 AC_MSG_RESULT($has_weof)
936 dnl Tests for wide character functions used in char_traits<wchar_t>.
938 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
941 dnl Checks for names injected into std:: by the c_std headers.
942 AC_CHECK_FUNCS(btowc wctob fgetwc fgetws fputwc fputws fwide \
943 fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
944 vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
945 mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
946 wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
947 wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
950 AC_MSG_CHECKING([for ISO C99 wchar_t support])
951 if test x"$has_weof" = xyes &&
952 test x"$has_wchar_minmax" = xyes &&
953 test x"$ac_wfuncs" = xyes; then
954 ac_isoC99_wchar_t=yes
958 AC_MSG_RESULT($ac_isoC99_wchar_t)
960 dnl Use iconv for wchar_t to char conversions. As such, check for
961 dnl X/Open Portability Guide, version 2 features (XPG2).
962 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
963 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
965 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
966 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
968 LIBS="$LIBS $libiconv"
970 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
971 ac_XPG2funcs=yes, ac_XPG2funcs=no)
975 AC_MSG_CHECKING([for XPG2 wchar_t support])
976 if test x"$ac_has_iconv_h" = xyes &&
977 test x"$ac_has_langinfo_h" = xyes &&
978 test x"$ac_XPG2funcs" = xyes; then
983 AC_MSG_RESULT($ac_XPG2_wchar_t)
985 dnl At the moment, only enable wchar_t specializations if all the
986 dnl above support is present.
987 if test x"$ac_isoC99_wchar_t" = xyes &&
988 test x"$ac_XPG2_wchar_t" = xyes; then
989 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
993 AC_MSG_CHECKING([for enabled wchar_t specializations])
994 AC_MSG_RESULT($enable_wchar_t)
995 AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)
1000 dnl Check to see if debugging libraries are to be built.
1002 dnl GLIBCPP_ENABLE_DEBUG
1005 dnl builds a separate set of debugging libraries in addition to the
1006 dnl normal (shared, static) libstdc++ binaries.
1009 dnl builds only one (non-debug) version of libstdc++.
1011 dnl --enable-debug-flags=FLAGS
1012 dnl iff --enable-debug == yes, then use FLAGS to build the debug library.
1014 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1015 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1016 dnl defaults to `no'.
1017 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1018 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1019 AC_ARG_ENABLE(debug,
1020 changequote(<<, >>)dnl
1021 << --enable-debug build extra debug library [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1022 changequote([, ])dnl
1023 [case "${enableval}" in
1024 yes) enable_debug=yes ;;
1025 no) enable_debug=no ;;
1026 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1028 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
1029 AC_MSG_CHECKING([for additional debug build])
1030 AC_MSG_RESULT($enable_debug)
1031 AM_CONDITIONAL(GLIBCPP_BUILD_DEBUG, test "$enable_debug" = yes)
1035 dnl Check for explicit debug flags.
1037 dnl GLIBCPP_ENABLE_DEBUG_FLAGS
1039 dnl --enable-debug-flags='-O1'
1040 dnl is a general method for passing flags to be used when
1041 dnl building debug libraries with --enable-debug.
1043 dnl --disable-debug-flags does nothing.
1044 dnl + Usage: GLIBCPP_ENABLE_DEBUG_FLAGS(default flags)
1045 dnl If "default flags" is an empty string (or "none"), the effect is
1046 dnl the same as --disable or --enable=no.
1047 AC_DEFUN(GLIBCPP_ENABLE_DEBUG_FLAGS, [dnl
1048 define([GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1049 AC_ARG_ENABLE(debug_flags,
1050 changequote(<<, >>)dnl
1051 << --enable-debug-flags=FLAGS pass compiler FLAGS when building debug
1052 library;[default=>>GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT],
1053 changequote([, ])dnl
1054 [case "${enableval}" in
1056 -*) enable_debug_flags="${enableval}" ;;
1057 *) AC_MSG_ERROR([Unknown argument to extra debugging flags]) ;;
1059 enable_debug_flags=GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT)dnl
1061 dnl Option parsed, now set things appropriately
1062 case x"$enable_debug" in
1064 case "$enable_debug_flags" in
1066 DEBUG_FLAGS="-g3 -O0";;
1068 DEBUG_FLAGS="${enableval}"
1075 AC_SUBST(DEBUG_FLAGS)
1077 AC_MSG_CHECKING([for debug build flags])
1078 AC_MSG_RESULT($DEBUG_FLAGS)
1083 dnl Check for "unusual" flags to pass to the compiler while building.
1085 dnl GLIBCPP_ENABLE_CXX_FLAGS
1086 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1087 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1088 dnl Somehow this same set of flags must be passed when [re]building
1090 dnl --disable-cxx-flags passes nothing.
1091 dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
1092 dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
1093 dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
1094 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
1095 dnl If "default flags" is an empty string (or "none"), the effect is
1096 dnl the same as --disable or --enable=no.
1097 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1098 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1099 AC_MSG_CHECKING([for extra compiler flags for building])
1100 AC_ARG_ENABLE(cxx_flags,
1101 changequote(<<, >>)dnl
1102 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
1103 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1104 changequote([, ])dnl
1105 [case "x$enable_cxx_flags" in
1107 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1109 enable_cxx_flags='' ;;
1111 enable_cxx_flags="$enableval" ;;
1113 enable_cxx_flags=GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT)
1115 dnl Run through flags (either default or command-line) and set anything
1116 dnl extra (e.g., #defines) that must accompany particular g++ options.
1117 if test -n "$enable_cxx_flags"; then
1118 for f in $enable_cxx_flags; do
1122 *) # and we're trying to pass /what/ exactly?
1123 AC_MSG_ERROR([compiler flags start with a -]) ;;
1127 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1128 AC_MSG_RESULT($EXTRA_CXX_FLAGS)
1129 AC_SUBST(EXTRA_CXX_FLAGS)
1134 dnl Check for which locale library to use: gnu or generic.
1136 dnl GLIBCPP_ENABLE_CLOCALE
1137 dnl --enable-clocale=gnu sets config/locale/c_locale_gnu.cc and friends
1138 dnl --enable-clocale=generic sets config/locale/c_locale_generic.cc and friends
1140 dnl default is generic
1142 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1143 AC_MSG_CHECKING([for clocale to use])
1144 AC_ARG_ENABLE(clocale,
1145 [ --enable-clocale enable model for target locale package.
1146 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
1148 if test x$enable_clocale = xno; then
1153 enable_clocale_flag=$enable_clocale
1155 dnl Probe for locale support if no specific model is specified.
1156 dnl Default to "generic"
1157 if test x$enable_clocale_flag = xno; then
1158 case x${target_os} in
1160 AC_EGREP_CPP([_GLIBCPP_ok], [
1161 #include <features.h>
1162 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1165 ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
1167 # Test for bugs early in glibc-2.2.x series
1168 if test x$enable_clocale_flag = xgnu; then
1170 #define _GNU_SOURCE 1
1173 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
1174 extern __typeof(newlocale) __newlocale;
1175 extern __typeof(duplocale) __duplocale;
1176 extern __typeof(strcoll_l) __strcoll_l;
1180 const char __one[] = "Äuglein Augmen";
1181 const char __two[] = "Äuglein";
1186 loc = __newlocale(1 << LC_ALL, "de_DE", 0);
1187 loc_dup = __duplocale(loc);
1188 i = __strcoll_l(__one, __two, loc);
1189 j = __strcoll_l(__one, __two, loc_dup);
1193 [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
1194 [enable_clocale_flag=generic])
1197 # ... at some point put __strxfrm_l tests in as well.
1200 enable_clocale_flag=generic
1205 dnl Deal with gettext issues.
1207 [ --enable-nls use Native Language Support (default)],
1211 dnl Set configure bits for specified locale package
1212 case x${enable_clocale_flag} in
1214 AC_MSG_RESULT(generic)
1216 CLOCALE_H=config/locale/generic/c_locale.h
1217 CLOCALE_CC=config/locale/generic/c_locale.cc
1218 CCODECVT_H=config/locale/generic/codecvt_specializations.h
1219 CCODECVT_CC=config/locale/generic/codecvt_members.cc
1220 CCOLLATE_CC=config/locale/generic/collate_members.cc
1221 CCTYPE_CC=config/locale/generic/ctype_members.cc
1222 CMESSAGES_H=config/locale/generic/messages_members.h
1223 CMESSAGES_CC=config/locale/generic/messages_members.cc
1224 CMONEY_CC=config/locale/generic/monetary_members.cc
1225 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1226 CTIME_H=config/locale/generic/time_members.h
1227 CTIME_CC=config/locale/generic/time_members.cc
1228 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1233 # Declare intention to use gettext, and add support for specific
1235 # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
1238 # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
1239 AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
1240 if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
1243 # Export the build objects.
1244 for ling in $ALL_LINGUAS; do \
1245 glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \
1246 glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \
1248 AC_SUBST(glibcpp_MOFILES)
1249 AC_SUBST(glibcpp_POFILES)
1251 CLOCALE_H=config/locale/gnu/c_locale.h
1252 CLOCALE_CC=config/locale/gnu/c_locale.cc
1253 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1254 CCODECVT_CC=config/locale/gnu/codecvt_members.cc
1255 CCOLLATE_CC=config/locale/gnu/collate_members.cc
1256 CCTYPE_CC=config/locale/gnu/ctype_members.cc
1257 CMESSAGES_H=config/locale/gnu/messages_members.h
1258 CMESSAGES_CC=config/locale/gnu/messages_members.cc
1259 CMONEY_CC=config/locale/gnu/monetary_members.cc
1260 CNUMERIC_CC=config/locale/gnu/numeric_members.cc
1261 CTIME_H=config/locale/gnu/time_members.h
1262 CTIME_CC=config/locale/gnu/time_members.cc
1263 CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
1266 AC_MSG_RESULT(generic)
1268 CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
1269 CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
1270 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1271 CCODECVT_CC=config/locale/generic/codecvt_members.cc
1272 CCOLLATE_CC=config/locale/generic/collate_members.cc
1273 CCTYPE_CC=config/locale/generic/ctype_members.cc
1274 CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
1275 CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
1276 CMONEY_CC=config/locale/generic/monetary_members.cc
1277 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1278 CTIME_H=config/locale/generic/time_members.h
1279 CTIME_CC=config/locale/generic/time_members.cc
1280 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1283 echo "$enable_clocale is an unknown locale package" 1>&2
1288 # This is where the testsuite looks for locale catalogs, using the
1289 # -DLOCALEDIR define during testsuite compilation.
1290 glibcpp_localedir=${glibcpp_builddir}/po/share/locale
1291 AC_SUBST(glibcpp_localedir)
1295 AC_SUBST(CCODECVT_H)
1296 AC_SUBST(CMESSAGES_H)
1297 AC_SUBST(CCODECVT_CC)
1298 AC_SUBST(CCOLLATE_CC)
1300 AC_SUBST(CMESSAGES_CC)
1302 AC_SUBST(CNUMERIC_CC)
1305 AC_SUBST(CLOCALE_CC)
1306 AC_SUBST(CLOCALE_INTERNAL_H)
1311 dnl Check for which I/O library to use: libio, or something specific.
1313 dnl GLIBCPP_ENABLE_CSTDIO
1314 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1316 dnl default is stdio
1318 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1319 AC_MSG_CHECKING([for cstdio to use])
1320 AC_ARG_ENABLE(cstdio,
1321 [ --enable-cstdio enable stdio for target io package.
1322 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1324 if test x$enable_cstdio = xno; then
1327 enable_cstdio=stdio)
1329 enable_cstdio_flag=$enable_cstdio
1331 dnl Check if a valid I/O package
1332 case x${enable_cstdio_flag} in
1334 CSTDIO_H=config/io/c_io_libio.h
1335 BASIC_FILE_H=config/io/basic_file_libio.h
1336 BASIC_FILE_CC=config/io/basic_file_libio.cc
1337 AC_MSG_RESULT(libio)
1339 # see if we are on a system with libio native (ie, linux)
1340 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1342 # Need to check and see what version of glibc is being used. If
1343 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1344 # compile most of libio for linux systems.
1345 if test x$has_libio = x"yes"; then
1348 AC_MSG_CHECKING([for glibc version >= 2.2])
1349 AC_EGREP_CPP([ok], [
1350 #include <features.h>
1351 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1354 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1355 AC_MSG_RESULT($glibc_satisfactory)
1359 # XXX at the moment, admit defeat and force the recompilation
1360 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1361 glibc_satisfactory=no
1363 if test x$glibc_satisfactory = x"yes"; then
1368 # bkoz XXX need to add checks to enable this
1369 # pme XXX here's a first pass at such a check
1370 if test x$enable_c_mbchar != xno; then
1378 # Using libio, but <libio.h> doesn't exist on the target system. . .
1380 # bkoz XXX need to add checks to enable this
1381 # pme XXX here's a first pass at such a check
1382 if test x$enable_c_mbchar != xno; then
1389 xstdio | x | xno | xnone | xyes)
1391 CSTDIO_H=config/io/c_io_stdio.h
1392 BASIC_FILE_H=config/io/basic_file_stdio.h
1393 BASIC_FILE_CC=config/io/basic_file_stdio.cc
1394 AC_MSG_RESULT(stdio)
1396 # We're not using stdio.
1401 echo "$enable_cstdio is an unknown io package" 1>&2
1406 AC_SUBST(BASIC_FILE_H)
1407 AC_SUBST(BASIC_FILE_CC)
1409 # 2000-08-04 bkoz hack
1410 CCODECVT_C=config/io/c_io_libio_codecvt.c
1411 AC_SUBST(CCODECVT_C)
1412 # 2000-08-04 bkoz hack
1414 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1415 test "$need_libio" = yes || test "$need_wlibio" = yes)
1416 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1417 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1418 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1419 libio_la=../libio/libio.la
1428 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1429 dnl We must stage the required headers so that they will be installed
1430 dnl with the library (unlike libgcc, the STL implementation is provided
1431 dnl solely within headers). Since we must not inject random user-space
1432 dnl macro names into user-provided C++ code, we first stage into <file>-in
1433 dnl and process to <file> with an output command. The reason for a two-
1434 dnl stage process here is to correctly handle $srcdir!=$objdir without
1435 dnl having to write complex code (the sed commands to clean the macro
1436 dnl namespace are complex and fragile enough as it is). We must also
1437 dnl add a relative path so that -I- is supported properly.
1439 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1440 AC_MSG_CHECKING([for thread model used by GCC])
1441 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1442 AC_MSG_RESULT([$target_thread_file])
1444 if test $target_thread_file != single; then
1445 AC_DEFINE(HAVE_GTHR_DEFAULT)
1446 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1449 glibcpp_thread_h=gthr-$target_thread_file.h
1450 AC_SUBST(glibcpp_thread_h)
1455 dnl Check for exception handling support. If an explicit enable/disable
1456 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1457 dnl target may or may not support call frame exceptions.
1459 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1460 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1461 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1463 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1465 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1466 AC_MSG_CHECKING([for exception model to use])
1469 AC_ARG_ENABLE(sjlj-exceptions,
1470 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1472 [dnl Botheration. Now we've got to detect the exception model.
1473 dnl Link tests against libgcc.a are problematic since -- at least
1474 dnl as of this writing -- we've not been given proper -L bits for
1475 dnl single-tree newlib and libgloss.
1477 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1478 dnl conftest files before we got a change to grep them first.
1479 cat > conftest.$ac_ext << EOF
1480 [#]line __oline__ "configure"
1489 old_CXXFLAGS="$CXXFLAGS"
1491 if AC_TRY_EVAL(ac_compile); then
1492 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1493 enable_sjlj_exceptions=yes
1494 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1495 enable_sjlj_exceptions=no
1498 CXXFLAGS="$old_CXXFLAGS"
1500 if test x$enable_sjlj_exceptions = xyes; then
1501 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1502 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1503 ac_exception_model_name=sjlj
1504 elif test x$enable_sjlj_exceptions = xno; then
1505 ac_exception_model_name="call frame"
1507 AC_MSG_ERROR([unable to detect exception model])
1510 AC_MSG_RESULT($ac_exception_model_name)
1515 dnl Check for libunwind exception handling support. If enabled then
1516 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1517 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1518 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1519 dnl on libunwind as well as libgcc.
1521 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1522 dnl --enable-libunwind-exceptions forces the use of libunwind.
1523 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1525 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1527 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1528 AC_MSG_CHECKING([for use of libunwind])
1529 AC_ARG_ENABLE(libunwind-exceptions,
1530 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1531 use_libunwind_exceptions=$enableval,
1532 use_libunwind_exceptions=no)
1533 AC_MSG_RESULT($use_libunwind_exceptions)
1534 dnl Option parsed, now set things appropriately
1535 if test x"$use_libunwind_exceptions" = xyes; then
1536 LIBUNWIND_FLAG="-lunwind"
1540 AC_SUBST(LIBUNWIND_FLAG)
1544 dnl Check for ISO/IEC 9899:1999 "C99" support.
1546 dnl GLIBCPP_ENABLE_C99
1547 dnl --enable-c99 defines _GLIBCPP_USE_C99
1548 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1549 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1550 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1551 dnl defaults to `no'.
1552 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1554 dnl GLIBCPP_ENABLE_C99
1555 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1556 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1559 changequote(<<, >>)dnl
1560 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1561 changequote([, ])dnl
1562 [case "$enableval" in
1563 yes) enable_c99=yes ;;
1564 no) enable_c99=no ;;
1565 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1567 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1572 # Check for the existence of <math.h> functions used if C99 is enabled.
1574 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1575 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1576 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1577 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1578 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1579 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1580 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1581 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1582 AC_TRY_COMPILE([#include <math.h>],
1583 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1584 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1585 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1586 AC_TRY_COMPILE([#include <math.h>],
1587 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1588 AC_TRY_COMPILE([#include <math.h>],
1589 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1590 AC_MSG_RESULT($ac_c99_math)
1592 # Check for the existence in <stdio.h> of vscanf, et. al.
1594 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1595 AC_TRY_COMPILE([#include <stdio.h>],
1596 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1597 AC_TRY_COMPILE([#include <stdio.h>
1599 void foo(char* fmt, ...)
1600 {va_list args; va_start(args, fmt);
1601 vfscanf(stderr, "%i", args);}],
1602 [],, [ac_c99_stdio=no])
1603 AC_TRY_COMPILE([#include <stdio.h>
1605 void foo(char* fmt, ...)
1606 {va_list args; va_start(args, fmt);
1607 vscanf("%i", args);}],
1608 [],, [ac_c99_stdio=no])
1609 AC_TRY_COMPILE([#include <stdio.h>
1611 void foo(char* fmt, ...)
1612 {va_list args; va_start(args, fmt);
1613 vsnprintf(fmt, 0, "%i", args);}],
1614 [],, [ac_c99_stdio=no])
1615 AC_TRY_COMPILE([#include <stdio.h>
1617 void foo(char* fmt, ...)
1618 {va_list args; va_start(args, fmt);
1619 vsscanf(fmt, "%i", args);}],
1620 [],, [ac_c99_stdio=no])
1621 AC_MSG_RESULT($ac_c99_stdio)
1623 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1625 AC_MSG_CHECKING([for lldiv_t declaration])
1626 AC_CACHE_VAL(ac_c99_lldiv_t, [
1627 AC_TRY_COMPILE([#include <stdlib.h>],
1629 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1631 AC_MSG_RESULT($ac_c99_lldiv_t)
1633 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1634 AC_TRY_COMPILE([#include <stdlib.h>],
1635 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1636 AC_TRY_COMPILE([#include <stdlib.h>],
1637 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1638 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1639 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1640 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1641 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1642 if test x"$ac_c99_lldiv_t" = x"no"; then
1645 AC_MSG_RESULT($ac_c99_stdlib)
1647 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1648 # XXX the wchar.h checks should be rolled into the general C99 bits.
1650 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1651 AC_TRY_COMPILE([#include <wchar.h>],
1652 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1653 AC_TRY_COMPILE([#include <wchar.h>],
1654 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1655 AC_TRY_COMPILE([#include <wchar.h>],
1656 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1657 AC_MSG_RESULT($ac_c99_wchar)
1659 AC_MSG_CHECKING([for enabled ISO C99 support])
1660 if test x"$ac_c99_math" = x"no" ||
1661 test x"$ac_c99_stdio" = x"no" ||
1662 test x"$ac_c99_stdlib" = x"no" ||
1663 test x"$ac_c99_wchar" = x"no"; then
1666 AC_MSG_RESULT($enable_c99)
1668 # Option parsed, now set things appropriately
1669 if test x"$enable_c99" = x"yes"; then
1670 AC_DEFINE(_GLIBCPP_USE_C99)
1678 dnl Check for template specializations for the 'long long' type extension.
1679 dnl The result determines only whether 'long long' I/O is enabled; things
1680 dnl like numeric_limits<> specializations are always available.
1682 dnl GLIBCPP_ENABLE_LONG_LONG
1683 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1684 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1685 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1686 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1687 dnl defaults to `no'.
1688 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1690 dnl GLIBCPP_ENABLE_LONG_LONG
1691 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1692 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1694 AC_ARG_ENABLE(long-long,
1695 changequote(<<, >>)dnl
1696 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1697 changequote([, ])dnl
1698 [case "$enableval" in
1699 yes) enable_long_long=yes ;;
1700 no) enable_long_long=no ;;
1701 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1703 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1708 AC_MSG_CHECKING([for enabled long long I/O support])
1709 # iostreams require strtoll, strtoull to compile
1710 AC_TRY_COMPILE([#include <stdlib.h>],
1711 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1712 AC_TRY_COMPILE([#include <stdlib.h>],
1713 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1715 # Option parsed, now set things appropriately
1716 if test x"$enable_long_long" = xyes; then
1717 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1719 AC_MSG_RESULT($enable_long_long)
1726 dnl Check for what type of C headers to use.
1728 dnl GLIBCPP_ENABLE_CHEADERS
1729 dnl --enable-cheaders= [does stuff].
1730 dnl --disable-cheaders [does not do anything, really].
1731 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1732 dnl Where DEFAULT is either `c' or `c_std'.
1733 dnl If ommitted, it defaults to `c_std'.
1734 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1735 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1736 AC_MSG_CHECKING([for c header strategy to use])
1737 AC_ARG_ENABLE(cheaders,
1738 changequote(<<, >>)dnl
1739 << --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1741 [case "$enableval" in
1746 enable_cheaders=c_std
1748 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1751 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1752 AC_MSG_RESULT($enable_cheaders)
1754 dnl Option parsed, now set things appropriately
1755 case "$enable_cheaders" in
1757 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1760 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1764 AC_SUBST(C_INCLUDE_DIR)
1765 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1766 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1767 AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1772 dnl Check for wide character support. Has the same effect as the option
1773 dnl in gcc's configure, but in a form that autoconf can mess with.
1775 dnl GLIBCPP_ENABLE_C_MBCHAR
1776 dnl --enable-c-mbchar requests all the wchar_t stuff.
1777 dnl --disable-c-mbchar doesn't.
1778 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1779 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1780 dnl defaults to `no'.
1781 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1782 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1783 AC_ARG_ENABLE(c-mbchar,
1784 changequote(<<, >>)dnl
1785 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1786 changequote([, ])dnl
1787 [case "$enableval" in
1788 yes) enable_c_mbchar=yes ;;
1789 no) enable_c_mbchar=no ;;
1790 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1792 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1793 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1798 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1800 dnl TOPLEVEL_INCLUDES
1801 dnl LIBMATH_INCLUDES
1802 dnl LIBSUPCXX_INCLUDES
1805 dnl GLIBCPP_EXPORT_INCLUDES
1806 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1807 # Root level of the build directory include sources.
1808 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1810 # Passed down for canadian crosses.
1811 if test x"$CANADIAN" = xyes; then
1812 TOPLEVEL_INCLUDES='-I$(includedir)'
1815 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1817 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1819 if test x"$need_libio" = xyes; then
1820 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1821 AC_SUBST(LIBIO_INCLUDES)
1824 # Now, export this to all the little Makefiles....
1825 AC_SUBST(GLIBCPP_INCLUDES)
1826 AC_SUBST(TOPLEVEL_INCLUDES)
1827 AC_SUBST(LIBMATH_INCLUDES)
1828 AC_SUBST(LIBSUPCXX_INCLUDES)
1833 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1835 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1836 # Optimization flags that are probably a good idea for thrill-seekers. Just
1837 # uncomment the lines below and make, everything else is ready to go...
1838 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1840 AC_SUBST(OPTIMIZE_CXXFLAGS)
1842 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1843 AC_SUBST(WARN_FLAGS)
1847 dnl GLIBCPP_EXPORT_INSTALL_INFO
1848 dnl calculates gxx_install_dir
1849 dnl exports glibcpp_toolexecdir
1850 dnl exports glibcpp_toolexeclibdir
1851 dnl exports glibcpp_prefixdir
1853 dnl Assumes cross_compiling bits already done, and with_cross_host in
1856 dnl GLIBCPP_EXPORT_INSTALL_INFO
1857 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1858 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1859 # exported correctly in GLIBCPP_CONFIGURE.
1860 glibcpp_toolexecdir=no
1861 glibcpp_toolexeclibdir=no
1862 glibcpp_prefixdir=${prefix}
1864 # Process the option --with-gxx-include-dir=<path to include-files directory>
1865 AC_MSG_CHECKING([for --with-gxx-include-dir])
1866 AC_ARG_WITH(gxx-include-dir,
1867 [ --with-gxx-include-dir the installation directory for include files],
1868 [case "${withval}" in
1870 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1877 gxx_include_dir=${withval}
1879 esac], [gxx_include_dir=no])
1880 AC_MSG_RESULT($gxx_include_dir)
1882 # Process the option "--enable-version-specific-runtime-libs"
1883 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1884 AC_ARG_ENABLE(version-specific-runtime-libs,
1885 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1886 [case "$enableval" in
1887 yes) version_specific_libs=yes ;;
1888 no) version_specific_libs=no ;;
1889 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1891 version_specific_libs=no)dnl
1892 # Option set, now we can test it.
1893 AC_MSG_RESULT($version_specific_libs)
1895 # Default case for install directory for include files.
1896 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1897 gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1900 # Version-specific runtime libs processing.
1901 if test $version_specific_libs = yes; then
1902 # Need the gcc compiler version to know where to install libraries
1903 # and header files if --enable-version-specific-runtime-libs option
1905 if test x"$gxx_include_dir" = x"no"; then
1906 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1908 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1909 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1912 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1913 # Install a library built with a cross compiler in tooldir, not libdir.
1914 if test x"$glibcpp_toolexecdir" = x"no"; then
1915 if test -n "$with_cross_host" &&
1916 test x"$with_cross_host" != x"no"; then
1917 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1918 glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1920 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1921 glibcpp_toolexeclibdir='$(libdir)'
1923 multi_os_directory=`$CC -print-multi-os-directory`
1924 case $multi_os_directory in
1925 .) ;; # Avoid trailing /.
1926 *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1930 AC_MSG_CHECKING([for install location])
1931 AC_MSG_RESULT($gxx_include_dir)
1933 AC_SUBST(glibcpp_prefixdir)
1934 AC_SUBST(gxx_include_dir)
1935 AC_SUBST(glibcpp_toolexecdir)
1936 AC_SUBST(glibcpp_toolexeclibdir)
1940 # Check for functions in math library.
1941 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1943 # This file can be copied and used freely without restrictions. It can
1944 # be used in projects which are not available under the GNU Public License
1945 # but which still want to provide support for the GNU gettext functionality.
1946 # Please note that the actual code is *not* freely available.
1950 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1951 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1952 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
1955 dnl This macro searches for a GNU version of make. If a match is found, the
1956 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1957 dnl set to "#". This is useful for including a special features in a Makefile,
1958 dnl which cannot be handled by other versions of make. The variable
1959 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1960 dnl the empty string otherwise.
1962 dnl Here is an example of its use:
1964 dnl Makefile.in might contain:
1966 dnl # A failsafe way of putting a dependency rule into a makefile
1968 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1970 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1971 dnl @ifGNUmake@ include $(DEPEND)
1972 dnl @ifGNUmake@ endif
1974 dnl Then configure.in would normally contain:
1976 dnl CHECK_GNU_MAKE()
1977 dnl AC_OUTPUT(Makefile)
1979 dnl Then perhaps to cause gnu make to override any other make, we could do
1980 dnl something like this (note that GNU make always looks for GNUmakefile first):
1982 dnl if ! test x$_cv_gnu_make_command = x ; then
1983 dnl mv Makefile GNUmakefile
1984 dnl echo .DEFAULT: > Makefile ;
1985 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1988 dnl Then, if any (well almost any) other make is called, and GNU make also
1989 dnl exists, then the other make wraps the GNU make.
1991 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
1992 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
1994 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1995 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
1996 dnl #### conditional's subshell (" --version" is not a command), using a
1997 dnl #### different option to grep(1).
1999 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2000 dnl #### ${MAKE:-make}).
2003 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2004 _cv_gnu_make_command='' ;
2005 dnl Search all the common names for GNU make
2006 for a in "${MAKE-make}" make gmake gnumake ; do
2007 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2009 _cv_gnu_make_command=$a ;
2014 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2015 dnl string, '#' otherwise
2016 if test "x$_cv_gnu_make_command" != "x" ; then
2025 dnl Check for headers for, and arguments to, the setrlimit() function.
2026 dnl Used only in testsuite_hooks.h.
2027 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2028 AC_TRY_COMPILE([#include <unistd.h>
2029 #include <sys/time.h>
2030 #include <sys/resource.h>
2031 ], [ int f = RLIMIT_$1 ; ],
2032 [glibcpp_mresult=1], [glibcpp_mresult=0])
2033 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2034 [Only used in build directory testsuite_hooks.h.])
2036 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2037 setrlimit_have_headers=yes
2038 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2040 setrlimit_have_headers=no)
2041 # If don't have the headers, then we can't run the tests now, and we
2042 # won't be seeing any of these during testsuite compilation.
2043 if test $setrlimit_have_headers = yes; then
2044 # Can't do these in a loop, else the resulting syntax is wrong.
2045 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2046 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2047 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2048 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2050 # Check for rlimit, setrlimit.
2051 AC_CACHE_VAL(ac_setrlimit, [
2052 AC_TRY_COMPILE([#include <unistd.h>
2053 #include <sys/time.h>
2054 #include <sys/resource.h>
2056 [ struct rlimit r; setrlimit(0, &r);],
2057 [ac_setrlimit=yes], [ac_setrlimit=no])
2061 AC_MSG_CHECKING([for testsuite memory limit support])
2062 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2064 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2068 AC_MSG_RESULT($ac_mem_limits)
2073 dnl Does any necessary configuration of the testsuite directory. Generates
2074 dnl the testsuite_hooks.h header.
2076 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2077 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2078 GLIBCPP_CHECK_SETRLIMIT
2080 # Look for setenv, so that extended locale tests can be performed.
2081 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2083 # Export file names for ABI checking.
2084 baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2085 AC_SUBST(baseline_file)
2088 *-*-cygwin* ) enable_abi_check=no ;;
2089 * ) enable_abi_check=yes ;;
2092 # Don't do ABI checking unless native.
2093 AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2094 test x"$build" = x"$host" && test -z "$with_cross_host" \
2095 && test "$enable_abi_check" = yes )
2099 sinclude(../libtool.m4)
2100 dnl The lines below arrange for aclocal not to bring an installed
2101 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2102 dnl add a definition of LIBTOOL to Makefile.in.
2103 ifelse(,,,[AC_SUBST(LIBTOOL)
2104 AC_DEFUN([AM_PROG_LIBTOOL])
2105 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2106 AC_DEFUN([AC_PROG_LD])
2110 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2113 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2114 AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2115 AC_TRY_LINK([#include <sys/stat.h>],
2116 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2117 [glibcpp_cv_S_ISREG=yes],
2118 [glibcpp_cv_S_ISREG=no])
2120 AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2121 AC_TRY_LINK([#include <sys/stat.h>],
2122 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2123 [glibcpp_cv_S_IFREG=yes],
2124 [glibcpp_cv_S_IFREG=no])
2126 if test x$glibcpp_cv_S_ISREG = xyes; then
2127 AC_DEFINE(HAVE_S_ISREG)
2128 elif test x$glibcpp_cv_S_IFREG = xyes; then
2129 AC_DEFINE(HAVE_S_IFREG)
2134 dnl Check whether poll is available in <poll.h>.
2137 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2138 AC_CACHE_VAL(glibcpp_cv_POLL, [
2139 AC_TRY_COMPILE([#include <poll.h>],
2140 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2141 [glibcpp_cv_POLL=yes],
2142 [glibcpp_cv_POLL=no])
2144 if test x$glibcpp_cv_POLL = xyes; then
2145 AC_DEFINE(HAVE_POLL)
2149 # Check whether LC_MESSAGES is available in <locale.h>.
2150 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2152 # This file file be copied and used freely without restrictions. It can
2153 # be used in projects which are not available under the GNU Public License
2154 # but which still want to provide support for the GNU gettext functionality.
2155 # Please note that the actual code is *not* freely available.
2159 AC_DEFUN(AC_LC_MESSAGES, [
2160 AC_CHECK_HEADER(locale.h, [
2161 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2162 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2163 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2164 if test $ac_cv_val_LC_MESSAGES = yes; then
2165 AC_DEFINE(HAVE_LC_MESSAGES)
2172 dnl Check for whether the Boost-derived checks should be turned on.
2174 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2175 dnl --enable-concept-checks turns them on.
2176 dnl --disable-concept-checks leaves them off.
2177 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2178 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2179 dnl defaults to `no'.
2180 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2181 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2182 AC_ARG_ENABLE(concept-checks,
2183 changequote(<<, >>)dnl
2184 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2185 changequote([, ])dnl
2186 [case "$enableval" in
2187 yes) enable_concept_checks=yes ;;
2188 no) enable_concept_checks=no ;;
2189 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2191 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2192 dnl Option parsed, now set things appropriately
2193 if test x"$enable_concept_checks" = xyes; then
2194 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2200 dnl Add version tags to symbols in shared library (or not), additionally
2201 dnl marking other symbols as private/local (or not).
2203 dnl GLIBCPP_ENABLE_SYMVERS
2204 dnl --enable-symvers=style adds a version script to the linker call when
2205 dnl creating the shared library. The choice of version script is
2206 dnl controlled by 'style'.
2207 dnl --disable-symvers does not.
2208 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2209 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2210 dnl defaults to `no'. Passing `yes' tries to choose a default style
2211 dnl based on linker characteristics. Passing 'no' disables versioning.
2212 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2213 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2214 AC_ARG_ENABLE(symvers,
2215 changequote(<<, >>)dnl
2216 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2217 changequote([, ])dnl
2218 [case "$enableval" in
2219 yes) enable_symvers=yes ;;
2220 no) enable_symvers=no ;;
2221 # other names here, just as sanity checks
2222 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2223 gnu) enable_symvers=$enableval ;;
2224 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2226 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2228 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2229 # don't know enough about $LD to do tricks...
2230 if test x$enable_shared = xno ||
2232 test x$glibcpp_gnu_ld_version = x; then
2236 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2237 if test $enable_symvers != no; then
2238 AC_MSG_CHECKING([for shared libgcc])
2239 ac_save_CFLAGS="$CFLAGS"
2241 AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2242 CFLAGS="$ac_save_CFLAGS"
2243 AC_MSG_RESULT($glibcpp_shared_libgcc)
2246 # For GNU ld, we need at least this version. It's 2.12 in the same format
2247 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2248 glibcpp_min_gnu_ld_version=21200
2250 # Check to see if unspecified "yes" value can win, given results
2252 if test $enable_symvers = yes ; then
2253 if test $with_gnu_ld = yes &&
2254 test $glibcpp_shared_libgcc = yes ;
2256 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2259 ac_test_CFLAGS="${CFLAGS+set}"
2260 ac_save_CFLAGS="$CFLAGS"
2261 CFLAGS='-shared -Wl,--version-script,conftest.map'
2264 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2266 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2267 if test "$ac_test_CFLAGS" = set; then
2268 CFLAGS="$ac_save_CFLAGS"
2270 # this is the suspicious part
2281 dnl Everything parsed; figure out what file to use.
2282 case $enable_symvers in
2284 SYMVER_MAP=config/linker-map.dummy
2287 SYMVER_MAP=config/linker-map.gnu
2288 AC_DEFINE(_GLIBCPP_SYMVER)
2292 AC_SUBST(SYMVER_MAP)
2293 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2294 AC_MSG_CHECKING([versioning on shared library symbols])
2295 AC_MSG_RESULT($enable_symvers)