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(IEEE 1003.1)
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)
1293 # A standalone libintl (e.g., GNU libintl) may be in use.
1294 if test $USE_NLS = yes; then
1295 AC_SEARCH_LIBS(gettext, intl,, USE_NLS=no)
1300 AC_SUBST(CCODECVT_H)
1301 AC_SUBST(CMESSAGES_H)
1302 AC_SUBST(CCODECVT_CC)
1303 AC_SUBST(CCOLLATE_CC)
1305 AC_SUBST(CMESSAGES_CC)
1307 AC_SUBST(CNUMERIC_CC)
1310 AC_SUBST(CLOCALE_CC)
1311 AC_SUBST(CLOCALE_INTERNAL_H)
1316 dnl Check for which I/O library to use: libio, or something specific.
1318 dnl GLIBCPP_ENABLE_CSTDIO
1319 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1321 dnl default is stdio
1323 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1324 AC_MSG_CHECKING([for cstdio to use])
1325 AC_ARG_ENABLE(cstdio,
1326 [ --enable-cstdio enable stdio for target io package.
1327 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1329 if test x$enable_cstdio = xno; then
1332 enable_cstdio=stdio)
1334 enable_cstdio_flag=$enable_cstdio
1336 dnl Check if a valid I/O package
1337 case x${enable_cstdio_flag} in
1339 CSTDIO_H=config/io/c_io_libio.h
1340 BASIC_FILE_H=config/io/basic_file_libio.h
1341 BASIC_FILE_CC=config/io/basic_file_libio.cc
1342 AC_MSG_RESULT(libio)
1344 # see if we are on a system with libio native (ie, linux)
1345 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1347 # Need to check and see what version of glibc is being used. If
1348 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1349 # compile most of libio for linux systems.
1350 if test x$has_libio = x"yes"; then
1353 AC_MSG_CHECKING([for glibc version >= 2.2])
1354 AC_EGREP_CPP([ok], [
1355 #include <features.h>
1356 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1359 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1360 AC_MSG_RESULT($glibc_satisfactory)
1364 # XXX at the moment, admit defeat and force the recompilation
1365 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1366 glibc_satisfactory=no
1368 if test x$glibc_satisfactory = x"yes"; then
1373 # bkoz XXX need to add checks to enable this
1374 # pme XXX here's a first pass at such a check
1375 if test x$enable_c_mbchar != xno; then
1383 # Using libio, but <libio.h> doesn't exist on the target system. . .
1385 # bkoz XXX need to add checks to enable this
1386 # pme XXX here's a first pass at such a check
1387 if test x$enable_c_mbchar != xno; then
1394 xstdio | x | xno | xnone | xyes)
1396 CSTDIO_H=config/io/c_io_stdio.h
1397 BASIC_FILE_H=config/io/basic_file_stdio.h
1398 BASIC_FILE_CC=config/io/basic_file_stdio.cc
1399 AC_MSG_RESULT(stdio)
1401 # We're not using stdio.
1406 echo "$enable_cstdio is an unknown io package" 1>&2
1411 AC_SUBST(BASIC_FILE_H)
1412 AC_SUBST(BASIC_FILE_CC)
1414 # 2000-08-04 bkoz hack
1415 CCODECVT_C=config/io/c_io_libio_codecvt.c
1416 AC_SUBST(CCODECVT_C)
1417 # 2000-08-04 bkoz hack
1419 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1420 test "$need_libio" = yes || test "$need_wlibio" = yes)
1421 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1422 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1423 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1424 libio_la=../libio/libio.la
1433 dnl Check to see if building and using a C++ precompiled header can be done.
1435 dnl GLIBCPP_CHECK_PCH
1437 dnl If it looks like it may work, flip bits on in include/Makefile.am
1439 AC_DEFUN(GLIBCPP_CHECK_PCH, [
1440 ac_test_CXXFLAGS="${CXXFLAGS+set}"
1441 ac_save_CXXFLAGS="$CXXFLAGS"
1442 CXXFLAGS='-Werror -Winvalid-pch -Wno-deprecated -x c++-header'
1444 AC_MSG_CHECKING([for compiler that seems to compile .gch files])
1445 if test x${glibcpp_pch_comp+set} != xset; then
1446 AC_CACHE_VAL(glibcpp_pch_comp, [
1449 AC_TRY_COMPILE([#include <math.h>
1452 [glibcpp_pch_comp=yes], [glibcpp_pch_comp=no])
1456 AC_MSG_RESULT([$glibcpp_pch_comp])
1458 CXXFLAGS="$ac_save_CXXFLAGS"
1459 AM_CONDITIONAL(GLIBCPP_BUILD_PCH, test "$glibcpp_pch_comp" = yes)
1463 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1464 dnl We must stage the required headers so that they will be installed
1465 dnl with the library (unlike libgcc, the STL implementation is provided
1466 dnl solely within headers). Since we must not inject random user-space
1467 dnl macro names into user-provided C++ code, we first stage into <file>-in
1468 dnl and process to <file> with an output command. The reason for a two-
1469 dnl stage process here is to correctly handle $srcdir!=$objdir without
1470 dnl having to write complex code (the sed commands to clean the macro
1471 dnl namespace are complex and fragile enough as it is). We must also
1472 dnl add a relative path so that -I- is supported properly.
1474 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1475 AC_MSG_CHECKING([for thread model used by GCC])
1476 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1477 AC_MSG_RESULT([$target_thread_file])
1479 if test $target_thread_file != single; then
1480 AC_DEFINE(HAVE_GTHR_DEFAULT)
1481 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1484 glibcpp_thread_h=gthr-$target_thread_file.h
1485 AC_SUBST(glibcpp_thread_h)
1490 dnl Check for exception handling support. If an explicit enable/disable
1491 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1492 dnl target may or may not support call frame exceptions.
1494 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1495 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1496 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1498 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1500 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1501 AC_MSG_CHECKING([for exception model to use])
1504 AC_ARG_ENABLE(sjlj-exceptions,
1505 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1507 [dnl Botheration. Now we've got to detect the exception model.
1508 dnl Link tests against libgcc.a are problematic since -- at least
1509 dnl as of this writing -- we've not been given proper -L bits for
1510 dnl single-tree newlib and libgloss.
1512 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1513 dnl conftest files before we got a change to grep them first.
1514 cat > conftest.$ac_ext << EOF
1515 [#]line __oline__ "configure"
1524 old_CXXFLAGS="$CXXFLAGS"
1526 if AC_TRY_EVAL(ac_compile); then
1527 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1528 enable_sjlj_exceptions=yes
1529 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1530 enable_sjlj_exceptions=no
1533 CXXFLAGS="$old_CXXFLAGS"
1535 if test x$enable_sjlj_exceptions = xyes; then
1536 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1537 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1538 ac_exception_model_name=sjlj
1539 elif test x$enable_sjlj_exceptions = xno; then
1540 ac_exception_model_name="call frame"
1542 AC_MSG_ERROR([unable to detect exception model])
1545 AC_MSG_RESULT($ac_exception_model_name)
1550 dnl Check for libunwind exception handling support. If enabled then
1551 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1552 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1553 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1554 dnl on libunwind as well as libgcc.
1556 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1557 dnl --enable-libunwind-exceptions forces the use of libunwind.
1558 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1560 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1562 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1563 AC_MSG_CHECKING([for use of libunwind])
1564 AC_ARG_ENABLE(libunwind-exceptions,
1565 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1566 use_libunwind_exceptions=$enableval,
1567 use_libunwind_exceptions=no)
1568 AC_MSG_RESULT($use_libunwind_exceptions)
1569 dnl Option parsed, now set things appropriately
1570 if test x"$use_libunwind_exceptions" = xyes; then
1571 LIBUNWIND_FLAG="-lunwind"
1575 AC_SUBST(LIBUNWIND_FLAG)
1579 dnl Check for ISO/IEC 9899:1999 "C99" support.
1581 dnl GLIBCPP_ENABLE_C99
1582 dnl --enable-c99 defines _GLIBCPP_USE_C99
1583 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1584 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1585 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1586 dnl defaults to `no'.
1587 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1589 dnl GLIBCPP_ENABLE_C99
1590 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1591 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1594 changequote(<<, >>)dnl
1595 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1596 changequote([, ])dnl
1597 [case "$enableval" in
1598 yes) enable_c99=yes ;;
1599 no) enable_c99=no ;;
1600 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1602 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1607 # Check for the existence of <math.h> functions used if C99 is enabled.
1609 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1610 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1611 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1612 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1613 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1614 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1615 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1616 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1617 AC_TRY_COMPILE([#include <math.h>],
1618 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1619 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1620 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1621 AC_TRY_COMPILE([#include <math.h>],
1622 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1623 AC_TRY_COMPILE([#include <math.h>],
1624 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1625 AC_MSG_RESULT($ac_c99_math)
1627 # Check for the existence in <stdio.h> of vscanf, et. al.
1629 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1630 AC_TRY_COMPILE([#include <stdio.h>],
1631 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1632 AC_TRY_COMPILE([#include <stdio.h>
1634 void foo(char* fmt, ...)
1635 {va_list args; va_start(args, fmt);
1636 vfscanf(stderr, "%i", args);}],
1637 [],, [ac_c99_stdio=no])
1638 AC_TRY_COMPILE([#include <stdio.h>
1640 void foo(char* fmt, ...)
1641 {va_list args; va_start(args, fmt);
1642 vscanf("%i", args);}],
1643 [],, [ac_c99_stdio=no])
1644 AC_TRY_COMPILE([#include <stdio.h>
1646 void foo(char* fmt, ...)
1647 {va_list args; va_start(args, fmt);
1648 vsnprintf(fmt, 0, "%i", args);}],
1649 [],, [ac_c99_stdio=no])
1650 AC_TRY_COMPILE([#include <stdio.h>
1652 void foo(char* fmt, ...)
1653 {va_list args; va_start(args, fmt);
1654 vsscanf(fmt, "%i", args);}],
1655 [],, [ac_c99_stdio=no])
1656 AC_MSG_RESULT($ac_c99_stdio)
1658 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1660 AC_MSG_CHECKING([for lldiv_t declaration])
1661 AC_CACHE_VAL(ac_c99_lldiv_t, [
1662 AC_TRY_COMPILE([#include <stdlib.h>],
1664 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1666 AC_MSG_RESULT($ac_c99_lldiv_t)
1668 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1669 AC_TRY_COMPILE([#include <stdlib.h>],
1670 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1671 AC_TRY_COMPILE([#include <stdlib.h>],
1672 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1673 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1674 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1675 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1676 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1677 if test x"$ac_c99_lldiv_t" = x"no"; then
1680 AC_MSG_RESULT($ac_c99_stdlib)
1682 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1683 # XXX the wchar.h checks should be rolled into the general C99 bits.
1685 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1686 AC_TRY_COMPILE([#include <wchar.h>],
1687 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1688 AC_TRY_COMPILE([#include <wchar.h>],
1689 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1690 AC_TRY_COMPILE([#include <wchar.h>],
1691 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1692 AC_MSG_RESULT($ac_c99_wchar)
1694 AC_MSG_CHECKING([for enabled ISO C99 support])
1695 if test x"$ac_c99_math" = x"no" ||
1696 test x"$ac_c99_stdio" = x"no" ||
1697 test x"$ac_c99_stdlib" = x"no" ||
1698 test x"$ac_c99_wchar" = x"no"; then
1701 AC_MSG_RESULT($enable_c99)
1703 # Option parsed, now set things appropriately
1704 if test x"$enable_c99" = x"yes"; then
1705 AC_DEFINE(_GLIBCPP_USE_C99)
1713 dnl Check for template specializations for the 'long long' type extension.
1714 dnl The result determines only whether 'long long' I/O is enabled; things
1715 dnl like numeric_limits<> specializations are always available.
1717 dnl GLIBCPP_ENABLE_LONG_LONG
1718 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1719 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1720 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1721 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1722 dnl defaults to `no'.
1723 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1725 dnl GLIBCPP_ENABLE_LONG_LONG
1726 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1727 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1729 AC_ARG_ENABLE(long-long,
1730 changequote(<<, >>)dnl
1731 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1732 changequote([, ])dnl
1733 [case "$enableval" in
1734 yes) enable_long_long=yes ;;
1735 no) enable_long_long=no ;;
1736 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1738 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1743 AC_MSG_CHECKING([for enabled long long I/O support])
1744 # iostreams require strtoll, strtoull to compile
1745 AC_TRY_COMPILE([#include <stdlib.h>],
1746 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1747 AC_TRY_COMPILE([#include <stdlib.h>],
1748 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1750 # Option parsed, now set things appropriately
1751 if test x"$enable_long_long" = xyes; then
1752 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1754 AC_MSG_RESULT($enable_long_long)
1761 dnl Check for what type of C headers to use.
1763 dnl GLIBCPP_ENABLE_CHEADERS
1764 dnl --enable-cheaders= [does stuff].
1765 dnl --disable-cheaders [does not do anything, really].
1766 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1767 dnl Where DEFAULT is either `c' or `c_std'.
1768 dnl If ommitted, it defaults to `c_std'.
1769 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1770 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1771 AC_MSG_CHECKING([for c header strategy to use])
1772 AC_ARG_ENABLE(cheaders,
1773 changequote(<<, >>)dnl
1774 << --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1776 [case "$enableval" in
1781 enable_cheaders=c_std
1783 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1786 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1787 AC_MSG_RESULT($enable_cheaders)
1789 dnl Option parsed, now set things appropriately
1790 case "$enable_cheaders" in
1792 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1795 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1799 AC_SUBST(C_INCLUDE_DIR)
1800 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1801 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1802 AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1807 dnl Check for wide character support. Has the same effect as the option
1808 dnl in gcc's configure, but in a form that autoconf can mess with.
1810 dnl GLIBCPP_ENABLE_C_MBCHAR
1811 dnl --enable-c-mbchar requests all the wchar_t stuff.
1812 dnl --disable-c-mbchar doesn't.
1813 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1814 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1815 dnl defaults to `no'.
1816 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1817 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1818 AC_ARG_ENABLE(c-mbchar,
1819 changequote(<<, >>)dnl
1820 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1821 changequote([, ])dnl
1822 [case "$enableval" in
1823 yes) enable_c_mbchar=yes ;;
1824 no) enable_c_mbchar=no ;;
1825 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1827 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1828 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1833 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1835 dnl TOPLEVEL_INCLUDES
1836 dnl LIBMATH_INCLUDES
1837 dnl LIBSUPCXX_INCLUDES
1840 dnl GLIBCPP_EXPORT_INCLUDES
1841 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1842 # Root level of the build directory include sources.
1843 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1845 # Passed down for canadian crosses.
1846 if test x"$CANADIAN" = xyes; then
1847 TOPLEVEL_INCLUDES='-I$(includedir)'
1850 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1852 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1854 if test x"$need_libio" = xyes; then
1855 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1856 AC_SUBST(LIBIO_INCLUDES)
1859 # Now, export this to all the little Makefiles....
1860 AC_SUBST(GLIBCPP_INCLUDES)
1861 AC_SUBST(TOPLEVEL_INCLUDES)
1862 AC_SUBST(LIBMATH_INCLUDES)
1863 AC_SUBST(LIBSUPCXX_INCLUDES)
1868 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1870 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1871 # Optimization flags that are probably a good idea for thrill-seekers. Just
1872 # uncomment the lines below and make, everything else is ready to go...
1873 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1875 AC_SUBST(OPTIMIZE_CXXFLAGS)
1877 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings'
1878 AC_SUBST(WARN_FLAGS)
1882 dnl GLIBCPP_EXPORT_INSTALL_INFO
1883 dnl calculates gxx_install_dir
1884 dnl exports glibcpp_toolexecdir
1885 dnl exports glibcpp_toolexeclibdir
1886 dnl exports glibcpp_prefixdir
1888 dnl Assumes cross_compiling bits already done, and with_cross_host in
1891 dnl GLIBCPP_EXPORT_INSTALL_INFO
1892 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1893 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1894 # exported correctly in GLIBCPP_CONFIGURE.
1895 glibcpp_toolexecdir=no
1896 glibcpp_toolexeclibdir=no
1897 glibcpp_prefixdir=${prefix}
1899 # Process the option --with-gxx-include-dir=<path to include-files directory>
1900 AC_MSG_CHECKING([for --with-gxx-include-dir])
1901 AC_ARG_WITH(gxx-include-dir,
1902 [ --with-gxx-include-dir the installation directory for include files],
1903 [case "${withval}" in
1905 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1912 gxx_include_dir=${withval}
1914 esac], [gxx_include_dir=no])
1915 AC_MSG_RESULT($gxx_include_dir)
1917 # Process the option "--enable-version-specific-runtime-libs"
1918 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1919 AC_ARG_ENABLE(version-specific-runtime-libs,
1920 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1921 [case "$enableval" in
1922 yes) version_specific_libs=yes ;;
1923 no) version_specific_libs=no ;;
1924 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1926 version_specific_libs=no)dnl
1927 # Option set, now we can test it.
1928 AC_MSG_RESULT($version_specific_libs)
1930 # Default case for install directory for include files.
1931 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1932 gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1935 # Version-specific runtime libs processing.
1936 if test $version_specific_libs = yes; then
1937 # Need the gcc compiler version to know where to install libraries
1938 # and header files if --enable-version-specific-runtime-libs option
1940 if test x"$gxx_include_dir" = x"no"; then
1941 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1943 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1944 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1947 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1948 # Install a library built with a cross compiler in tooldir, not libdir.
1949 if test x"$glibcpp_toolexecdir" = x"no"; then
1950 if test -n "$with_cross_host" &&
1951 test x"$with_cross_host" != x"no"; then
1952 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1953 glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1955 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1956 glibcpp_toolexeclibdir='$(libdir)'
1958 multi_os_directory=`$CC -print-multi-os-directory`
1959 case $multi_os_directory in
1960 .) ;; # Avoid trailing /.
1961 *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1965 AC_MSG_CHECKING([for install location])
1966 AC_MSG_RESULT($gxx_include_dir)
1968 AC_SUBST(glibcpp_prefixdir)
1969 AC_SUBST(gxx_include_dir)
1970 AC_SUBST(glibcpp_toolexecdir)
1971 AC_SUBST(glibcpp_toolexeclibdir)
1975 # Check for functions in math library.
1976 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1978 # This file can be copied and used freely without restrictions. It can
1979 # be used in projects which are not available under the GNU Public License
1980 # but which still want to provide support for the GNU gettext functionality.
1981 # Please note that the actual code is *not* freely available.
1985 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1986 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1987 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
1990 dnl This macro searches for a GNU version of make. If a match is found, the
1991 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1992 dnl set to "#". This is useful for including a special features in a Makefile,
1993 dnl which cannot be handled by other versions of make. The variable
1994 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1995 dnl the empty string otherwise.
1997 dnl Here is an example of its use:
1999 dnl Makefile.in might contain:
2001 dnl # A failsafe way of putting a dependency rule into a makefile
2003 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2005 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2006 dnl @ifGNUmake@ include $(DEPEND)
2007 dnl @ifGNUmake@ endif
2009 dnl Then configure.in would normally contain:
2011 dnl CHECK_GNU_MAKE()
2012 dnl AC_OUTPUT(Makefile)
2014 dnl Then perhaps to cause gnu make to override any other make, we could do
2015 dnl something like this (note that GNU make always looks for GNUmakefile first):
2017 dnl if ! test x$_cv_gnu_make_command = x ; then
2018 dnl mv Makefile GNUmakefile
2019 dnl echo .DEFAULT: > Makefile ;
2020 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
2023 dnl Then, if any (well almost any) other make is called, and GNU make also
2024 dnl exists, then the other make wraps the GNU make.
2026 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2027 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2029 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
2030 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2031 dnl #### conditional's subshell (" --version" is not a command), using a
2032 dnl #### different option to grep(1).
2034 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2035 dnl #### ${MAKE:-make}).
2038 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2039 _cv_gnu_make_command='' ;
2040 dnl Search all the common names for GNU make
2041 for a in "${MAKE-make}" make gmake gnumake ; do
2042 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2044 _cv_gnu_make_command=$a ;
2049 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2050 dnl string, '#' otherwise
2051 if test "x$_cv_gnu_make_command" != "x" ; then
2060 dnl Check for headers for, and arguments to, the setrlimit() function.
2061 dnl Used only in testsuite_hooks.h.
2062 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2063 AC_TRY_COMPILE([#include <unistd.h>
2064 #include <sys/time.h>
2065 #include <sys/resource.h>
2066 ], [ int f = RLIMIT_$1 ; ],
2067 [glibcpp_mresult=1], [glibcpp_mresult=0])
2068 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2069 [Only used in build directory testsuite_hooks.h.])
2071 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2072 setrlimit_have_headers=yes
2073 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2075 setrlimit_have_headers=no)
2076 # If don't have the headers, then we can't run the tests now, and we
2077 # won't be seeing any of these during testsuite compilation.
2078 if test $setrlimit_have_headers = yes; then
2079 # Can't do these in a loop, else the resulting syntax is wrong.
2080 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2081 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2082 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2083 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2085 # Check for rlimit, setrlimit.
2086 AC_CACHE_VAL(ac_setrlimit, [
2087 AC_TRY_COMPILE([#include <unistd.h>
2088 #include <sys/time.h>
2089 #include <sys/resource.h>
2091 [ struct rlimit r; setrlimit(0, &r);],
2092 [ac_setrlimit=yes], [ac_setrlimit=no])
2096 AC_MSG_CHECKING([for testsuite memory limit support])
2097 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2099 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2103 AC_MSG_RESULT($ac_mem_limits)
2108 dnl Does any necessary configuration of the testsuite directory. Generates
2109 dnl the testsuite_hooks.h header.
2111 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2112 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2113 GLIBCPP_CHECK_SETRLIMIT
2115 # Look for setenv, so that extended locale tests can be performed.
2116 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2118 # Export file names for ABI checking.
2119 baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2120 AC_SUBST(baseline_file)
2123 *-*-cygwin* ) enable_abi_check=no ;;
2124 * ) enable_abi_check=yes ;;
2127 # Don't do ABI checking unless native.
2128 AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2129 test x"$build" = x"$host" && test -z "$with_cross_host" \
2130 && test "$enable_abi_check" = yes )
2134 sinclude(../libtool.m4)
2135 dnl The lines below arrange for aclocal not to bring an installed
2136 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2137 dnl add a definition of LIBTOOL to Makefile.in.
2138 ifelse(,,,[AC_SUBST(LIBTOOL)
2139 AC_DEFUN([AM_PROG_LIBTOOL])
2140 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2141 AC_DEFUN([AC_PROG_LD])
2145 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2148 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2149 AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2150 AC_TRY_LINK([#include <sys/stat.h>],
2151 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2152 [glibcpp_cv_S_ISREG=yes],
2153 [glibcpp_cv_S_ISREG=no])
2155 AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2156 AC_TRY_LINK([#include <sys/stat.h>],
2157 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2158 [glibcpp_cv_S_IFREG=yes],
2159 [glibcpp_cv_S_IFREG=no])
2161 if test x$glibcpp_cv_S_ISREG = xyes; then
2162 AC_DEFINE(HAVE_S_ISREG)
2163 elif test x$glibcpp_cv_S_IFREG = xyes; then
2164 AC_DEFINE(HAVE_S_IFREG)
2169 dnl Check whether poll is available in <poll.h>.
2172 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2173 AC_CACHE_VAL(glibcpp_cv_POLL, [
2174 AC_TRY_COMPILE([#include <poll.h>],
2175 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2176 [glibcpp_cv_POLL=yes],
2177 [glibcpp_cv_POLL=no])
2179 if test x$glibcpp_cv_POLL = xyes; then
2180 AC_DEFINE(HAVE_POLL)
2184 # Check whether LC_MESSAGES is available in <locale.h>.
2185 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2187 # This file file be copied and used freely without restrictions. It can
2188 # be used in projects which are not available under the GNU Public License
2189 # but which still want to provide support for the GNU gettext functionality.
2190 # Please note that the actual code is *not* freely available.
2194 AC_DEFUN(AC_LC_MESSAGES, [
2195 AC_CHECK_HEADER(locale.h, [
2196 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2197 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2198 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2199 if test $ac_cv_val_LC_MESSAGES = yes; then
2200 AC_DEFINE(HAVE_LC_MESSAGES)
2207 dnl Check for whether the Boost-derived checks should be turned on.
2209 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2210 dnl --enable-concept-checks turns them on.
2211 dnl --disable-concept-checks leaves them off.
2212 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2213 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2214 dnl defaults to `no'.
2215 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2216 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2217 AC_ARG_ENABLE(concept-checks,
2218 changequote(<<, >>)dnl
2219 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2220 changequote([, ])dnl
2221 [case "$enableval" in
2222 yes) enable_concept_checks=yes ;;
2223 no) enable_concept_checks=no ;;
2224 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2226 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2227 dnl Option parsed, now set things appropriately
2228 if test x"$enable_concept_checks" = xyes; then
2229 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2235 dnl Add version tags to symbols in shared library (or not), additionally
2236 dnl marking other symbols as private/local (or not).
2238 dnl GLIBCPP_ENABLE_SYMVERS
2239 dnl --enable-symvers=style adds a version script to the linker call when
2240 dnl creating the shared library. The choice of version script is
2241 dnl controlled by 'style'.
2242 dnl --disable-symvers does not.
2243 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2244 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2245 dnl defaults to `no'. Passing `yes' tries to choose a default style
2246 dnl based on linker characteristics. Passing 'no' disables versioning.
2247 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2248 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2249 AC_ARG_ENABLE(symvers,
2250 changequote(<<, >>)dnl
2251 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2252 changequote([, ])dnl
2253 [case "$enableval" in
2254 yes) enable_symvers=yes ;;
2255 no) enable_symvers=no ;;
2256 # other names here, just as sanity checks
2257 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2258 gnu) enable_symvers=$enableval ;;
2259 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2261 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2263 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2264 # don't know enough about $LD to do tricks...
2265 if test x$enable_shared = xno ||
2267 test x$glibcpp_gnu_ld_version = x; then
2271 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2272 if test $enable_symvers != no; then
2273 AC_MSG_CHECKING([for shared libgcc])
2274 ac_save_CFLAGS="$CFLAGS"
2276 AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2277 CFLAGS="$ac_save_CFLAGS"
2278 AC_MSG_RESULT($glibcpp_shared_libgcc)
2281 # For GNU ld, we need at least this version. It's 2.12 in the same format
2282 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2283 glibcpp_min_gnu_ld_version=21200
2285 # Check to see if unspecified "yes" value can win, given results
2287 if test $enable_symvers = yes ; then
2288 if test $with_gnu_ld = yes &&
2289 test $glibcpp_shared_libgcc = yes ;
2291 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2294 ac_test_CFLAGS="${CFLAGS+set}"
2295 ac_save_CFLAGS="$CFLAGS"
2296 CFLAGS='-shared -Wl,--version-script,conftest.map'
2299 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2301 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2302 if test "$ac_test_CFLAGS" = set; then
2303 CFLAGS="$ac_save_CFLAGS"
2305 # this is the suspicious part
2316 dnl Everything parsed; figure out what file to use.
2317 case $enable_symvers in
2319 SYMVER_MAP=config/linker-map.dummy
2322 SYMVER_MAP=config/linker-map.gnu
2323 AC_DEFINE(_GLIBCPP_SYMVER)
2327 AC_SUBST(SYMVER_MAP)
2328 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2329 AC_MSG_CHECKING([versioning on shared library symbols])
2330 AC_MSG_RESULT($enable_symvers)