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 Check to see if building and using a C++ precompiled header can be done.
1430 dnl GLIBCPP_CHECK_PCH
1432 dnl If it looks like it may work, flip bits on in include/Makefile.am
1434 AC_DEFUN(GLIBCPP_CHECK_PCH, [
1435 ac_test_CXXFLAGS="${CXXFLAGS+set}"
1436 ac_save_CXXFLAGS="$CXXFLAGS"
1437 CXXFLAGS='-Werror -Winvalid-pch -Wno-deprecated -x c++-header'
1439 AC_MSG_CHECKING([for compiler that seems to compile .gch files])
1440 if test x${glibcpp_pch_comp+set} != xset; then
1441 AC_CACHE_VAL(glibcpp_pch_comp, [
1444 AC_TRY_COMPILE([#include <math.h>
1447 [glibcpp_pch_comp=yes], [glibcpp_pch_comp=no])
1451 AC_MSG_RESULT([$glibcpp_pch_comp])
1453 CXXFLAGS="$ac_save_CXXFLAGS"
1454 AM_CONDITIONAL(GLIBCPP_BUILD_PCH, test "$glibcpp_pch_comp" = yes)
1458 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1459 dnl We must stage the required headers so that they will be installed
1460 dnl with the library (unlike libgcc, the STL implementation is provided
1461 dnl solely within headers). Since we must not inject random user-space
1462 dnl macro names into user-provided C++ code, we first stage into <file>-in
1463 dnl and process to <file> with an output command. The reason for a two-
1464 dnl stage process here is to correctly handle $srcdir!=$objdir without
1465 dnl having to write complex code (the sed commands to clean the macro
1466 dnl namespace are complex and fragile enough as it is). We must also
1467 dnl add a relative path so that -I- is supported properly.
1469 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1470 AC_MSG_CHECKING([for thread model used by GCC])
1471 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1472 AC_MSG_RESULT([$target_thread_file])
1474 if test $target_thread_file != single; then
1475 AC_DEFINE(HAVE_GTHR_DEFAULT)
1476 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1479 glibcpp_thread_h=gthr-$target_thread_file.h
1480 AC_SUBST(glibcpp_thread_h)
1485 dnl Check for exception handling support. If an explicit enable/disable
1486 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1487 dnl target may or may not support call frame exceptions.
1489 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1490 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1491 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1493 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1495 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1496 AC_MSG_CHECKING([for exception model to use])
1499 AC_ARG_ENABLE(sjlj-exceptions,
1500 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1502 [dnl Botheration. Now we've got to detect the exception model.
1503 dnl Link tests against libgcc.a are problematic since -- at least
1504 dnl as of this writing -- we've not been given proper -L bits for
1505 dnl single-tree newlib and libgloss.
1507 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1508 dnl conftest files before we got a change to grep them first.
1509 cat > conftest.$ac_ext << EOF
1510 [#]line __oline__ "configure"
1519 old_CXXFLAGS="$CXXFLAGS"
1521 if AC_TRY_EVAL(ac_compile); then
1522 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1523 enable_sjlj_exceptions=yes
1524 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1525 enable_sjlj_exceptions=no
1528 CXXFLAGS="$old_CXXFLAGS"
1530 if test x$enable_sjlj_exceptions = xyes; then
1531 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1532 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1533 ac_exception_model_name=sjlj
1534 elif test x$enable_sjlj_exceptions = xno; then
1535 ac_exception_model_name="call frame"
1537 AC_MSG_ERROR([unable to detect exception model])
1540 AC_MSG_RESULT($ac_exception_model_name)
1545 dnl Check for libunwind exception handling support. If enabled then
1546 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1547 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1548 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1549 dnl on libunwind as well as libgcc.
1551 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1552 dnl --enable-libunwind-exceptions forces the use of libunwind.
1553 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1555 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1557 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1558 AC_MSG_CHECKING([for use of libunwind])
1559 AC_ARG_ENABLE(libunwind-exceptions,
1560 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1561 use_libunwind_exceptions=$enableval,
1562 use_libunwind_exceptions=no)
1563 AC_MSG_RESULT($use_libunwind_exceptions)
1564 dnl Option parsed, now set things appropriately
1565 if test x"$use_libunwind_exceptions" = xyes; then
1566 LIBUNWIND_FLAG="-lunwind"
1570 AC_SUBST(LIBUNWIND_FLAG)
1574 dnl Check for ISO/IEC 9899:1999 "C99" support.
1576 dnl GLIBCPP_ENABLE_C99
1577 dnl --enable-c99 defines _GLIBCPP_USE_C99
1578 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1579 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1580 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1581 dnl defaults to `no'.
1582 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1584 dnl GLIBCPP_ENABLE_C99
1585 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1586 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1589 changequote(<<, >>)dnl
1590 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1591 changequote([, ])dnl
1592 [case "$enableval" in
1593 yes) enable_c99=yes ;;
1594 no) enable_c99=no ;;
1595 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1597 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1602 # Check for the existence of <math.h> functions used if C99 is enabled.
1604 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1605 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1606 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1607 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1608 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1609 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1610 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1611 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1612 AC_TRY_COMPILE([#include <math.h>],
1613 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1614 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1615 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1616 AC_TRY_COMPILE([#include <math.h>],
1617 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1618 AC_TRY_COMPILE([#include <math.h>],
1619 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1620 AC_MSG_RESULT($ac_c99_math)
1622 # Check for the existence in <stdio.h> of vscanf, et. al.
1624 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1625 AC_TRY_COMPILE([#include <stdio.h>],
1626 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1627 AC_TRY_COMPILE([#include <stdio.h>
1629 void foo(char* fmt, ...)
1630 {va_list args; va_start(args, fmt);
1631 vfscanf(stderr, "%i", args);}],
1632 [],, [ac_c99_stdio=no])
1633 AC_TRY_COMPILE([#include <stdio.h>
1635 void foo(char* fmt, ...)
1636 {va_list args; va_start(args, fmt);
1637 vscanf("%i", args);}],
1638 [],, [ac_c99_stdio=no])
1639 AC_TRY_COMPILE([#include <stdio.h>
1641 void foo(char* fmt, ...)
1642 {va_list args; va_start(args, fmt);
1643 vsnprintf(fmt, 0, "%i", args);}],
1644 [],, [ac_c99_stdio=no])
1645 AC_TRY_COMPILE([#include <stdio.h>
1647 void foo(char* fmt, ...)
1648 {va_list args; va_start(args, fmt);
1649 vsscanf(fmt, "%i", args);}],
1650 [],, [ac_c99_stdio=no])
1651 AC_MSG_RESULT($ac_c99_stdio)
1653 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1655 AC_MSG_CHECKING([for lldiv_t declaration])
1656 AC_CACHE_VAL(ac_c99_lldiv_t, [
1657 AC_TRY_COMPILE([#include <stdlib.h>],
1659 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1661 AC_MSG_RESULT($ac_c99_lldiv_t)
1663 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1664 AC_TRY_COMPILE([#include <stdlib.h>],
1665 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1666 AC_TRY_COMPILE([#include <stdlib.h>],
1667 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1668 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1669 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1670 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1671 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1672 if test x"$ac_c99_lldiv_t" = x"no"; then
1675 AC_MSG_RESULT($ac_c99_stdlib)
1677 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1678 # XXX the wchar.h checks should be rolled into the general C99 bits.
1680 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1681 AC_TRY_COMPILE([#include <wchar.h>],
1682 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1683 AC_TRY_COMPILE([#include <wchar.h>],
1684 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1685 AC_TRY_COMPILE([#include <wchar.h>],
1686 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1687 AC_MSG_RESULT($ac_c99_wchar)
1689 AC_MSG_CHECKING([for enabled ISO C99 support])
1690 if test x"$ac_c99_math" = x"no" ||
1691 test x"$ac_c99_stdio" = x"no" ||
1692 test x"$ac_c99_stdlib" = x"no" ||
1693 test x"$ac_c99_wchar" = x"no"; then
1696 AC_MSG_RESULT($enable_c99)
1698 # Option parsed, now set things appropriately
1699 if test x"$enable_c99" = x"yes"; then
1700 AC_DEFINE(_GLIBCPP_USE_C99)
1708 dnl Check for template specializations for the 'long long' type extension.
1709 dnl The result determines only whether 'long long' I/O is enabled; things
1710 dnl like numeric_limits<> specializations are always available.
1712 dnl GLIBCPP_ENABLE_LONG_LONG
1713 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1714 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1715 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1716 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1717 dnl defaults to `no'.
1718 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1720 dnl GLIBCPP_ENABLE_LONG_LONG
1721 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1722 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1724 AC_ARG_ENABLE(long-long,
1725 changequote(<<, >>)dnl
1726 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1727 changequote([, ])dnl
1728 [case "$enableval" in
1729 yes) enable_long_long=yes ;;
1730 no) enable_long_long=no ;;
1731 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1733 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1738 AC_MSG_CHECKING([for enabled long long I/O support])
1739 # iostreams require strtoll, strtoull to compile
1740 AC_TRY_COMPILE([#include <stdlib.h>],
1741 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1742 AC_TRY_COMPILE([#include <stdlib.h>],
1743 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1745 # Option parsed, now set things appropriately
1746 if test x"$enable_long_long" = xyes; then
1747 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1749 AC_MSG_RESULT($enable_long_long)
1756 dnl Check for what type of C headers to use.
1758 dnl GLIBCPP_ENABLE_CHEADERS
1759 dnl --enable-cheaders= [does stuff].
1760 dnl --disable-cheaders [does not do anything, really].
1761 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1762 dnl Where DEFAULT is either `c' or `c_std'.
1763 dnl If ommitted, it defaults to `c_std'.
1764 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1765 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1766 AC_MSG_CHECKING([for c header strategy to use])
1767 AC_ARG_ENABLE(cheaders,
1768 changequote(<<, >>)dnl
1769 << --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1771 [case "$enableval" in
1776 enable_cheaders=c_std
1778 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1781 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1782 AC_MSG_RESULT($enable_cheaders)
1784 dnl Option parsed, now set things appropriately
1785 case "$enable_cheaders" in
1787 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1790 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1794 AC_SUBST(C_INCLUDE_DIR)
1795 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1796 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1797 AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1802 dnl Check for wide character support. Has the same effect as the option
1803 dnl in gcc's configure, but in a form that autoconf can mess with.
1805 dnl GLIBCPP_ENABLE_C_MBCHAR
1806 dnl --enable-c-mbchar requests all the wchar_t stuff.
1807 dnl --disable-c-mbchar doesn't.
1808 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1809 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1810 dnl defaults to `no'.
1811 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1812 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1813 AC_ARG_ENABLE(c-mbchar,
1814 changequote(<<, >>)dnl
1815 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1816 changequote([, ])dnl
1817 [case "$enableval" in
1818 yes) enable_c_mbchar=yes ;;
1819 no) enable_c_mbchar=no ;;
1820 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1822 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1823 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1828 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1830 dnl TOPLEVEL_INCLUDES
1831 dnl LIBMATH_INCLUDES
1832 dnl LIBSUPCXX_INCLUDES
1835 dnl GLIBCPP_EXPORT_INCLUDES
1836 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1837 # Root level of the build directory include sources.
1838 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1840 # Passed down for canadian crosses.
1841 if test x"$CANADIAN" = xyes; then
1842 TOPLEVEL_INCLUDES='-I$(includedir)'
1845 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1847 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1849 if test x"$need_libio" = xyes; then
1850 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1851 AC_SUBST(LIBIO_INCLUDES)
1854 # Now, export this to all the little Makefiles....
1855 AC_SUBST(GLIBCPP_INCLUDES)
1856 AC_SUBST(TOPLEVEL_INCLUDES)
1857 AC_SUBST(LIBMATH_INCLUDES)
1858 AC_SUBST(LIBSUPCXX_INCLUDES)
1863 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1865 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1866 # Optimization flags that are probably a good idea for thrill-seekers. Just
1867 # uncomment the lines below and make, everything else is ready to go...
1868 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1870 AC_SUBST(OPTIMIZE_CXXFLAGS)
1872 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1873 AC_SUBST(WARN_FLAGS)
1877 dnl GLIBCPP_EXPORT_INSTALL_INFO
1878 dnl calculates gxx_install_dir
1879 dnl exports glibcpp_toolexecdir
1880 dnl exports glibcpp_toolexeclibdir
1881 dnl exports glibcpp_prefixdir
1883 dnl Assumes cross_compiling bits already done, and with_cross_host in
1886 dnl GLIBCPP_EXPORT_INSTALL_INFO
1887 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1888 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1889 # exported correctly in GLIBCPP_CONFIGURE.
1890 glibcpp_toolexecdir=no
1891 glibcpp_toolexeclibdir=no
1892 glibcpp_prefixdir=${prefix}
1894 # Process the option --with-gxx-include-dir=<path to include-files directory>
1895 AC_MSG_CHECKING([for --with-gxx-include-dir])
1896 AC_ARG_WITH(gxx-include-dir,
1897 [ --with-gxx-include-dir the installation directory for include files],
1898 [case "${withval}" in
1900 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1907 gxx_include_dir=${withval}
1909 esac], [gxx_include_dir=no])
1910 AC_MSG_RESULT($gxx_include_dir)
1912 # Process the option "--enable-version-specific-runtime-libs"
1913 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1914 AC_ARG_ENABLE(version-specific-runtime-libs,
1915 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1916 [case "$enableval" in
1917 yes) version_specific_libs=yes ;;
1918 no) version_specific_libs=no ;;
1919 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1921 version_specific_libs=no)dnl
1922 # Option set, now we can test it.
1923 AC_MSG_RESULT($version_specific_libs)
1925 # Default case for install directory for include files.
1926 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1927 gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1930 # Version-specific runtime libs processing.
1931 if test $version_specific_libs = yes; then
1932 # Need the gcc compiler version to know where to install libraries
1933 # and header files if --enable-version-specific-runtime-libs option
1935 if test x"$gxx_include_dir" = x"no"; then
1936 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1938 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1939 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1942 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1943 # Install a library built with a cross compiler in tooldir, not libdir.
1944 if test x"$glibcpp_toolexecdir" = x"no"; then
1945 if test -n "$with_cross_host" &&
1946 test x"$with_cross_host" != x"no"; then
1947 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1948 glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1950 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1951 glibcpp_toolexeclibdir='$(libdir)'
1953 multi_os_directory=`$CC -print-multi-os-directory`
1954 case $multi_os_directory in
1955 .) ;; # Avoid trailing /.
1956 *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1960 AC_MSG_CHECKING([for install location])
1961 AC_MSG_RESULT($gxx_include_dir)
1963 AC_SUBST(glibcpp_prefixdir)
1964 AC_SUBST(gxx_include_dir)
1965 AC_SUBST(glibcpp_toolexecdir)
1966 AC_SUBST(glibcpp_toolexeclibdir)
1970 # Check for functions in math library.
1971 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1973 # This file can be copied and used freely without restrictions. It can
1974 # be used in projects which are not available under the GNU Public License
1975 # but which still want to provide support for the GNU gettext functionality.
1976 # Please note that the actual code is *not* freely available.
1980 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1981 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1982 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
1985 dnl This macro searches for a GNU version of make. If a match is found, the
1986 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1987 dnl set to "#". This is useful for including a special features in a Makefile,
1988 dnl which cannot be handled by other versions of make. The variable
1989 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1990 dnl the empty string otherwise.
1992 dnl Here is an example of its use:
1994 dnl Makefile.in might contain:
1996 dnl # A failsafe way of putting a dependency rule into a makefile
1998 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2000 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2001 dnl @ifGNUmake@ include $(DEPEND)
2002 dnl @ifGNUmake@ endif
2004 dnl Then configure.in would normally contain:
2006 dnl CHECK_GNU_MAKE()
2007 dnl AC_OUTPUT(Makefile)
2009 dnl Then perhaps to cause gnu make to override any other make, we could do
2010 dnl something like this (note that GNU make always looks for GNUmakefile first):
2012 dnl if ! test x$_cv_gnu_make_command = x ; then
2013 dnl mv Makefile GNUmakefile
2014 dnl echo .DEFAULT: > Makefile ;
2015 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
2018 dnl Then, if any (well almost any) other make is called, and GNU make also
2019 dnl exists, then the other make wraps the GNU make.
2021 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2022 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2024 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
2025 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2026 dnl #### conditional's subshell (" --version" is not a command), using a
2027 dnl #### different option to grep(1).
2029 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2030 dnl #### ${MAKE:-make}).
2033 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2034 _cv_gnu_make_command='' ;
2035 dnl Search all the common names for GNU make
2036 for a in "${MAKE-make}" make gmake gnumake ; do
2037 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2039 _cv_gnu_make_command=$a ;
2044 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2045 dnl string, '#' otherwise
2046 if test "x$_cv_gnu_make_command" != "x" ; then
2055 dnl Check for headers for, and arguments to, the setrlimit() function.
2056 dnl Used only in testsuite_hooks.h.
2057 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2058 AC_TRY_COMPILE([#include <unistd.h>
2059 #include <sys/time.h>
2060 #include <sys/resource.h>
2061 ], [ int f = RLIMIT_$1 ; ],
2062 [glibcpp_mresult=1], [glibcpp_mresult=0])
2063 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2064 [Only used in build directory testsuite_hooks.h.])
2066 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2067 setrlimit_have_headers=yes
2068 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2070 setrlimit_have_headers=no)
2071 # If don't have the headers, then we can't run the tests now, and we
2072 # won't be seeing any of these during testsuite compilation.
2073 if test $setrlimit_have_headers = yes; then
2074 # Can't do these in a loop, else the resulting syntax is wrong.
2075 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2076 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2077 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2078 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2080 # Check for rlimit, setrlimit.
2081 AC_CACHE_VAL(ac_setrlimit, [
2082 AC_TRY_COMPILE([#include <unistd.h>
2083 #include <sys/time.h>
2084 #include <sys/resource.h>
2086 [ struct rlimit r; setrlimit(0, &r);],
2087 [ac_setrlimit=yes], [ac_setrlimit=no])
2091 AC_MSG_CHECKING([for testsuite memory limit support])
2092 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2094 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2098 AC_MSG_RESULT($ac_mem_limits)
2103 dnl Does any necessary configuration of the testsuite directory. Generates
2104 dnl the testsuite_hooks.h header.
2106 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2107 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2108 GLIBCPP_CHECK_SETRLIMIT
2110 # Look for setenv, so that extended locale tests can be performed.
2111 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2113 # Export file names for ABI checking.
2114 baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2115 AC_SUBST(baseline_file)
2118 *-*-cygwin* ) enable_abi_check=no ;;
2119 * ) enable_abi_check=yes ;;
2122 # Don't do ABI checking unless native.
2123 AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2124 test x"$build" = x"$host" && test -z "$with_cross_host" \
2125 && test "$enable_abi_check" = yes )
2129 sinclude(../libtool.m4)
2130 dnl The lines below arrange for aclocal not to bring an installed
2131 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2132 dnl add a definition of LIBTOOL to Makefile.in.
2133 ifelse(,,,[AC_SUBST(LIBTOOL)
2134 AC_DEFUN([AM_PROG_LIBTOOL])
2135 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2136 AC_DEFUN([AC_PROG_LD])
2140 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2143 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2144 AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2145 AC_TRY_LINK([#include <sys/stat.h>],
2146 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2147 [glibcpp_cv_S_ISREG=yes],
2148 [glibcpp_cv_S_ISREG=no])
2150 AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2151 AC_TRY_LINK([#include <sys/stat.h>],
2152 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2153 [glibcpp_cv_S_IFREG=yes],
2154 [glibcpp_cv_S_IFREG=no])
2156 if test x$glibcpp_cv_S_ISREG = xyes; then
2157 AC_DEFINE(HAVE_S_ISREG)
2158 elif test x$glibcpp_cv_S_IFREG = xyes; then
2159 AC_DEFINE(HAVE_S_IFREG)
2164 dnl Check whether poll is available in <poll.h>.
2167 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2168 AC_CACHE_VAL(glibcpp_cv_POLL, [
2169 AC_TRY_COMPILE([#include <poll.h>],
2170 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2171 [glibcpp_cv_POLL=yes],
2172 [glibcpp_cv_POLL=no])
2174 if test x$glibcpp_cv_POLL = xyes; then
2175 AC_DEFINE(HAVE_POLL)
2179 # Check whether LC_MESSAGES is available in <locale.h>.
2180 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2182 # This file file be copied and used freely without restrictions. It can
2183 # be used in projects which are not available under the GNU Public License
2184 # but which still want to provide support for the GNU gettext functionality.
2185 # Please note that the actual code is *not* freely available.
2189 AC_DEFUN(AC_LC_MESSAGES, [
2190 AC_CHECK_HEADER(locale.h, [
2191 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2192 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2193 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2194 if test $ac_cv_val_LC_MESSAGES = yes; then
2195 AC_DEFINE(HAVE_LC_MESSAGES)
2202 dnl Check for whether the Boost-derived checks should be turned on.
2204 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2205 dnl --enable-concept-checks turns them on.
2206 dnl --disable-concept-checks leaves them off.
2207 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2208 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2209 dnl defaults to `no'.
2210 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2211 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2212 AC_ARG_ENABLE(concept-checks,
2213 changequote(<<, >>)dnl
2214 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2215 changequote([, ])dnl
2216 [case "$enableval" in
2217 yes) enable_concept_checks=yes ;;
2218 no) enable_concept_checks=no ;;
2219 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2221 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2222 dnl Option parsed, now set things appropriately
2223 if test x"$enable_concept_checks" = xyes; then
2224 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2230 dnl Add version tags to symbols in shared library (or not), additionally
2231 dnl marking other symbols as private/local (or not).
2233 dnl GLIBCPP_ENABLE_SYMVERS
2234 dnl --enable-symvers=style adds a version script to the linker call when
2235 dnl creating the shared library. The choice of version script is
2236 dnl controlled by 'style'.
2237 dnl --disable-symvers does not.
2238 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2239 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2240 dnl defaults to `no'. Passing `yes' tries to choose a default style
2241 dnl based on linker characteristics. Passing 'no' disables versioning.
2242 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2243 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2244 AC_ARG_ENABLE(symvers,
2245 changequote(<<, >>)dnl
2246 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2247 changequote([, ])dnl
2248 [case "$enableval" in
2249 yes) enable_symvers=yes ;;
2250 no) enable_symvers=no ;;
2251 # other names here, just as sanity checks
2252 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2253 gnu) enable_symvers=$enableval ;;
2254 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2256 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2258 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2259 # don't know enough about $LD to do tricks...
2260 if test x$enable_shared = xno ||
2262 test x$glibcpp_gnu_ld_version = x; then
2266 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2267 if test $enable_symvers != no; then
2268 AC_MSG_CHECKING([for shared libgcc])
2269 ac_save_CFLAGS="$CFLAGS"
2271 AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2272 CFLAGS="$ac_save_CFLAGS"
2273 AC_MSG_RESULT($glibcpp_shared_libgcc)
2276 # For GNU ld, we need at least this version. It's 2.12 in the same format
2277 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2278 glibcpp_min_gnu_ld_version=21200
2280 # Check to see if unspecified "yes" value can win, given results
2282 if test $enable_symvers = yes ; then
2283 if test $with_gnu_ld = yes &&
2284 test $glibcpp_shared_libgcc = yes ;
2286 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2289 ac_test_CFLAGS="${CFLAGS+set}"
2290 ac_save_CFLAGS="$CFLAGS"
2291 CFLAGS='-shared -Wl,--version-script,conftest.map'
2294 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2296 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2297 if test "$ac_test_CFLAGS" = set; then
2298 CFLAGS="$ac_save_CFLAGS"
2300 # this is the suspicious part
2311 dnl Everything parsed; figure out what file to use.
2312 case $enable_symvers in
2314 SYMVER_MAP=config/linker-map.dummy
2317 SYMVER_MAP=config/linker-map.gnu
2318 AC_DEFINE(_GLIBCPP_SYMVER)
2322 AC_SUBST(SYMVER_MAP)
2323 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2324 AC_MSG_CHECKING([versioning on shared library symbols])
2325 AC_MSG_RESULT($enable_symvers)