2 dnl Initialize configure bits.
5 AC_DEFUN(GLIBCPP_CONFIGURE, [
6 dnl Default to --enable-multilib
7 AC_ARG_ENABLE(multilib,
8 [ --enable-multilib build hella library versions (default)],
9 [case "${enableval}" in
12 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
13 esac], [multilib=yes])dnl
15 # When building with srcdir == objdir, links to the source files will
16 # be created in directories within the target_subdir. We have to
17 # adjust toplevel_srcdir accordingly, so that configure finds
18 # install-sh and other auxiliary files that live in the top-level
20 if test "${srcdir}" = "."; then
21 if test -z "${with_target_subdir}"; then
24 if test "${with_target_subdir}" != "."; then
25 toprel="${with_multisrctop}../.."
27 toprel="${with_multisrctop}.."
33 AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
34 toplevel_srcdir=\${top_srcdir}/$toprel
35 AC_SUBST(toplevel_srcdir)
37 # Export build and source directories.
38 # These need to be absolute paths, yet at the same time need to
39 # canonicalize only relative paths, because then amd will not unmount
40 # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
41 glibcpp_builddir=`${PWDCMD-pwd}`
43 [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
44 *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
46 AC_SUBST(glibcpp_builddir)
47 AC_SUBST(glibcpp_srcdir)
49 dnl This is here just to satisfy automake.
50 ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
53 # Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.5x, can also
54 # be 'cp -p' if linking isn't available.
55 #ac_cv_prog_LN_S='cp -p'
58 # We use these options to decide which functions to include.
59 AC_ARG_WITH(target-subdir,
60 [ --with-target-subdir=SUBDIR
61 configuring in a subdirectory])
62 AC_ARG_WITH(cross-host,
63 [ --with-cross-host=HOST configuring with a cross compiler])
65 glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
66 AC_SUBST(glibcpp_basedir)
68 # Never versions of autoconf add an underscore to these functions.
69 # Prevent future problems ...
70 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
71 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
72 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
73 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
76 # FIXME: We temporarily define our own version of AC_PROG_CC. This is
77 # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
78 # are probably using a cross compiler, which will not be able to fully
79 # link an executable. This is addressed in later versions of autoconf.
81 AC_DEFUN(LIB_AC_PROG_CC,
82 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
83 dnl Fool anybody using AC_PROG_CC.
84 AC_PROVIDE([AC_PROG_CC])
85 AC_CHECK_PROG(CC, gcc, gcc)
86 if test -z "$CC"; then
87 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
88 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
93 if test $ac_cv_prog_gcc = yes; then
95 dnl Check whether -g works, even if CFLAGS is set, in case the package
96 dnl plays around with CFLAGS (such as to build both debugging and
97 dnl normal versions of a library), tasteless as that idea is.
98 ac_test_CFLAGS="${CFLAGS+set}"
99 ac_save_CFLAGS="$CFLAGS"
102 if test "$ac_test_CFLAGS" = set; then
103 CFLAGS="$ac_save_CFLAGS"
104 elif test $ac_cv_prog_cc_g = yes; then
111 test "${CFLAGS+set}" = set || CFLAGS="-g"
117 # Likewise for AC_PROG_CXX. We can't just call it directly because g++
118 # will try to link in libstdc++.
119 AC_DEFUN(LIB_AC_PROG_CXX,
120 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
121 dnl Fool anybody using AC_PROG_CXX.
122 AC_PROVIDE([AC_PROG_CXX])
123 # Use glibcpp_CXX so that we do not cause CXX to be cached with the
124 # flags that come in CXX while configuring libstdc++. They're different
125 # from those used for all other target libraries. If CXX is set in
126 # the environment, respect that here.
128 AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
129 AC_SUBST(glibcpp_CXX)
131 test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
135 if test $ac_cv_prog_gxx = yes; then
137 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
138 dnl plays around with CXXFLAGS (such as to build both debugging and
139 dnl normal versions of a library), tasteless as that idea is.
140 ac_test_CXXFLAGS="${CXXFLAGS+set}"
141 ac_save_CXXFLAGS="$CXXFLAGS"
144 if test "$ac_test_CXXFLAGS" = set; then
145 CXXFLAGS="$ac_save_CXXFLAGS"
146 elif test $ac_cv_prog_cxx_g = yes; then
153 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
159 # For some reason, gettext needs this.
162 AC_CHECK_TOOL(AS, as)
163 AC_CHECK_TOOL(AR, ar)
164 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
169 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
170 # at least currently, we never actually build a program, so we never
171 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
172 # fails, because we are probably configuring with a cross compiler
173 # which can't create executables. So we include AC_EXEEXT to keep
174 # automake happy, but we don't execute it, since we don't care about
177 # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
178 # to nothing, so nothing would remain between `then' and `fi' if it
179 # were not for the `:' below.
184 . [$]{glibcpp_basedir}/configure.host
186 case [$]{glibcpp_basedir} in
187 /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
188 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
191 # This does for the target what configure.host does for the host. In
192 # addition to possibly modifying the same flags, it also sets up symlinks.
199 dnl Check to see if g++ can compile this library, and if so, if any version-
200 dnl specific precautions need to be taken.
202 dnl GLIBCPP_CHECK_COMPILER_VERSION
203 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
204 if test ! -f stamp-sanity-compiler; then
205 AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
212 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
214 AC_MSG_RESULT($gpp_satisfactory)
215 touch stamp-sanity-compiler
221 dnl Tests for newer compiler features, or features that are present in newer
222 dnl compiler versions but not older compiler versions still in use, should
225 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
226 dnl new inlining code or the new system_header pragma will die on -Werror.
227 dnl Leave it out by default and use maint-mode to use it.
229 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
230 dnl compiler supports it and the user has not requested debug mode.
232 dnl GLIBCPP_CHECK_COMPILER_FEATURES
233 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
234 # All these tests are for C++; save the language and the compiler flags.
235 # The CXXFLAGS thing is suspicious, but based on similar bits previously
236 # found in GLIBCPP_CONFIGURE.
239 ac_test_CXXFLAGS="${CXXFLAGS+set}"
240 ac_save_CXXFLAGS="$CXXFLAGS"
242 # Check for maintainer-mode bits.
243 if test x"$USE_MAINTAINER_MODE" = xno; then
249 # Check for -ffunction-sections -fdata-sections
250 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
251 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
252 AC_TRY_COMPILE(, [int foo;
253 ], [ac_fdsections=yes], [ac_fdsections=no])
254 if test "$ac_test_CXXFLAGS" = set; then
255 CXXFLAGS="$ac_save_CXXFLAGS"
257 # this is the suspicious part
260 if test x"$ac_fdsections" = x"yes" &&
261 test x"$enable_debug" = x"no"; then
262 SECTION_FLAGS='-ffunction-sections -fdata-sections'
264 AC_MSG_RESULT($ac_fdsections)
268 AC_SUBST(SECTION_FLAGS)
273 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
274 dnl the native linker is in use, all variables will be defined to something
275 dnl safe (like an empty string).
277 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
278 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
279 dnl Define LD, with_gnu_ld, and (possibly) glibcpp_gnu_ld_version as
280 dnl side-effects of testing.
282 dnl GLIBCPP_CHECK_LINKER_FEATURES
283 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
284 # If we're not using GNU ld, then there's no point in even trying these
285 # tests. Check for that first. We should have already tested for gld
286 # by now (in libtool), but require it now just to be safe...
287 test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
288 test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
289 AC_REQUIRE([AC_PROG_LD])
291 # The name set by libtool depends on the version of libtool. Shame on us
292 # for depending on an impl detail, but c'est la vie. Older versions used
293 # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
294 # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
295 # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
296 # set (hence we're using an older libtool), then set it.
297 if test x${with_gnu_ld+set} != xset; then
298 if test x${ac_cv_prog_gnu_ld+set} != xset; then
299 # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
302 with_gnu_ld=$ac_cv_prog_gnu_ld
306 # Start by getting the version number. I think the libtool test already
307 # does some of this, but throws away the result.
309 ldver=`$LD --version 2>/dev/null | head -1 | \
310 sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
312 glibcpp_gnu_ld_version=`echo $ldver | \
313 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
316 if test "$with_gnu_ld" = "notbroken"; then
317 # GNU ld it is! Joy and bunny rabbits!
319 # All these tests are for C++; save the language and the compiler flags.
320 # Need to do this so that g++ won't try to link in libstdc++
321 ac_test_CFLAGS="${CFLAGS+set}"
322 ac_save_CFLAGS="$CFLAGS"
323 CFLAGS='-x c++ -Wl,--gc-sections'
325 # Check for -Wl,--gc-sections
326 # XXX This test is broken at the moment, as symbols required for
327 # linking are now in libsupc++ (not built yet.....). In addition,
328 # this test has cored on solaris in the past. In addition,
329 # --gc-sections doesn't really work at the moment (keeps on discarding
330 # used sections, first .eh_frame and now some of the glibc sections for
331 # iconv). Bzzzzt. Thanks for playing, maybe next time.
332 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
340 ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
341 if test "$ac_test_CFLAGS" = set; then
342 CFLAGS="$ac_save_CFLAGS"
344 # this is the suspicious part
347 if test "$ac_sectionLDflags" = "yes"; then
348 SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
350 AC_MSG_RESULT($ac_sectionLDflags)
353 # Set linker optimization flags.
354 if test x"$with_gnu_ld" = x"yes" && test x"$enable_debug" = x"no"; then
355 OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
358 AC_SUBST(SECTION_LDFLAGS)
359 AC_SUBST(OPT_LDFLAGS)
364 dnl Check to see if the (math function) argument passed is
365 dnl declared when using the c++ compiler
366 dnl ASSUMES argument is a math function with ONE parameter
368 dnl GLIBCPP_CHECK_MATH_DECL_1
369 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
370 AC_MSG_CHECKING([for $1 declaration])
371 if test x${glibcpp_cv_func_$1_use+set} != xset; then
372 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
375 AC_TRY_COMPILE([#include <math.h>
381 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
385 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
389 dnl Check to see if the (math function) argument passed is
390 dnl 1) declared when using the c++ compiler
391 dnl 2) has "C" linkage
392 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
394 dnl Define HAVE_CARGF etc if "cargf" is declared and links
396 dnl argument 1 is name of function to check
398 dnl ASSUMES argument is a math function with ONE parameter
400 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
401 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
402 GLIBCPP_CHECK_MATH_DECL_1($1)
403 if test x$glibcpp_cv_func_$1_use = x"yes"; then
406 GLIBCPP_CHECK_MATH_DECL_1(_$1)
407 if test x$glibcpp_cv_func__$1_use = x"yes"; then
415 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
416 dnl of functions at once. It's an all-or-nothing check -- either
417 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
418 dnl Doing it this way saves significant configure time.
419 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
420 AC_MSG_CHECKING([for $1 functions])
421 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
424 AC_TRY_COMPILE([#include <math.h>],
425 [ `for x in $3; do echo "$x (0);"; done` ],
426 [glibcpp_cv_func_$2_use=yes],
427 [glibcpp_cv_func_$2_use=no])
429 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
430 if test x$glibcpp_cv_func_$2_use = x"yes"; then
436 dnl Check to see if the (math function) argument passed is
437 dnl declared when using the c++ compiler
438 dnl ASSUMES argument is a math function with TWO parameters
440 dnl GLIBCPP_CHECK_MATH_DECL_2
441 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
442 AC_MSG_CHECKING([for $1 declaration])
443 if test x${glibcpp_cv_func_$1_use+set} != xset; then
444 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
447 AC_TRY_COMPILE([#include <math.h>],
449 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
453 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
457 dnl Check to see if the (math function) argument passed is
458 dnl 1) declared when using the c++ compiler
459 dnl 2) has "C" linkage
461 dnl Define HAVE_CARGF etc if "cargf" is declared and links
463 dnl argument 1 is name of function to check
465 dnl ASSUMES argument is a math function with TWO parameters
467 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
468 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
469 GLIBCPP_CHECK_MATH_DECL_2($1)
470 if test x$glibcpp_cv_func_$1_use = x"yes"; then
473 GLIBCPP_CHECK_MATH_DECL_2(_$1)
474 if test x$glibcpp_cv_func__$1_use = x"yes"; then
482 dnl Check to see if the (math function) argument passed is
483 dnl declared when using the c++ compiler
484 dnl ASSUMES argument is a math function with THREE parameters
486 dnl GLIBCPP_CHECK_MATH_DECL_3
487 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
488 AC_MSG_CHECKING([for $1 declaration])
489 if test x${glibcpp_cv_func_$1_use+set} != xset; then
490 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
493 AC_TRY_COMPILE([#include <math.h>],
495 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
499 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
503 dnl Check to see if the (math function) argument passed is
504 dnl 1) declared when using the c++ compiler
505 dnl 2) has "C" linkage
507 dnl Define HAVE_CARGF etc if "cargf" is declared and links
509 dnl argument 1 is name of function to check
511 dnl ASSUMES argument is a math function with THREE parameters
513 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
514 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
515 GLIBCPP_CHECK_MATH_DECL_3($1)
516 if test x$glibcpp_cv_func_$1_use = x"yes"; then
519 GLIBCPP_CHECK_MATH_DECL_3(_$1)
520 if test x$glibcpp_cv_func__$1_use = x"yes"; then
528 dnl Check to see if the (stdlib function) argument passed is
529 dnl 1) declared when using the c++ compiler
530 dnl 2) has "C" linkage
532 dnl argument 1 is name of function to check
534 dnl ASSUMES argument is a math function with TWO parameters
536 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
537 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
538 AC_MSG_CHECKING([for $1 declaration])
539 if test x${glibcpp_cv_func_$1_use+set} != xset; then
540 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
543 AC_TRY_COMPILE([#include <stdlib.h>],
545 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
549 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
550 if test x$glibcpp_cv_func_$1_use = x"yes"; then
557 dnl Check to see if the (stdlib function) argument passed is
558 dnl 1) declared when using the c++ compiler
559 dnl 2) has "C" linkage
561 dnl argument 1 is name of function to check
563 dnl ASSUMES argument is a function with THREE parameters
565 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3
566 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
567 AC_MSG_CHECKING([for $1 declaration])
568 if test x${glibcpp_cv_func_$1_use+set} != xset; then
569 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
572 AC_TRY_COMPILE([#include <stdlib.h>],
574 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
578 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
579 if test x$glibcpp_cv_func_$1_use = x"yes"; then
586 dnl Because the builtins are picky picky picky about the arguments they take,
587 dnl do an explict linkage tests here.
588 dnl Check to see if the (math function) argument passed is
589 dnl 1) declared when using the c++ compiler
590 dnl 2) has "C" linkage
592 dnl Define HAVE_CARGF etc if "cargf" is declared and links
594 dnl argument 1 is name of function to check
596 dnl ASSUMES argument is a math function with ONE parameter
598 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
599 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
600 AC_MSG_CHECKING([for $1 declaration])
601 if test x${glibcpp_cv_func_$1_use+set} != xset; then
602 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
605 AC_TRY_COMPILE([#include <math.h>],
607 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
611 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
612 if test x$glibcpp_cv_func_$1_use = x"yes"; then
613 AC_MSG_CHECKING([for $1 linkage])
614 if test x${glibcpp_cv_func_$1_link+set} != xset; then
615 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
616 AC_TRY_LINK([#include <math.h>],
618 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
621 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
622 if test x$glibcpp_cv_func_$1_link = x"yes"; then
623 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
624 AC_DEFINE_UNQUOTED(${ac_tr_func})
631 dnl Check to see what builtin math functions are supported
633 dnl check for __builtin_abs
634 dnl check for __builtin_fabsf
635 dnl check for __builtin_fabs
636 dnl check for __builtin_fabl
637 dnl check for __builtin_labs
638 dnl check for __builtin_sqrtf
639 dnl check for __builtin_sqrtl
640 dnl check for __builtin_sqrt
641 dnl check for __builtin_sinf
642 dnl check for __builtin_sin
643 dnl check for __builtin_sinl
644 dnl check for __builtin_cosf
645 dnl check for __builtin_cos
646 dnl check for __builtin_cosl
648 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
649 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
650 dnl Test for builtin math functions.
651 dnl These are made in gcc/c-common.c
652 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
653 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
654 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
655 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
656 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
658 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
659 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
660 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
662 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
663 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
664 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
666 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
667 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
668 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
670 dnl There is, without a doubt, a more elegant way to have these
671 dnl names exported so that they won't be stripped out of acconfig.h by
672 dnl autoheader. I leave this as an exercise to somebody less frustrated
673 dnl than I.... please email the libstdc++ list if you can figure out a
674 dnl more elegant approach (see autoconf/acgen.m4 and specifically
675 dnl AC_CHECK_FUNC for things to steal.)
677 if test x$dummyvar = x"yes"; then
678 AC_DEFINE(HAVE___BUILTIN_ABS)
679 AC_DEFINE(HAVE___BUILTIN_LABS)
680 AC_DEFINE(HAVE___BUILTIN_COS)
681 AC_DEFINE(HAVE___BUILTIN_COSF)
682 AC_DEFINE(HAVE___BUILTIN_COSL)
683 AC_DEFINE(HAVE___BUILTIN_FABS)
684 AC_DEFINE(HAVE___BUILTIN_FABSF)
685 AC_DEFINE(HAVE___BUILTIN_FABSL)
686 AC_DEFINE(HAVE___BUILTIN_SIN)
687 AC_DEFINE(HAVE___BUILTIN_SINF)
688 AC_DEFINE(HAVE___BUILTIN_SINL)
689 AC_DEFINE(HAVE___BUILTIN_SQRT)
690 AC_DEFINE(HAVE___BUILTIN_SQRTF)
691 AC_DEFINE(HAVE___BUILTIN_SQRTL)
697 dnl Check to see what the underlying c library
698 dnl These checks need to do two things:
699 dnl 1) make sure the name is declared when using the c++ compiler
700 dnl 2) make sure the name has "C" linkage
701 dnl This might seem like overkill but experience has shown that it's not...
703 dnl Define HAVE_STRTOLD if "strtold" is declared and links
704 dnl Define HAVE_STRTOF if "strtof" is declared and links
705 dnl Define HAVE_DRAND48 if "drand48" is declared and links
707 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
708 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
709 ac_test_CXXFLAGS="${CXXFLAGS+set}"
710 ac_save_CXXFLAGS="$CXXFLAGS"
711 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
713 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
714 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
715 AC_CHECK_FUNCS(drand48)
717 CXXFLAGS="$ac_save_CXXFLAGS"
722 dnl Check to see what the underlying c library or math library is like.
723 dnl These checks need to do two things:
724 dnl 1) make sure the name is declared when using the c++ compiler
725 dnl 2) make sure the name has "C" linkage
726 dnl This might seem like overkill but experience has shown that it's not...
728 dnl Define HAVE_CARGF etc if "cargf" is found.
730 dnl GLIBCPP_CHECK_MATH_SUPPORT
731 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
732 ac_test_CXXFLAGS="${CXXFLAGS+set}"
733 ac_save_CXXFLAGS="$CXXFLAGS"
734 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
737 AC_CHECK_LIB(m, sin, libm="-lm")
741 dnl Check to see if certain C math functions exist.
742 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
743 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
744 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
745 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
746 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
747 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
748 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
749 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
751 dnl Check to see if basic C math functions have float versions.
752 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
757 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
760 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
761 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
762 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
763 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
764 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
765 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
766 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
767 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
768 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
769 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
770 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
771 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
772 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
773 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
774 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
775 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
777 dnl Check to see if basic C math functions have long double versions.
778 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
783 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
786 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
787 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
788 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
789 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
790 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
791 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
792 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
793 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
794 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
795 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
796 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
797 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
798 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
799 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
800 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
801 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
802 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
804 dnl Some runtimes have these functions with a preceding underscore. Please
805 dnl keep this sync'd with the one above. And if you add any new symbol,
806 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
807 dnl Check to see if certain C math functions exist.
809 dnl Check to see if basic C math functions have float versions.
810 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
812 _acosf _asinf _atanf \
814 _coshf _sinhf _tanhf)
815 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
819 dnl Check to see if basic C math functions have long double versions.
820 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
822 _acosl _asinl _atanl \
824 _coshl _sinhl _tanhl)
825 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
830 CXXFLAGS="$ac_save_CXXFLAGS"
835 dnl Check to see if there is native support for complex
837 dnl Don't compile bits in math/* if native support exits.
839 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
841 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
842 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
843 dnl Check for complex versions of math functions of platform.
844 AC_CHECK_LIB(m, main)
845 AC_REPLACE_MATHFUNCS(nan copysignf)
847 dnl For __signbit to signbit conversions.
848 AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
849 AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
851 dnl Compile the long double complex functions only if the function
852 dnl provides the non-complex long double functions that are needed.
853 dnl Currently this includes copysignl, which should be
854 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
855 if test x$ac_cv_func_copysignl = x"yes"; then
856 AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
859 AC_SUBST(LIBMATHOBJS)
863 dnl Check to see what architecture and operating system we are compiling
864 dnl for. Also, if architecture- or OS-specific flags are required for
865 dnl compilation, pick them up here.
867 dnl GLIBCPP_CHECK_TARGET
868 AC_DEFUN(GLIBCPP_CHECK_TARGET, [
869 . [$]{glibcpp_basedir}/configure.target
870 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
871 AC_MSG_RESULT(OS config directory is $os_include_dir)
876 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
877 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
878 dnl must have been previously checked.)
880 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
881 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
883 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
884 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
886 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
887 dnl others even if wchar_t support is not on.
888 AC_MSG_CHECKING([for mbstate_t])
889 AC_TRY_COMPILE([#include <wchar.h>],
890 [mbstate_t teststate;],
891 have_mbstate_t=yes, have_mbstate_t=no)
892 AC_MSG_RESULT($have_mbstate_t)
893 if test x"$have_mbstate_t" = xyes; then
894 AC_DEFINE(HAVE_MBSTATE_T)
897 dnl Sanity check for existence of ISO C99 headers for extended encoding.
898 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
899 AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
901 dnl Only continue checking if the ISO C99 headers exist and support is on.
902 if test x"$ac_has_wchar_h" = xyes &&
903 test x"$ac_has_wctype_h" = xyes &&
904 test x"$enable_c_mbchar" != xno; then
906 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
907 dnl numeric_limits can instantiate type_traits<wchar_t>
908 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
909 AC_TRY_COMPILE([#include <wchar.h>],
910 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
911 has_wchar_minmax=yes, has_wchar_minmax=no)
912 AC_MSG_RESULT($has_wchar_minmax)
914 dnl Test wchar.h for WEOF, which is what we use to determine whether
915 dnl to specialize for char_traits<wchar_t> or not.
916 AC_MSG_CHECKING([for WEOF])
919 #include <stddef.h>],
921 has_weof=yes, has_weof=no)
922 AC_MSG_RESULT($has_weof)
924 dnl Tests for wide character functions used in char_traits<wchar_t>.
926 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
929 dnl Checks for names injected into std:: by the c_std headers.
930 AC_CHECK_FUNCS(btowc wctob fgetwc fgetwc fgetws fputwc fputws fwide \
931 fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
932 vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
933 mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
934 wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
935 wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
938 AC_MSG_CHECKING([for ISO C99 wchar_t support])
939 if test x"$has_weof" = xyes &&
940 test x"$has_wchar_minmax" = xyes &&
941 test x"$ac_wfuncs" = xyes; then
942 ac_isoC99_wchar_t=yes
946 AC_MSG_RESULT($ac_isoC99_wchar_t)
948 dnl Use iconv for wchar_t to char conversions. As such, check for
949 dnl X/Open Portability Guide, version 2 features (XPG2).
950 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
951 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
953 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
954 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
956 LIBS="$LIBS $libiconv"
958 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
959 ac_XPG2funcs=yes, ac_XPG2funcs=no)
963 AC_MSG_CHECKING([for XPG2 wchar_t support])
964 if test x"$ac_has_iconv_h" = xyes &&
965 test x"$ac_has_langinfo_h" = xyes &&
966 test x"$ac_XPG2funcs" = xyes; then
971 AC_MSG_RESULT($ac_XPG2_wchar_t)
973 dnl At the moment, only enable wchar_t specializations if all the
974 dnl above support is present.
975 AC_MSG_CHECKING([for enabled wchar_t specializations])
976 if test x"$ac_isoC99_wchar_t" = xyes &&
977 test x"$ac_XPG2_wchar_t" = xyes; then
978 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
984 dnl Wide characters disabled by the user.
985 AC_MSG_WARN([wchar_t support disabled.])
991 dnl Check for special debugging mode; not for production use.
993 dnl GLIBCPP_ENABLE_DEBUG
994 dnl --enable-debug sets '-ggdb3 -O0'.
995 dnl --disable-debug sets '-g' and whatever optimization options the
996 dnl compiler can handle.
997 dnl + --enable-maintainer-mode automatically defaults this to on.
998 dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
999 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1000 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1001 dnl defaults to `no'.
1002 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1003 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1004 AC_ARG_ENABLE(debug,
1005 changequote(<<, >>)dnl
1006 << --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1007 changequote([, ])dnl
1008 [case "${enableval}" in
1009 yes) enable_debug=yes ;;
1010 no) enable_debug=no ;;
1011 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1013 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
1015 dnl Option parsed, now set things appropriately
1016 case "${enable_debug}" in
1018 DEBUG_FLAGS='-O0 -ggdb3'
1024 AC_SUBST(DEBUG_FLAGS)
1029 dnl Check for "unusual" flags to pass to the compiler while building.
1031 dnl GLIBCPP_ENABLE_CXX_FLAGS
1032 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1033 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1034 dnl Somehow this same set of flags must be passed when [re]building
1036 dnl --disable-cxx-flags passes nothing.
1037 dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
1038 dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
1039 dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
1040 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
1041 dnl If "default flags" is an empty string (or "none"), the effect is
1042 dnl the same as --disable or --enable=no.
1043 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1044 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1045 AC_ARG_ENABLE(cxx-flags,
1046 changequote(<<, >>)dnl
1047 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
1048 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1049 changequote([, ])dnl
1050 [case "x$enableval" in
1052 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1054 enable_cxx_flags='' ;;
1056 enable_cxx_flags="$enableval" ;;
1058 enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
1060 dnl Thinko on my part during design. This kludge is the workaround.
1061 if test "$enable_cxx_flags" = "none"; then
1062 enable_cxx_flags='';
1065 dnl Run through flags (either default or command-line) and set anything
1066 dnl extra (e.g., #defines) that must accompany particular g++ options.
1067 if test -n "$enable_cxx_flags"; then
1068 for f in $enable_cxx_flags; do
1072 *) # and we're trying to pass /what/ exactly?
1073 AC_MSG_ERROR([compiler flags start with a -]) ;;
1077 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1078 AC_SUBST(EXTRA_CXX_FLAGS)
1083 dnl Check for which locale library to use: gnu or generic.
1085 dnl GLIBCPP_ENABLE_CLOCALE
1086 dnl --enable-clocale=gnu sets config/locale/c_locale_gnu.cc and friends
1087 dnl --enable-clocale=generic sets config/locale/c_locale_generic.cc and friends
1089 dnl default is generic
1091 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1092 AC_MSG_CHECKING([for clocale to use])
1093 AC_ARG_ENABLE(clocale,
1094 [ --enable-clocale enable model for target locale package.
1095 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
1097 if test x$enable_clocale = xno; then
1102 enable_clocale_flag=$enable_clocale
1104 dnl Probe for locale support if no specific model is specified.
1105 dnl Default to "generic"
1106 if test x$enable_clocale_flag = xno; then
1107 case x${target_os} in
1109 AC_EGREP_CPP([_GLIBCPP_ok], [
1110 #include <features.h>
1111 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1114 ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
1116 # Test for bugs early in glibc-2.2.x series
1117 if test x$enable_clocale_flag = xgnu; then
1119 #define _GNU_SOURCE 1
1123 const char __one[] = "Äuglein Augmen";
1124 const char __two[] = "Äuglein";
1129 loc = __newlocale(1 << LC_ALL, "de_DE", 0);
1130 loc_dup = __duplocale(loc);
1131 i = __strcoll_l(__one, __two, loc);
1132 j = __strcoll_l(__one, __two, loc_dup);
1136 [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
1137 [enable_clocale_flag=generic])
1140 # ... at some point put __strxfrm_l tests in as well.
1143 enable_clocale_flag=generic
1148 dnl Deal with gettext issues.
1150 [ --enable-nls use Native Language Support (default)],
1154 dnl Set configure bits for specified locale package
1155 case x${enable_clocale_flag} in
1157 AC_MSG_RESULT(generic)
1159 CLOCALE_H=config/locale/generic/c_locale.h
1160 CLOCALE_CC=config/locale/generic/c_locale.cc
1161 CCODECVT_H=config/locale/generic/codecvt_specializations.h
1162 CCOLLATE_CC=config/locale/generic/collate_members.cc
1163 CCTYPE_CC=config/locale/generic/ctype_members.cc
1164 CMESSAGES_H=config/locale/generic/messages_members.h
1165 CMESSAGES_CC=config/locale/generic/messages_members.cc
1166 CMONEY_CC=config/locale/generic/monetary_members.cc
1167 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1168 CTIME_CC=config/locale/generic/time_members.cc
1173 # Declare intention to use gettext, and add support for specific
1175 # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
1178 # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
1179 AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
1180 if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
1183 # Export the build objects.
1184 for ling in $ALL_LINGUAS; do \
1185 glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \
1186 glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \
1188 AC_SUBST(glibcpp_MOFILES)
1189 AC_SUBST(glibcpp_POFILES)
1191 CLOCALE_H=config/locale/gnu/c_locale.h
1192 CLOCALE_CC=config/locale/gnu/c_locale.cc
1193 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1194 CCOLLATE_CC=config/locale/gnu/collate_members.cc
1195 CCTYPE_CC=config/locale/gnu/ctype_members.cc
1196 CMESSAGES_H=config/locale/gnu/messages_members.h
1197 CMESSAGES_CC=config/locale/gnu/messages_members.cc
1198 CMONEY_CC=config/locale/gnu/monetary_members.cc
1199 CNUMERIC_CC=config/locale/gnu/numeric_members.cc
1200 CTIME_CC=config/locale/gnu/time_members.cc
1203 AC_MSG_RESULT(generic)
1205 CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
1206 CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
1207 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1208 CCOLLATE_CC=config/locale/generic/collate_members.cc
1209 CCTYPE_CC=config/locale/generic/ctype_members.cc
1210 CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
1211 CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
1212 CMONEY_CC=config/locale/generic/monetary_members.cc
1213 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1214 CTIME_CC=config/locale/generic/time_members.cc
1217 echo "$enable_clocale is an unknown locale package" 1>&2
1222 # This is where the testsuite looks for locale catalogs, using the
1223 # -DLOCALEDIR define during testsuite compilation.
1224 glibcpp_localedir=${glibcpp_builddir}/po/share/locale
1225 AC_SUBST(glibcpp_localedir)
1229 AC_SUBST(CCODECVT_H)
1230 AC_SUBST(CMESSAGES_H)
1231 AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
1232 AC_LINK_FILES($CCOLLATE_CC, src/collate.cc)
1233 AC_LINK_FILES($CCTYPE_CC, src/ctype.cc)
1234 AC_LINK_FILES($CMESSAGES_CC, src/messages.cc)
1235 AC_LINK_FILES($CMONEY_CC, src/monetary.cc)
1236 AC_LINK_FILES($CNUMERIC_CC, src/numeric.cc)
1237 AC_LINK_FILES($CTIME_CC, src/time.cc)
1242 dnl Check for which I/O library to use: libio, or something specific.
1244 dnl GLIBCPP_ENABLE_CSTDIO
1245 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1247 dnl default is stdio
1249 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1250 AC_MSG_CHECKING([for cstdio to use])
1251 AC_ARG_ENABLE(cstdio,
1252 [ --enable-cstdio enable stdio for target io package.
1253 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1255 if test x$enable_cstdio = xno; then
1258 enable_cstdio=stdio)
1260 enable_cstdio_flag=$enable_cstdio
1262 dnl Check if a valid I/O package
1263 case x${enable_cstdio_flag} in
1265 CSTDIO_H=config/io/c_io_libio.h
1266 BASIC_FILE_H=config/io/basic_file_libio.h
1267 BASIC_FILE_CC=config/io/basic_file_libio.cc
1268 AC_MSG_RESULT(libio)
1270 # see if we are on a system with libio native (ie, linux)
1271 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1273 # Need to check and see what version of glibc is being used. If
1274 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1275 # compile most of libio for linux systems.
1276 if test x$has_libio = x"yes"; then
1279 AC_MSG_CHECKING([for glibc version >= 2.2])
1280 AC_EGREP_CPP([ok], [
1281 #include <features.h>
1282 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1285 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1286 AC_MSG_RESULT($glibc_satisfactory)
1290 # XXX at the moment, admit defeat and force the recompilation
1291 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1292 glibc_satisfactory=no
1294 if test x$glibc_satisfactory = x"yes"; then
1299 # bkoz XXX need to add checks to enable this
1300 # pme XXX here's a first pass at such a check
1301 if test x$enable_c_mbchar != xno; then
1309 # Using libio, but <libio.h> doesn't exist on the target system. . .
1311 # bkoz XXX need to add checks to enable this
1312 # pme XXX here's a first pass at such a check
1313 if test x$enable_c_mbchar != xno; then
1320 xstdio | x | xno | xnone | xyes)
1322 CSTDIO_H=config/io/c_io_stdio.h
1323 BASIC_FILE_H=config/io/basic_file_stdio.h
1324 BASIC_FILE_CC=config/io/basic_file_stdio.cc
1325 AC_MSG_RESULT(stdio)
1327 # We're not using stdio.
1332 echo "$enable_cstdio is an unknown io package" 1>&2
1337 AC_SUBST(BASIC_FILE_H)
1338 AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
1340 # 2000-08-04 bkoz hack
1341 CCODECVT_C=config/io/c_io_libio_codecvt.c
1342 AC_SUBST(CCODECVT_C)
1343 # 2000-08-04 bkoz hack
1345 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1346 test "$need_libio" = yes || test "$need_wlibio" = yes)
1347 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1348 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1349 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1350 libio_la=../libio/libio.la
1359 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1360 dnl We must stage the required headers so that they will be installed
1361 dnl with the library (unlike libgcc, the STL implementation is provided
1362 dnl solely within headers). Since we must not inject random user-space
1363 dnl macro names into user-provided C++ code, we first stage into <file>-in
1364 dnl and process to <file> with an output command. The reason for a two-
1365 dnl stage process here is to correctly handle $srcdir!=$objdir without
1366 dnl having to write complex code (the sed commands to clean the macro
1367 dnl namespace are complex and fragile enough as it is). We must also
1368 dnl add a relative path so that -I- is supported properly.
1370 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1371 AC_MSG_CHECKING([for thread model used by GCC])
1372 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1373 AC_MSG_RESULT([$target_thread_file])
1375 if test $target_thread_file != single; then
1376 AC_DEFINE(HAVE_GTHR_DEFAULT)
1377 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1380 glibcpp_thread_h=gthr-$target_thread_file.h
1381 AC_SUBST(glibcpp_thread_h)
1386 dnl Check for exception handling support. If an explicit enable/disable
1387 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1388 dnl target may or may not support call frame exceptions.
1390 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1391 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1392 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1394 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1396 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1397 AC_MSG_CHECKING([for exception model to use])
1400 AC_ARG_ENABLE(sjlj-exceptions,
1401 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1403 [dnl Botheration. Now we've got to detect the exception model.
1404 dnl Link tests against libgcc.a are problematic since -- at least
1405 dnl as of this writing -- we've not been given proper -L bits for
1406 dnl single-tree newlib and libgloss.
1408 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1409 dnl conftest files before we got a change to grep them first.
1410 cat > conftest.$ac_ext << EOF
1411 [#]line __oline__ "configure"
1420 old_CXXFLAGS="$CXXFLAGS"
1422 if AC_TRY_EVAL(ac_compile); then
1423 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1424 enable_sjlj_exceptions=yes
1425 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1426 enable_sjlj_exceptions=no
1429 CXXFLAGS="$old_CXXFLAGS"
1431 if test x$enable_sjlj_exceptions = xyes; then
1432 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1433 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1434 ac_exception_model_name=sjlj
1435 elif test x$enable_sjlj_exceptions = xno; then
1436 ac_exception_model_name="call frame"
1438 AC_MSG_ERROR([unable to detect exception model])
1441 AC_MSG_RESULT($ac_exception_model_name)
1446 dnl Check for libunwind exception handling support. If enabled then
1447 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1448 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1449 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1450 dnl on libunwind as well as libgcc.
1452 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1453 dnl --enable-libunwind-exceptions forces the use of libunwind.
1454 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1456 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1458 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1459 AC_MSG_CHECKING([for use of libunwind])
1460 AC_ARG_ENABLE(libunwind-exceptions,
1461 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1462 use_libunwind_exceptions=$enableval,
1463 use_libunwind_exceptions=no)
1464 AC_MSG_RESULT($use_libunwind_exceptions)
1465 dnl Option parsed, now set things appropriately
1466 if test x"$use_libunwind_exceptions" = xyes; then
1467 LIBUNWIND_FLAG="-lunwind"
1471 AC_SUBST(LIBUNWIND_FLAG)
1475 dnl Check for ISO/IEC 9899:1999 "C99" support.
1477 dnl GLIBCPP_ENABLE_C99
1478 dnl --enable-c99 defines _GLIBCPP_USE_C99
1479 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1480 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1481 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1482 dnl defaults to `no'.
1483 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1485 dnl GLIBCPP_ENABLE_C99
1486 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1487 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1490 changequote(<<, >>)dnl
1491 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1492 changequote([, ])dnl
1493 [case "$enableval" in
1494 yes) enable_c99=yes ;;
1495 no) enable_c99=no ;;
1496 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1498 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1503 # Check for the existence of <math.h> functions used if C99 is enabled.
1505 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1506 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1507 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1508 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1509 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1510 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1511 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1512 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1513 AC_TRY_COMPILE([#include <math.h>],
1514 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1515 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1516 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1517 AC_TRY_COMPILE([#include <math.h>],
1518 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1519 AC_TRY_COMPILE([#include <math.h>],
1520 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1521 AC_MSG_RESULT($ac_c99_math)
1523 # Check for the existence in <stdio.h> of vscanf, et. al.
1525 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1526 AC_TRY_COMPILE([#include <stdio.h>],
1527 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1528 AC_TRY_COMPILE([#include <stdio.h>
1530 void foo(char* fmt, ...)
1531 {va_list args; va_start(args, fmt);
1532 vfscanf(stderr, "%i", args);}],
1533 [],, [ac_c99_stdio=no])
1534 AC_TRY_COMPILE([#include <stdio.h>
1536 void foo(char* fmt, ...)
1537 {va_list args; va_start(args, fmt);
1538 vscanf("%i", args);}],
1539 [],, [ac_c99_stdio=no])
1540 AC_TRY_COMPILE([#include <stdio.h>
1542 void foo(char* fmt, ...)
1543 {va_list args; va_start(args, fmt);
1544 vsnprintf(fmt, 0, "%i", args);}],
1545 [],, [ac_c99_stdio=no])
1546 AC_TRY_COMPILE([#include <stdio.h>
1548 void foo(char* fmt, ...)
1549 {va_list args; va_start(args, fmt);
1550 vsscanf(fmt, "%i", args);}],
1551 [],, [ac_c99_stdio=no])
1552 AC_MSG_RESULT($ac_c99_stdio)
1554 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1556 AC_MSG_CHECKING([for lldiv_t declaration])
1557 AC_CACHE_VAL(ac_c99_lldiv_t, [
1558 AC_TRY_COMPILE([#include <stdlib.h>],
1560 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1562 AC_MSG_RESULT($ac_c99_lldiv_t)
1564 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1565 AC_TRY_COMPILE([#include <stdlib.h>],
1566 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1567 AC_TRY_COMPILE([#include <stdlib.h>],
1568 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1569 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1570 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1571 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1572 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1573 if test x"$ac_c99_lldiv_t" = x"no"; then
1576 AC_MSG_RESULT($ac_c99_stdlib)
1578 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1579 # XXX the wchar.h checks should be rolled into the general C99 bits.
1581 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1582 AC_TRY_COMPILE([#include <wchar.h>],
1583 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1584 AC_TRY_COMPILE([#include <wchar.h>],
1585 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1586 AC_TRY_COMPILE([#include <wchar.h>],
1587 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1588 AC_MSG_RESULT($ac_c99_wchar)
1590 AC_MSG_CHECKING([for enabled ISO C99 support])
1591 if test x"$ac_c99_math" = x"no" ||
1592 test x"$ac_c99_stdio" = x"no" ||
1593 test x"$ac_c99_stdlib" = x"no" ||
1594 test x"$ac_c99_wchar" = x"no"; then
1597 AC_MSG_RESULT($enable_c99)
1599 # Option parsed, now set things appropriately
1600 if test x"$enable_c99" = x"yes"; then
1601 AC_DEFINE(_GLIBCPP_USE_C99)
1609 dnl Check for template specializations for the 'long long' type extension.
1610 dnl The result determines only whether 'long long' I/O is enabled; things
1611 dnl like numeric_limits<> specializations are always available.
1613 dnl GLIBCPP_ENABLE_LONG_LONG
1614 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1615 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1616 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1617 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1618 dnl defaults to `no'.
1619 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1621 dnl GLIBCPP_ENABLE_LONG_LONG
1622 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1623 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1625 AC_ARG_ENABLE(long-long,
1626 changequote(<<, >>)dnl
1627 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1628 changequote([, ])dnl
1629 [case "$enableval" in
1630 yes) enable_long_long=yes ;;
1631 no) enable_long_long=no ;;
1632 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1634 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1639 AC_MSG_CHECKING([for enabled long long I/O support])
1640 # iostreams require strtoll, strtoull to compile
1641 AC_TRY_COMPILE([#include <stdlib.h>],
1642 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1643 AC_TRY_COMPILE([#include <stdlib.h>],
1644 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1646 # Option parsed, now set things appropriately
1647 if test x"$enable_long_long" = xyes; then
1648 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1650 AC_MSG_RESULT($enable_long_long)
1657 dnl Check for what kind of C headers to use.
1659 dnl GLIBCPP_ENABLE_CHEADERS
1660 dnl --enable-cheaders= [does stuff].
1661 dnl --disable-cheaders [does not do anything, really].
1662 dnl + This will eventually need to be 'c_shadow' by default.
1663 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1664 dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
1665 dnl If ommitted, it defaults to `c_std'.
1666 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1667 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1668 AC_MSG_CHECKING([for c header strategy to use])
1669 AC_ARG_ENABLE(cheaders,
1670 changequote(<<, >>)dnl
1671 << --enable-cheaders construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1673 [case "$enableval" in
1678 enable_cheaders=c_std
1681 enable_cheaders=c_shadow
1683 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1686 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1687 AC_MSG_RESULT($enable_cheaders)
1689 dnl Option parsed, now set things appropriately
1690 case "$enable_cheaders" in
1692 CSHADOW_FLAGS="-fno-builtin"
1693 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow'
1697 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1701 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1705 AC_SUBST(CSHADOW_FLAGS)
1706 AC_SUBST(C_INCLUDE_DIR)
1707 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1708 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1713 dnl Check for wide character support. Has the same effect as the option
1714 dnl in gcc's configure, but in a form that autoconf can mess with.
1716 dnl GLIBCPP_ENABLE_C_MBCHAR
1717 dnl --enable-c-mbchar requests all the wchar_t stuff.
1718 dnl --disable-c-mbchar doesn't.
1719 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1720 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1721 dnl defaults to `no'.
1722 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1723 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1724 AC_ARG_ENABLE(c-mbchar,
1725 changequote(<<, >>)dnl
1726 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1727 changequote([, ])dnl
1728 [case "$enableval" in
1729 yes) enable_c_mbchar=yes ;;
1730 no) enable_c_mbchar=no ;;
1731 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1733 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1734 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1739 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1741 dnl TOPLEVEL_INCLUDES
1742 dnl LIBMATH_INCLUDES
1743 dnl LIBSUPCXX_INCLUDES
1745 dnl CSHADOW_INCLUDES
1747 dnl GLIBCPP_EXPORT_INCLUDES
1748 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1749 # Root level of the build directory include sources.
1750 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1752 # Passed down for canadian crosses.
1753 if test x"$CANADIAN" = xyes; then
1754 TOPLEVEL_INCLUDES='-I$(includedir)'
1757 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1759 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1761 if test x"$need_libio" = xyes; then
1762 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1763 AC_SUBST(LIBIO_INCLUDES)
1766 # Now, export this to all the little Makefiles....
1767 AC_SUBST(GLIBCPP_INCLUDES)
1768 AC_SUBST(TOPLEVEL_INCLUDES)
1769 AC_SUBST(LIBMATH_INCLUDES)
1770 AC_SUBST(LIBSUPCXX_INCLUDES)
1775 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1777 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1778 # Optimization flags that are probably a good idea for thrill-seekers. Just
1779 # uncomment the lines below and make, everything else is ready to go...
1780 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1782 AC_SUBST(OPTIMIZE_CXXFLAGS)
1784 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1785 AC_SUBST(WARN_FLAGS)
1789 dnl GLIBCPP_EXPORT_INSTALL_INFO
1790 dnl calculates gxx_install_dir
1791 dnl exports glibcpp_toolexecdir
1792 dnl exports glibcpp_toolexeclibdir
1793 dnl exports glibcpp_prefixdir
1795 dnl Assumes cross_compiling bits already done, and with_cross_host in
1798 dnl GLIBCPP_EXPORT_INSTALL_INFO
1799 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1800 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1801 # exported correctly in GLIBCPP_CONFIGURE.
1802 glibcpp_toolexecdir=no
1803 glibcpp_toolexeclibdir=no
1804 glibcpp_prefixdir=${prefix}
1806 AC_MSG_CHECKING([for interface version number])
1807 libstdcxx_interface=$INTERFACE
1808 AC_MSG_RESULT($libstdcxx_interface)
1810 # Process the option --with-gxx-include-dir=<path to include-files directory>
1811 AC_MSG_CHECKING([for --with-gxx-include-dir])
1812 AC_ARG_WITH(gxx-include-dir,
1813 [ --with-gxx-include-dir the installation directory for include files],
1814 [case "${withval}" in
1816 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1823 gxx_include_dir=${withval}
1825 esac], [gxx_include_dir=no])
1826 AC_MSG_RESULT($gxx_include_dir)
1828 # Process the option "--enable-version-specific-runtime-libs"
1829 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1830 AC_ARG_ENABLE(version-specific-runtime-libs,
1831 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1832 [case "$enableval" in
1833 yes) version_specific_libs=yes ;;
1834 no) version_specific_libs=no ;;
1835 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1837 version_specific_libs=no)dnl
1838 # Option set, now we can test it.
1839 AC_MSG_RESULT($version_specific_libs)
1841 if test $version_specific_libs = yes; then
1842 # Need the gcc compiler version to know where to install libraries
1843 # and header files if --enable-version-specific-runtime-libs option
1846 gcc_version_trigger=${srcdir}/../gcc/version.c
1847 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
1848 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1849 if test x"$gxx_include_dir" = x"no"; then
1850 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
1852 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1853 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1857 # Default case for install directory for include files.
1858 if test $version_specific_libs = no &&
1859 test $gxx_include_dir = no; then
1860 gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
1863 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1864 # Install a library built with a cross compiler in tooldir, not libdir.
1865 if test x"$glibcpp_toolexecdir" = x"no"; then
1866 if test -n "$with_cross_host" &&
1867 test x"$with_cross_host" != x"no"; then
1868 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1869 glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
1871 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1872 glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
1876 AC_MSG_CHECKING([for install location])
1877 AC_MSG_RESULT($gxx_include_dir)
1879 AC_SUBST(glibcpp_prefixdir)
1880 AC_SUBST(gxx_include_dir)
1881 AC_SUBST(glibcpp_toolexecdir)
1882 AC_SUBST(glibcpp_toolexeclibdir)
1886 # Check for functions in math library.
1887 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1889 # This file can be copied and used freely without restrictions. It can
1890 # be used in projects which are not available under the GNU Public License
1891 # but which still want to provide support for the GNU gettext functionality.
1892 # Please note that the actual code is *not* freely available.
1896 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1897 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1898 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
1901 dnl This macro searches for a GNU version of make. If a match is found, the
1902 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1903 dnl set to "#". This is useful for including a special features in a Makefile,
1904 dnl which cannot be handled by other versions of make. The variable
1905 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1906 dnl the empty string otherwise.
1908 dnl Here is an example of its use:
1910 dnl Makefile.in might contain:
1912 dnl # A failsafe way of putting a dependency rule into a makefile
1914 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1916 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1917 dnl @ifGNUmake@ include $(DEPEND)
1918 dnl @ifGNUmake@ endif
1920 dnl Then configure.in would normally contain:
1922 dnl CHECK_GNU_MAKE()
1923 dnl AC_OUTPUT(Makefile)
1925 dnl Then perhaps to cause gnu make to override any other make, we could do
1926 dnl something like this (note that GNU make always looks for GNUmakefile first):
1928 dnl if ! test x$_cv_gnu_make_command = x ; then
1929 dnl mv Makefile GNUmakefile
1930 dnl echo .DEFAULT: > Makefile ;
1931 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1934 dnl Then, if any (well almost any) other make is called, and GNU make also
1935 dnl exists, then the other make wraps the GNU make.
1937 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
1938 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
1940 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1941 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
1942 dnl #### conditional's subshell (" --version" is not a command), using a
1943 dnl #### different option to grep(1).
1945 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
1946 dnl #### ${MAKE:-make}).
1949 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1950 _cv_gnu_make_command='' ;
1951 dnl Search all the common names for GNU make
1952 for a in "${MAKE-make}" make gmake gnumake ; do
1953 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
1955 _cv_gnu_make_command=$a ;
1960 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1961 dnl string, '#' otherwise
1962 if test "x$_cv_gnu_make_command" != "x" ; then
1971 dnl Check for headers for, and arguments to, the setrlimit() function.
1972 dnl Used only in testsuite_hooks.h.
1973 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
1974 AC_TRY_COMPILE([#include <sys/resource.h>
1976 ], [ int f = RLIMIT_$1 ; ],
1977 [glibcpp_mresult=1], [glibcpp_mresult=0])
1978 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
1979 [Only used in build directory testsuite_hooks.h.])
1981 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
1982 setrlimit_have_headers=yes
1983 AC_CHECK_HEADERS(sys/resource.h unistd.h,
1985 setrlimit_have_headers=no)
1986 # If don't have the headers, then we can't run the tests now, and we
1987 # won't be seeing any of these during testsuite compilation.
1988 if test $setrlimit_have_headers = yes; then
1989 # Can't do these in a loop, else the resulting syntax is wrong.
1990 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
1991 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
1992 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
1993 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
1995 # Check for rlimit, setrlimit.
1996 AC_CACHE_VAL(ac_setrlimit, [
1997 AC_TRY_COMPILE([#include <sys/resource.h>
2000 [ struct rlimit r; setrlimit(0, &r);],
2001 [ac_setrlimit=yes], [ac_setrlimit=no])
2005 AC_MSG_CHECKING([for testsuite memory limit support])
2006 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2008 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2012 AC_MSG_RESULT($ac_mem_limits)
2017 dnl Does any necessary configuration of the testsuite directory. Generates
2018 dnl the testsuite_hooks.h header.
2020 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2021 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2022 GLIBCPP_CHECK_SETRLIMIT
2024 # Look for setenv, so that extended locale tests can be performed.
2025 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2029 sinclude(../libtool.m4)
2030 dnl The lines below arrange for aclocal not to bring an installed
2031 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2032 dnl add a definition of LIBTOOL to Makefile.in.
2033 ifelse(,,,[AC_SUBST(LIBTOOL)
2034 AC_DEFUN([AM_PROG_LIBTOOL])
2035 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2036 AC_DEFUN([AC_PROG_LD])
2040 # Check whether LC_MESSAGES is available in <locale.h>.
2041 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2043 # This file file be copied and used freely without restrictions. It can
2044 # be used in projects which are not available under the GNU Public License
2045 # but which still want to provide support for the GNU gettext functionality.
2046 # Please note that the actual code is *not* freely available.
2050 AC_DEFUN(AC_LC_MESSAGES, [
2051 AC_CHECK_HEADER(locale.h, [
2052 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2053 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2054 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2055 if test $ac_cv_val_LC_MESSAGES = yes; then
2056 AC_DEFINE(HAVE_LC_MESSAGES)
2063 dnl Check for whether the Boost-derived checks should be turned on.
2065 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2066 dnl --enable-concept-checks turns them on.
2067 dnl --disable-concept-checks leaves them off.
2068 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2069 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2070 dnl defaults to `no'.
2071 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2072 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2073 AC_ARG_ENABLE(concept-checks,
2074 changequote(<<, >>)dnl
2075 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2076 changequote([, ])dnl
2077 [case "$enableval" in
2078 yes) enable_concept_checks=yes ;;
2079 no) enable_concept_checks=no ;;
2080 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2082 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2083 dnl Option parsed, now set things appropriately
2084 if test x"$enable_concept_checks" = xyes; then
2085 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2091 dnl Add version tags to symbols in shared library (or not), additionally
2092 dnl marking other symbols as private/local (or not).
2094 dnl GLIBCPP_ENABLE_SYMVERS
2095 dnl --enable-symvers=style adds a version script to the linker call when
2096 dnl creating the shared library. The choice of version script is
2097 dnl controlled by 'style'.
2098 dnl --disable-symvers does not.
2099 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2100 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2101 dnl defaults to `no'. Passing `yes' tries to choose a default style
2102 dnl based on linker characteristics. Passing 'no' disables versioning.
2103 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2104 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2105 AC_ARG_ENABLE(symvers,
2106 changequote(<<, >>)dnl
2107 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2108 changequote([, ])dnl
2109 [case "$enableval" in
2110 yes) enable_symvers=yes ;;
2111 no) enable_symvers=no ;;
2112 # other names here, just as sanity checks
2113 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2114 gnu) enable_symvers=$enableval ;;
2115 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2117 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2119 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2120 # don't know enough about $LD to do tricks...
2121 if test x$enable_shared = xno ||
2123 test x$glibcpp_gnu_ld_version = x; then
2127 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2128 AC_MSG_CHECKING([for shared libgcc])
2129 ac_save_CFLAGS="$CFLAGS"
2131 AC_TRY_LINK( , [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2132 CFLAGS="$ac_save_CFLAGS"
2133 AC_MSG_RESULT($glibcpp_shared_libgcc)
2135 # For GNU ld, we need at least this version. It's 2.12 in the same format
2136 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2137 glibcpp_min_gnu_ld_version=21200
2139 # Check to see if unspecified "yes" value can win, given results
2141 if test $enable_symvers = yes ; then
2142 if test $with_gnu_ld = yes &&
2143 test $glibcpp_shared_libgcc = yes ;
2145 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2148 ac_test_CFLAGS="${CFLAGS+set}"
2149 ac_save_CFLAGS="$CFLAGS"
2150 CFLAGS='-shared -Wl,--version-script,conftest.map'
2153 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2155 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2156 if test "$ac_test_CFLAGS" = set; then
2157 CFLAGS="$ac_save_CFLAGS"
2159 # this is the suspicious part
2170 dnl Everything parsed; figure out what file to use.
2171 case $enable_symvers in
2173 LINKER_MAP=config/linker-map.dummy
2176 LINKER_MAP=config/linker-map.gnu
2180 AC_LINK_FILES($LINKER_MAP, src/linker.map)
2181 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2182 AC_MSG_CHECKING([versioning on shared library symbols])
2183 AC_MSG_RESULT($enable_symvers)