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_CHECK_HEADERS([libintl.h], [], USE_NLS=no)
1296 AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no)
1298 if test $USE_NLS = yes; then
1299 AC_DEFINE(_GLIBCPP_USE_NLS)
1304 AC_SUBST(CCODECVT_H)
1305 AC_SUBST(CMESSAGES_H)
1306 AC_SUBST(CCODECVT_CC)
1307 AC_SUBST(CCOLLATE_CC)
1309 AC_SUBST(CMESSAGES_CC)
1311 AC_SUBST(CNUMERIC_CC)
1314 AC_SUBST(CLOCALE_CC)
1315 AC_SUBST(CLOCALE_INTERNAL_H)
1320 dnl Check for which I/O library to use: libio, or something specific.
1322 dnl GLIBCPP_ENABLE_CSTDIO
1323 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1325 dnl default is stdio
1327 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1328 AC_MSG_CHECKING([for cstdio to use])
1329 AC_ARG_ENABLE(cstdio,
1330 [ --enable-cstdio enable stdio for target io package.
1331 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1333 if test x$enable_cstdio = xno; then
1336 enable_cstdio=stdio)
1338 enable_cstdio_flag=$enable_cstdio
1340 dnl Check if a valid I/O package
1341 case x${enable_cstdio_flag} in
1343 CSTDIO_H=config/io/c_io_libio.h
1344 BASIC_FILE_H=config/io/basic_file_libio.h
1345 BASIC_FILE_CC=config/io/basic_file_libio.cc
1346 AC_MSG_RESULT(libio)
1348 # see if we are on a system with libio native (ie, linux)
1349 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1351 # Need to check and see what version of glibc is being used. If
1352 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1353 # compile most of libio for linux systems.
1354 if test x$has_libio = x"yes"; then
1357 AC_MSG_CHECKING([for glibc version >= 2.2])
1358 AC_EGREP_CPP([ok], [
1359 #include <features.h>
1360 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1363 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1364 AC_MSG_RESULT($glibc_satisfactory)
1368 # XXX at the moment, admit defeat and force the recompilation
1369 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1370 glibc_satisfactory=no
1372 if test x$glibc_satisfactory = x"yes"; then
1377 # bkoz XXX need to add checks to enable this
1378 # pme XXX here's a first pass at such a check
1379 if test x$enable_c_mbchar != xno; then
1387 # Using libio, but <libio.h> doesn't exist on the target system. . .
1389 # bkoz XXX need to add checks to enable this
1390 # pme XXX here's a first pass at such a check
1391 if test x$enable_c_mbchar != xno; then
1398 xstdio | x | xno | xnone | xyes)
1400 CSTDIO_H=config/io/c_io_stdio.h
1401 BASIC_FILE_H=config/io/basic_file_stdio.h
1402 BASIC_FILE_CC=config/io/basic_file_stdio.cc
1403 AC_MSG_RESULT(stdio)
1405 # We're not using stdio.
1410 echo "$enable_cstdio is an unknown io package" 1>&2
1415 AC_SUBST(BASIC_FILE_H)
1416 AC_SUBST(BASIC_FILE_CC)
1418 # 2000-08-04 bkoz hack
1419 CCODECVT_C=config/io/c_io_libio_codecvt.c
1420 AC_SUBST(CCODECVT_C)
1421 # 2000-08-04 bkoz hack
1423 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1424 test "$need_libio" = yes || test "$need_wlibio" = yes)
1425 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1426 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1427 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1428 libio_la=../libio/libio.la
1437 dnl Check to see if building and using a C++ precompiled header can be done.
1439 dnl GLIBCPP_CHECK_PCH
1441 dnl If it looks like it may work, flip bits on in include/Makefile.am
1443 AC_DEFUN(GLIBCPP_CHECK_PCH, [
1444 ac_test_CXXFLAGS="${CXXFLAGS+set}"
1445 ac_save_CXXFLAGS="$CXXFLAGS"
1446 CXXFLAGS='-Werror -Winvalid-pch -Wno-deprecated -x c++-header'
1448 AC_MSG_CHECKING([for compiler that seems to compile .gch files])
1449 if test x${glibcpp_pch_comp+set} != xset; then
1450 AC_CACHE_VAL(glibcpp_pch_comp, [
1453 AC_TRY_COMPILE([#include <math.h>
1456 [glibcpp_pch_comp=yes], [glibcpp_pch_comp=no])
1460 AC_MSG_RESULT([$glibcpp_pch_comp])
1462 CXXFLAGS="$ac_save_CXXFLAGS"
1463 AM_CONDITIONAL(GLIBCPP_BUILD_PCH, test "$glibcpp_pch_comp" = yes)
1467 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1468 dnl We must stage the required headers so that they will be installed
1469 dnl with the library (unlike libgcc, the STL implementation is provided
1470 dnl solely within headers). Since we must not inject random user-space
1471 dnl macro names into user-provided C++ code, we first stage into <file>-in
1472 dnl and process to <file> with an output command. The reason for a two-
1473 dnl stage process here is to correctly handle $srcdir!=$objdir without
1474 dnl having to write complex code (the sed commands to clean the macro
1475 dnl namespace are complex and fragile enough as it is). We must also
1476 dnl add a relative path so that -I- is supported properly.
1478 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1479 AC_MSG_CHECKING([for thread model used by GCC])
1480 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1481 AC_MSG_RESULT([$target_thread_file])
1483 if test $target_thread_file != single; then
1484 AC_DEFINE(HAVE_GTHR_DEFAULT)
1485 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1488 glibcpp_thread_h=gthr-$target_thread_file.h
1489 AC_SUBST(glibcpp_thread_h)
1494 dnl Check for exception handling support. If an explicit enable/disable
1495 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1496 dnl target may or may not support call frame exceptions.
1498 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1499 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1500 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1502 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1504 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1505 AC_MSG_CHECKING([for exception model to use])
1508 AC_ARG_ENABLE(sjlj-exceptions,
1509 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1511 [dnl Botheration. Now we've got to detect the exception model.
1512 dnl Link tests against libgcc.a are problematic since -- at least
1513 dnl as of this writing -- we've not been given proper -L bits for
1514 dnl single-tree newlib and libgloss.
1516 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1517 dnl conftest files before we got a change to grep them first.
1518 cat > conftest.$ac_ext << EOF
1519 [#]line __oline__ "configure"
1528 old_CXXFLAGS="$CXXFLAGS"
1530 if AC_TRY_EVAL(ac_compile); then
1531 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1532 enable_sjlj_exceptions=yes
1533 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1534 enable_sjlj_exceptions=no
1537 CXXFLAGS="$old_CXXFLAGS"
1539 if test x$enable_sjlj_exceptions = xyes; then
1540 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1541 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1542 ac_exception_model_name=sjlj
1543 elif test x$enable_sjlj_exceptions = xno; then
1544 ac_exception_model_name="call frame"
1546 AC_MSG_ERROR([unable to detect exception model])
1549 AC_MSG_RESULT($ac_exception_model_name)
1554 dnl Check for libunwind exception handling support. If enabled then
1555 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1556 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1557 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1558 dnl on libunwind as well as libgcc.
1560 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1561 dnl --enable-libunwind-exceptions forces the use of libunwind.
1562 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1564 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1566 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1567 AC_MSG_CHECKING([for use of libunwind])
1568 AC_ARG_ENABLE(libunwind-exceptions,
1569 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1570 use_libunwind_exceptions=$enableval,
1571 use_libunwind_exceptions=no)
1572 AC_MSG_RESULT($use_libunwind_exceptions)
1573 dnl Option parsed, now set things appropriately
1574 if test x"$use_libunwind_exceptions" = xyes; then
1575 LIBUNWIND_FLAG="-lunwind"
1579 AC_SUBST(LIBUNWIND_FLAG)
1583 dnl Check for ISO/IEC 9899:1999 "C99" support.
1585 dnl GLIBCPP_ENABLE_C99
1586 dnl --enable-c99 defines _GLIBCPP_USE_C99
1587 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1588 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1589 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1590 dnl defaults to `no'.
1591 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1593 dnl GLIBCPP_ENABLE_C99
1594 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1595 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1598 changequote(<<, >>)dnl
1599 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1600 changequote([, ])dnl
1601 [case "$enableval" in
1602 yes) enable_c99=yes ;;
1603 no) enable_c99=no ;;
1604 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1606 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1611 # Check for the existence of <math.h> functions used if C99 is enabled.
1613 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1614 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1615 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1616 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1617 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1618 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1619 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1620 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1621 AC_TRY_COMPILE([#include <math.h>],
1622 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1623 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1624 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1625 AC_TRY_COMPILE([#include <math.h>],
1626 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1627 AC_TRY_COMPILE([#include <math.h>],
1628 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1629 AC_MSG_RESULT($ac_c99_math)
1631 # Check for the existence in <stdio.h> of vscanf, et. al.
1633 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1634 AC_TRY_COMPILE([#include <stdio.h>],
1635 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1636 AC_TRY_COMPILE([#include <stdio.h>
1638 void foo(char* fmt, ...)
1639 {va_list args; va_start(args, fmt);
1640 vfscanf(stderr, "%i", args);}],
1641 [],, [ac_c99_stdio=no])
1642 AC_TRY_COMPILE([#include <stdio.h>
1644 void foo(char* fmt, ...)
1645 {va_list args; va_start(args, fmt);
1646 vscanf("%i", args);}],
1647 [],, [ac_c99_stdio=no])
1648 AC_TRY_COMPILE([#include <stdio.h>
1650 void foo(char* fmt, ...)
1651 {va_list args; va_start(args, fmt);
1652 vsnprintf(fmt, 0, "%i", args);}],
1653 [],, [ac_c99_stdio=no])
1654 AC_TRY_COMPILE([#include <stdio.h>
1656 void foo(char* fmt, ...)
1657 {va_list args; va_start(args, fmt);
1658 vsscanf(fmt, "%i", args);}],
1659 [],, [ac_c99_stdio=no])
1660 AC_MSG_RESULT($ac_c99_stdio)
1662 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1664 AC_MSG_CHECKING([for lldiv_t declaration])
1665 AC_CACHE_VAL(ac_c99_lldiv_t, [
1666 AC_TRY_COMPILE([#include <stdlib.h>],
1668 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1670 AC_MSG_RESULT($ac_c99_lldiv_t)
1672 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1673 AC_TRY_COMPILE([#include <stdlib.h>],
1674 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1675 AC_TRY_COMPILE([#include <stdlib.h>],
1676 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1677 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1678 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1679 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1680 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1681 if test x"$ac_c99_lldiv_t" = x"no"; then
1684 AC_MSG_RESULT($ac_c99_stdlib)
1686 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1687 # XXX the wchar.h checks should be rolled into the general C99 bits.
1689 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1690 AC_TRY_COMPILE([#include <wchar.h>],
1691 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1692 AC_TRY_COMPILE([#include <wchar.h>],
1693 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1694 AC_TRY_COMPILE([#include <wchar.h>],
1695 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1696 AC_MSG_RESULT($ac_c99_wchar)
1698 AC_MSG_CHECKING([for enabled ISO C99 support])
1699 if test x"$ac_c99_math" = x"no" ||
1700 test x"$ac_c99_stdio" = x"no" ||
1701 test x"$ac_c99_stdlib" = x"no" ||
1702 test x"$ac_c99_wchar" = x"no"; then
1705 AC_MSG_RESULT($enable_c99)
1707 # Option parsed, now set things appropriately
1708 if test x"$enable_c99" = x"yes"; then
1709 AC_DEFINE(_GLIBCPP_USE_C99)
1717 dnl Check for template specializations for the 'long long' type extension.
1718 dnl The result determines only whether 'long long' I/O is enabled; things
1719 dnl like numeric_limits<> specializations are always available.
1721 dnl GLIBCPP_ENABLE_LONG_LONG
1722 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1723 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1724 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1725 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1726 dnl defaults to `no'.
1727 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1729 dnl GLIBCPP_ENABLE_LONG_LONG
1730 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1731 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1733 AC_ARG_ENABLE(long-long,
1734 changequote(<<, >>)dnl
1735 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1736 changequote([, ])dnl
1737 [case "$enableval" in
1738 yes) enable_long_long=yes ;;
1739 no) enable_long_long=no ;;
1740 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1742 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1747 AC_MSG_CHECKING([for enabled long long I/O support])
1748 # iostreams require strtoll, strtoull to compile
1749 AC_TRY_COMPILE([#include <stdlib.h>],
1750 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1751 AC_TRY_COMPILE([#include <stdlib.h>],
1752 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1754 # Option parsed, now set things appropriately
1755 if test x"$enable_long_long" = xyes; then
1756 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1758 AC_MSG_RESULT($enable_long_long)
1765 dnl Check for what type of C headers to use.
1767 dnl GLIBCPP_ENABLE_CHEADERS
1768 dnl --enable-cheaders= [does stuff].
1769 dnl --disable-cheaders [does not do anything, really].
1770 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1771 dnl Where DEFAULT is either `c' or `c_std'.
1772 dnl If ommitted, it defaults to `c_std'.
1773 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1774 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1775 AC_MSG_CHECKING([for c header strategy to use])
1776 AC_ARG_ENABLE(cheaders,
1777 changequote(<<, >>)dnl
1778 << --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1780 [case "$enableval" in
1785 enable_cheaders=c_std
1787 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1790 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1791 AC_MSG_RESULT($enable_cheaders)
1793 dnl Option parsed, now set things appropriately
1794 case "$enable_cheaders" in
1796 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1799 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1803 AC_SUBST(C_INCLUDE_DIR)
1804 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1805 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1806 AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1811 dnl Check for wide character support. Has the same effect as the option
1812 dnl in gcc's configure, but in a form that autoconf can mess with.
1814 dnl GLIBCPP_ENABLE_C_MBCHAR
1815 dnl --enable-c-mbchar requests all the wchar_t stuff.
1816 dnl --disable-c-mbchar doesn't.
1817 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1818 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1819 dnl defaults to `no'.
1820 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1821 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1822 AC_ARG_ENABLE(c-mbchar,
1823 changequote(<<, >>)dnl
1824 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1825 changequote([, ])dnl
1826 [case "$enableval" in
1827 yes) enable_c_mbchar=yes ;;
1828 no) enable_c_mbchar=no ;;
1829 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1831 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1832 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1837 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1839 dnl TOPLEVEL_INCLUDES
1840 dnl LIBMATH_INCLUDES
1841 dnl LIBSUPCXX_INCLUDES
1844 dnl GLIBCPP_EXPORT_INCLUDES
1845 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1846 # Root level of the build directory include sources.
1847 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1849 # Passed down for canadian crosses.
1850 if test x"$CANADIAN" = xyes; then
1851 TOPLEVEL_INCLUDES='-I$(includedir)'
1854 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1856 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1858 if test x"$need_libio" = xyes; then
1859 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1860 AC_SUBST(LIBIO_INCLUDES)
1863 # Now, export this to all the little Makefiles....
1864 AC_SUBST(GLIBCPP_INCLUDES)
1865 AC_SUBST(TOPLEVEL_INCLUDES)
1866 AC_SUBST(LIBMATH_INCLUDES)
1867 AC_SUBST(LIBSUPCXX_INCLUDES)
1872 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1874 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1875 # Optimization flags that are probably a good idea for thrill-seekers. Just
1876 # uncomment the lines below and make, everything else is ready to go...
1877 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1879 AC_SUBST(OPTIMIZE_CXXFLAGS)
1881 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings'
1882 AC_SUBST(WARN_FLAGS)
1886 dnl GLIBCPP_EXPORT_INSTALL_INFO
1887 dnl calculates gxx_install_dir
1888 dnl exports glibcpp_toolexecdir
1889 dnl exports glibcpp_toolexeclibdir
1890 dnl exports glibcpp_prefixdir
1892 dnl Assumes cross_compiling bits already done, and with_cross_host in
1895 dnl GLIBCPP_EXPORT_INSTALL_INFO
1896 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1897 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1898 # exported correctly in GLIBCPP_CONFIGURE.
1899 glibcpp_toolexecdir=no
1900 glibcpp_toolexeclibdir=no
1901 glibcpp_prefixdir=${prefix}
1903 # Process the option --with-gxx-include-dir=<path to include-files directory>
1904 AC_MSG_CHECKING([for --with-gxx-include-dir])
1905 AC_ARG_WITH(gxx-include-dir,
1906 [ --with-gxx-include-dir the installation directory for include files],
1907 [case "${withval}" in
1909 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1916 gxx_include_dir=${withval}
1918 esac], [gxx_include_dir=no])
1919 AC_MSG_RESULT($gxx_include_dir)
1921 # Process the option "--enable-version-specific-runtime-libs"
1922 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1923 AC_ARG_ENABLE(version-specific-runtime-libs,
1924 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1925 [case "$enableval" in
1926 yes) version_specific_libs=yes ;;
1927 no) version_specific_libs=no ;;
1928 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1930 version_specific_libs=no)dnl
1931 # Option set, now we can test it.
1932 AC_MSG_RESULT($version_specific_libs)
1934 # Default case for install directory for include files.
1935 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1936 gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1939 # Version-specific runtime libs processing.
1940 if test $version_specific_libs = yes; then
1941 # Need the gcc compiler version to know where to install libraries
1942 # and header files if --enable-version-specific-runtime-libs option
1944 if test x"$gxx_include_dir" = x"no"; then
1945 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1947 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1948 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1951 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1952 # Install a library built with a cross compiler in tooldir, not libdir.
1953 if test x"$glibcpp_toolexecdir" = x"no"; then
1954 if test -n "$with_cross_host" &&
1955 test x"$with_cross_host" != x"no"; then
1956 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1957 glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1959 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1960 glibcpp_toolexeclibdir='$(libdir)'
1962 multi_os_directory=`$CC -print-multi-os-directory`
1963 case $multi_os_directory in
1964 .) ;; # Avoid trailing /.
1965 *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1969 AC_MSG_CHECKING([for install location])
1970 AC_MSG_RESULT($gxx_include_dir)
1972 AC_SUBST(glibcpp_prefixdir)
1973 AC_SUBST(gxx_include_dir)
1974 AC_SUBST(glibcpp_toolexecdir)
1975 AC_SUBST(glibcpp_toolexeclibdir)
1979 # Check for functions in math library.
1980 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1982 # This file can be copied and used freely without restrictions. It can
1983 # be used in projects which are not available under the GNU Public License
1984 # but which still want to provide support for the GNU gettext functionality.
1985 # Please note that the actual code is *not* freely available.
1989 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1990 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1991 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
1994 dnl This macro searches for a GNU version of make. If a match is found, the
1995 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1996 dnl set to "#". This is useful for including a special features in a Makefile,
1997 dnl which cannot be handled by other versions of make. The variable
1998 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1999 dnl the empty string otherwise.
2001 dnl Here is an example of its use:
2003 dnl Makefile.in might contain:
2005 dnl # A failsafe way of putting a dependency rule into a makefile
2007 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2009 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2010 dnl @ifGNUmake@ include $(DEPEND)
2011 dnl @ifGNUmake@ endif
2013 dnl Then configure.in would normally contain:
2015 dnl CHECK_GNU_MAKE()
2016 dnl AC_OUTPUT(Makefile)
2018 dnl Then perhaps to cause gnu make to override any other make, we could do
2019 dnl something like this (note that GNU make always looks for GNUmakefile first):
2021 dnl if ! test x$_cv_gnu_make_command = x ; then
2022 dnl mv Makefile GNUmakefile
2023 dnl echo .DEFAULT: > Makefile ;
2024 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
2027 dnl Then, if any (well almost any) other make is called, and GNU make also
2028 dnl exists, then the other make wraps the GNU make.
2030 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2031 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2033 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
2034 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2035 dnl #### conditional's subshell (" --version" is not a command), using a
2036 dnl #### different option to grep(1).
2038 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2039 dnl #### ${MAKE:-make}).
2042 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2043 _cv_gnu_make_command='' ;
2044 dnl Search all the common names for GNU make
2045 for a in "${MAKE-make}" make gmake gnumake ; do
2046 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2048 _cv_gnu_make_command=$a ;
2053 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2054 dnl string, '#' otherwise
2055 if test "x$_cv_gnu_make_command" != "x" ; then
2064 dnl Check for headers for, and arguments to, the setrlimit() function.
2065 dnl Used only in testsuite_hooks.h.
2066 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2067 AC_TRY_COMPILE([#include <unistd.h>
2068 #include <sys/time.h>
2069 #include <sys/resource.h>
2070 ], [ int f = RLIMIT_$1 ; ],
2071 [glibcpp_mresult=1], [glibcpp_mresult=0])
2072 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2073 [Only used in build directory testsuite_hooks.h.])
2075 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2076 setrlimit_have_headers=yes
2077 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2079 setrlimit_have_headers=no)
2080 # If don't have the headers, then we can't run the tests now, and we
2081 # won't be seeing any of these during testsuite compilation.
2082 if test $setrlimit_have_headers = yes; then
2083 # Can't do these in a loop, else the resulting syntax is wrong.
2084 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2085 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2086 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2087 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2089 # Check for rlimit, setrlimit.
2090 AC_CACHE_VAL(ac_setrlimit, [
2091 AC_TRY_COMPILE([#include <unistd.h>
2092 #include <sys/time.h>
2093 #include <sys/resource.h>
2095 [ struct rlimit r; setrlimit(0, &r);],
2096 [ac_setrlimit=yes], [ac_setrlimit=no])
2100 AC_MSG_CHECKING([for testsuite memory limit support])
2101 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2103 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2107 AC_MSG_RESULT($ac_mem_limits)
2112 dnl Does any necessary configuration of the testsuite directory. Generates
2113 dnl the testsuite_hooks.h header.
2115 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2116 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2117 GLIBCPP_CHECK_SETRLIMIT
2119 # Look for setenv, so that extended locale tests can be performed.
2120 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2122 # Export file names for ABI checking.
2123 baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2124 AC_SUBST(baseline_file)
2127 *-*-cygwin* ) enable_abi_check=no ;;
2128 * ) enable_abi_check=yes ;;
2131 # Don't do ABI checking unless native.
2132 AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2133 test x"$build" = x"$host" && test -z "$with_cross_host" \
2134 && test "$enable_abi_check" = yes )
2138 sinclude(../libtool.m4)
2139 dnl The lines below arrange for aclocal not to bring an installed
2140 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2141 dnl add a definition of LIBTOOL to Makefile.in.
2142 ifelse(,,,[AC_SUBST(LIBTOOL)
2143 AC_DEFUN([AM_PROG_LIBTOOL])
2144 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2145 AC_DEFUN([AC_PROG_LD])
2149 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2152 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2153 AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2154 AC_TRY_LINK([#include <sys/stat.h>],
2155 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2156 [glibcpp_cv_S_ISREG=yes],
2157 [glibcpp_cv_S_ISREG=no])
2159 AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2160 AC_TRY_LINK([#include <sys/stat.h>],
2161 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2162 [glibcpp_cv_S_IFREG=yes],
2163 [glibcpp_cv_S_IFREG=no])
2165 if test x$glibcpp_cv_S_ISREG = xyes; then
2166 AC_DEFINE(HAVE_S_ISREG)
2167 elif test x$glibcpp_cv_S_IFREG = xyes; then
2168 AC_DEFINE(HAVE_S_IFREG)
2173 dnl Check whether poll is available in <poll.h>.
2176 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2177 AC_CACHE_VAL(glibcpp_cv_POLL, [
2178 AC_TRY_COMPILE([#include <poll.h>],
2179 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2180 [glibcpp_cv_POLL=yes],
2181 [glibcpp_cv_POLL=no])
2183 if test x$glibcpp_cv_POLL = xyes; then
2184 AC_DEFINE(HAVE_POLL)
2188 # Check whether LC_MESSAGES is available in <locale.h>.
2189 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2191 # This file file be copied and used freely without restrictions. It can
2192 # be used in projects which are not available under the GNU Public License
2193 # but which still want to provide support for the GNU gettext functionality.
2194 # Please note that the actual code is *not* freely available.
2198 AC_DEFUN(AC_LC_MESSAGES, [
2199 AC_CHECK_HEADER(locale.h, [
2200 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2201 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2202 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2203 if test $ac_cv_val_LC_MESSAGES = yes; then
2204 AC_DEFINE(HAVE_LC_MESSAGES)
2211 dnl Check for whether the Boost-derived checks should be turned on.
2213 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2214 dnl --enable-concept-checks turns them on.
2215 dnl --disable-concept-checks leaves them off.
2216 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2217 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2218 dnl defaults to `no'.
2219 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2220 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2221 AC_ARG_ENABLE(concept-checks,
2222 changequote(<<, >>)dnl
2223 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2224 changequote([, ])dnl
2225 [case "$enableval" in
2226 yes) enable_concept_checks=yes ;;
2227 no) enable_concept_checks=no ;;
2228 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2230 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2231 dnl Option parsed, now set things appropriately
2232 if test x"$enable_concept_checks" = xyes; then
2233 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2239 dnl Add version tags to symbols in shared library (or not), additionally
2240 dnl marking other symbols as private/local (or not).
2242 dnl GLIBCPP_ENABLE_SYMVERS
2243 dnl --enable-symvers=style adds a version script to the linker call when
2244 dnl creating the shared library. The choice of version script is
2245 dnl controlled by 'style'.
2246 dnl --disable-symvers does not.
2247 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2248 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2249 dnl defaults to `no'. Passing `yes' tries to choose a default style
2250 dnl based on linker characteristics. Passing 'no' disables versioning.
2251 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2252 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2253 AC_ARG_ENABLE(symvers,
2254 changequote(<<, >>)dnl
2255 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2256 changequote([, ])dnl
2257 [case "$enableval" in
2258 yes) enable_symvers=yes ;;
2259 no) enable_symvers=no ;;
2260 # other names here, just as sanity checks
2261 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2262 gnu) enable_symvers=$enableval ;;
2263 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2265 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2267 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2268 # don't know enough about $LD to do tricks...
2269 if test x$enable_shared = xno ||
2271 test x$glibcpp_gnu_ld_version = x; then
2275 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2276 if test $enable_symvers != no; then
2277 AC_MSG_CHECKING([for shared libgcc])
2278 ac_save_CFLAGS="$CFLAGS"
2280 AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2281 CFLAGS="$ac_save_CFLAGS"
2282 AC_MSG_RESULT($glibcpp_shared_libgcc)
2285 # For GNU ld, we need at least this version. It's 2.12 in the same format
2286 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2287 glibcpp_min_gnu_ld_version=21200
2289 # Check to see if unspecified "yes" value can win, given results
2291 if test $enable_symvers = yes ; then
2292 if test $with_gnu_ld = yes &&
2293 test $glibcpp_shared_libgcc = yes ;
2295 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2298 ac_test_CFLAGS="${CFLAGS+set}"
2299 ac_save_CFLAGS="$CFLAGS"
2300 CFLAGS='-shared -Wl,--version-script,conftest.map'
2303 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2305 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2306 if test "$ac_test_CFLAGS" = set; then
2307 CFLAGS="$ac_save_CFLAGS"
2309 # this is the suspicious part
2320 dnl Everything parsed; figure out what file to use.
2321 case $enable_symvers in
2323 SYMVER_MAP=config/linker-map.dummy
2326 SYMVER_MAP=config/linker-map.gnu
2327 AC_DEFINE(_GLIBCPP_SYMVER)
2331 AC_SUBST(SYMVER_MAP)
2332 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2333 AC_MSG_CHECKING([versioning on shared library symbols])
2334 AC_MSG_RESULT($enable_symvers)