*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
esac], [multilib=yes])dnl
- dnl We may get other options which we dont document:
- dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
- if test "[$]{srcdir}" = "."; then
- if test "[$]{with_target_subdir}" != "."; then
- glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
- else
- glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
- fi
- else
- glibcpp_basedir="[$]{srcdir}/$1"
- fi
+ glibcpp_basedir=$auxdir/$1/libstdc++-v3
AC_SUBST(glibcpp_basedir)
- AC_CANONICAL_HOST
+ AM_INIT_AUTOMAKE(libstdc++, 2.91)
+
+ # Never versions of autoconf add an underscore to these functions.
+ # Prevent future problems ...
+ ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
+ ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
+ ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
+ ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
- AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
+# AC_PROG_CC
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
LIB_AC_PROG_CC
+# Can't just call these here as g++ requires libstc++ to be built....
+# AC_PROG_CXX
+
# Likewise for AC_PROG_CXX.
AC_DEFUN(LIB_AC_PROG_CXX,
[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
dnl Fool anybody using AC_PROG_CXX.
AC_PROVIDE([AC_PROG_CXX])
-AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+# Use CXX_libstdcxx so that we do not cause CXX to be cached with the
+# flags that come in CXX while configuring libstdc++. They're different
+# from those used for all other target libraries. If CXX is set in
+# the environment, respect that here.
+CXX_libstdcxx=$CXX
+AC_CHECK_PROGS(CXX_libstdcxx, $CCC c++ g++ gcc CC cxx cc++, gcc)
+CXX=$CXX_libstdcxx
+AC_SUBST(CXX)
test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
AC_PROG_CXX_GNU
LIB_AC_PROG_CXX
-# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we dont
-# run it explicitly here, it will be run implicitly before
-# LIBGCJ_CONFIGURE, which doesn't work because that means that it will
-# be run before AC_CANONICAL_HOST.
-AC_CANONICAL_BUILD
-
-AC_CHECK_TOOL(AS, as)
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-
-AC_PROG_INSTALL
-
-AM_MAINTAINER_MODE
-
-# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
-# at least currently, we never actually build a program, so we never
-# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
-# fails, because we are probably configuring with a cross compiler
-# which cant create executables. So we include AC_EXEEXT to keep
-# automake happy, but we dont execute it, since we dont care about
-# the result.
-if false; then
- AC_EXEEXT
-fi
+ AC_CHECK_TOOL(AS, as)
+ AC_CHECK_TOOL(AR, ar)
+ AC_CHECK_TOOL(RANLIB, ranlib, :)
-# configure.host sets the following important variables
-# glibcpp_cflags - host specific C compiler flags
-# glibcpp_cxxflags - host specific C++ compiler flags
+ AC_PROG_INSTALL
-glibcpp_cflags=
-glibcpp_cxxflags=
+ AM_MAINTAINER_MODE
-. [$]{glibcpp_basedir}/configure.host
+ # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
+ # at least currently, we never actually build a program, so we never
+ # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
+ # fails, because we are probably configuring with a cross compiler
+ # which cant create executables. So we include AC_EXEEXT to keep
+ # automake happy, but we dont execute it, since we dont care about
+ # the result.
+ if false; then
+ AC_EXEEXT
+ fi
-case [$]{glibcpp_basedir} in
-/* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
-*) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
-esac
+ . [$]{glibcpp_basedir}/configure.host
-GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
-GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
-AC_SUBST(GLIBCPP_CFLAGS)
-AC_SUBST(GLIBCPP_CXXFLAGS)
+ case [$]{glibcpp_basedir} in
+ /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
+ *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
+ esac
+
+ # This does for the target what configure.host does for the host. In
+ # addition to possibly modifying the same flags, it also sets up symlinks.
+ GLIBCPP_CHECK_TARGET
])
dnl
dnl GLIBCPP_CHECK_COMPILER_VERSION
AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
- # Sanity check that g++ is capable of dealing with v-3.
- AC_MSG_CHECKING([for g++ that will successfully compile this code])
- AC_EGREP_CPP([ok], [
- #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+if test ! -f stamp-sanity-compiler; then
+ AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_EGREP_CPP(ok, [
+ #if __GNUC__ >= 3
ok
#endif
- ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above"))
+ ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
+ AC_LANG_RESTORE
AC_MSG_RESULT($gpp_satisfactory)
+ touch stamp-sanity-compiler
+fi
])
dnl compiler version but not older compiler versions should be placed
dnl here.
dnl
-dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
-dnl
-dnl Define WERROR='-Werror' if possible; g++'s that lack the new inlining
-dnl code or the new system_header pragma will die.
+dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
+dnl new inlining code or the new system_header pragma will die on -Werror.
+dnl Leave it out by default and use maint-mode to use it.
dnl
dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
dnl compiler supports it.
AC_LANG_CPLUSPLUS
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
- WERROR='-Werror'
- # Check for pragma system_header.
- AC_MSG_CHECKING([for g++ that supports pragma system_header])
- CXXFLAGS='-Wunknown-pragmas -Werror'
- AC_TRY_COMPILE([#pragma system_header], [int foo;
- ], [ac_newpragma=yes], [ac_newpragma=no])
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
+ # Check for maintainer-mode bits.
+ if test x"$USE_MAINTAINER_MODE" = xno; then
+ WERROR=''
else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_newpragma" = "no"; then
- WERROR="$WERROR -Wno-unknown-pragmas"
- fi
- AC_MSG_RESULT($ac_newpragma)
-
- # Check for more sophisticated diagnostic control.
- AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
- CXXFLAGS='-fdiagnostics-show-location=once'
- AC_TRY_COMPILE(, [int foo;
- ], [ac_gabydiags=yes], [ac_gabydiags=no])
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
- else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_gabydiags" = "yes"; then
- WFMT_FLAGS='-fdiagnostics-show-location=once'
+ WERROR='-Werror'
fi
- AC_MSG_RESULT($ac_gabydiags)
# Check for -ffunction-sections -fdata-sections
AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
- CXXFLAGS='-ffunction-sections -fdata-sections'
+ CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
AC_TRY_COMPILE(, [int foo;
], [ac_fdsections=yes], [ac_fdsections=no])
if test "$ac_test_CXXFLAGS" = set; then
# this is the suspicious part
CXXFLAGS=''
fi
- if test "$ac_fdsections" = "yes"; then
+ if test x"$ac_fdsections" = x"yes" && test x"$enable_debug" = x"no"; then
SECTION_FLAGS='-ffunction-sections -fdata-sections'
fi
AC_MSG_RESULT($ac_fdsections)
AC_LANG_RESTORE
AC_SUBST(WERROR)
- AC_SUBST(WFMT_FLAGS)
AC_SUBST(SECTION_FLAGS)
])
dnl
-dnl Check to see if tricky linker opts can be used.
+dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
+dnl the native linker is in use, all variables will be defined to something
+dnl safe (like an empty string).
+dnl
+dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
+dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
dnl
-dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible
dnl GLIBCPP_CHECK_LINKER_FEATURES
AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
- # All these tests are for C++; save the language and the compiler flags.
- # Need to do this so that g++ won't try to link in libstdc++
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS='-x c++ -Wl,--gc-sections'
-
- # Check for -Wl,--gc-sections
- AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
- AC_TRY_RUN([
- int main(void)
- {
- try { throw 1; }
- catch (...) { };
- return 0;
- }
- ], [ac_sectionLDflags=yes], [ac_sectionLFflags=no], [ac_sectionLDflags=yes])
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
- else
- # this is the suspicious part
- CFLAGS=''
+ # If we're not using GNU ld, then there's no point in even trying these
+ # tests. Check for that first. We should have already tested for gld
+ # by now (in libtool), but require it now just to be safe...
+ SECTION_LDFLAGS=''
+ OPT_LDFLAGS=''
+ AC_REQUIRE([AC_PROG_LD])
+
+ # Set --gc-sections.
+ if test "$ac_cv_prog_gnu_ld" = "notbroken"; then
+ # GNU ld it is! Joy and bunny rabbits!
+
+ # All these tests are for C++; save the language and the compiler flags.
+ # Need to do this so that g++ won't try to link in libstdc++
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS='-x c++ -Wl,--gc-sections'
+
+ # Check for -Wl,--gc-sections
+ # XXX This test is broken at the moment, as symbols required for
+ # linking are now in libsupc++ (not built yet.....). In addition,
+ # this test has cored on solaris in the past. In addition,
+ # --gc-sections doesn't really work at the moment (keeps on discarding
+ # used sections, first .eh_frame and now some of the glibc sections for
+ # iconv). Bzzzzt. Thanks for playing, maybe next time.
+ AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
+ AC_TRY_RUN([
+ int main(void)
+ {
+ try { throw 1; }
+ catch (...) { };
+ return 0;
+ }
+ ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ else
+ # this is the suspicious part
+ CFLAGS=''
+ fi
+ if test "$ac_sectionLDflags" = "yes"; then
+ SECTION_LDFLAGS='-Wl,--gc-sections'
+ fi
+ AC_MSG_RESULT($ac_sectionLDflags)
fi
- if test "$ac_sectionLDflags" = "yes"; then
- SECTION_LDFLAGS='-Wl,--gc-sections'
+
+ # Set linker optimization flags.
+ if test x"$ac_cv_prog_gnu_ld" = x"yes" && test x"$enable_debug" = x"no"; then
+ OPT_LDFLAGS='-Wl,-O1'
fi
- AC_MSG_RESULT($ac_sectionLDflags)
AC_SUBST(SECTION_LDFLAGS)
+ AC_SUBST(OPT_LDFLAGS)
])
dnl
dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_1
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+ ],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl 2) has "C" linkage
+dnl 3) if not, see if 1) and 2) for argument prepended with '_'
dnl
dnl Define HAVE_CARGF etc if "cargf" is declared and links
dnl
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_MSG_CHECKING([for $1 declaration])
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0);],
- [use_$1=yes], [use_$1=no])
- AC_MSG_RESULT($use_$1)
- AC_LANG_RESTORE
- if test x$use_$1 = x"yes"; then
+ GLIBCPP_CHECK_MATH_DECL_1($1)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_1(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
fi
])
dnl
+dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
+dnl of functions at once. It's an all-or-nothing check -- either
+dnl HAVE_XYZ is defined for each of the functions, or for none of them.
+dnl Doing it this way saves significant configure time.
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
+ AC_MSG_CHECKING([for $1 functions])
+ AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ `for x in $3; do echo "$x (0);"; done` ],
+ [glibcpp_cv_func_$2_use=yes],
+ [glibcpp_cv_func_$2_use=no])
+ AC_LANG_RESTORE])
+ AC_MSG_RESULT($glibcpp_cv_func_$2_use)
+ if test x$glibcpp_cv_func_$2_use = x"yes"; then
+ AC_CHECK_FUNCS($3)
+ fi
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_2
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
+dnl
dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl 2) has "C" linkage
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_MSG_CHECKING([for $1 declaration])
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0, 0);],
- [use_$1=yes], [use_$1=no])
- AC_MSG_RESULT($use_$1)
- AC_LANG_RESTORE
- if test x$use_$1 = x"yes"; then
+ GLIBCPP_CHECK_MATH_DECL_2($1)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_2(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
fi
])
dnl
dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_3
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0, 0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl 2) has "C" linkage
dnl
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
+ GLIBCPP_CHECK_MATH_DECL_3($1)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
+ AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_3(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
+ fi
+])
+
+
+dnl
+dnl Check to see if the (stdlib function) argument passed is
+dnl 1) declared when using the c++ compiler
+dnl 2) has "C" linkage
+dnl
+dnl Define HAVE_STRTOLD if "strtold" is declared and links
+dnl Define HAVE_STRTOF if "strtof" is declared and links
+dnl
+dnl argument 1 is name of function to check
+dnl
+dnl ASSUMES argument is a math function with TWO parameters
+dnl
+dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
+AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
AC_MSG_CHECKING([for $1 declaration])
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0, 0, 0);],
- [use_$1=yes], [use_$1=no])
- AC_MSG_RESULT($use_$1)
- AC_LANG_RESTORE
- if test x$use_$1 = x"yes"; then
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [ $1(0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
fi
])
dnl
dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
AC_MSG_CHECKING([for $1 declaration])
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0);],
- [use_$1=yes], [use_$1=no])
- AC_MSG_RESULT($use_$1)
- AC_LANG_RESTORE
- if test x$use_$1 = x"yes"; then
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_MSG_CHECKING([for $1 linkage])
- AC_TRY_LINK([#include <math.h>],
- [ $1(0);],
- [link_$1=yes], [link_$1=no])
- AC_MSG_RESULT($link_$1)
- if test x$link_$1 = x"yes"; then
+ if test x${glibcpp_cv_func_$1_link+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
+ AC_TRY_LINK([#include <math.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_link)
+ if test x$glibcpp_cv_func_$1_link = x"yes"; then
ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
AC_DEFINE_UNQUOTED(${ac_tr_func})
fi
dnl
+dnl Check to see what the underlying c library
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+dnl 2) make sure the name has "C" linkage
+dnl This might seem like overkill but experience has shown that it's not...
+dnl
+dnl Define HAVE_STRTOF etc if "strtof" is found.
+dnl Define HAVE_STRTOLD etc if "strtold" is found.
+dnl
+dnl GLIBCPP_CHECK_STDLIB_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
+
+ AC_CHECK_FUNCS(strtof)
+ GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+])
+
+
+dnl
dnl Check to see what the underlying c library or math library is like.
dnl These checks need to do two things:
dnl 1) make sure the name is declared when using the c++ compiler
ac_save_LIBS="$LIBS"
LIBS="$LIBS $libm"
- dnl Although not math functions, needed and for some reason checked here.
- AC_CHECK_FUNCS(strtof strtold)
-
dnl Check to see if certain C math functions exist.
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
dnl Check to see if basic C math functions have float versions.
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
+ float_trig,
+ acosf asinf atanf \
+ cosf sinf tanf \
+ coshf sinhf tanhf)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
+ float_round,
+ ceilf floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceilf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
dnl Check to see if basic C math functions have long double versions.
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
+ long_double_trig,
+ acosl asinl atanl \
+ cosl sinl tanl \
+ coshl sinhl tanhl)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
+ long_double_round,
+ ceill floorl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceill)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
dnl keep this sync'd with the one above. And if you add any new symbol,
dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
dnl Check to see if certain C math functions exist.
- dnl Check to see if certain C math functions exist.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass)
dnl Check to see if basic C math functions have float versions.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
+ _float_trig,
+ _acosf _asinf _atanf \
+ _cosf _sinf _tanf \
+ _coshf _sinhf _tanhf)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
+ _float_round,
+ _ceilf _floorf)
dnl Check to see if basic C math functions have long double versions.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinfl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysignl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceill)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modfl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
+ _long_double_trig,
+ _acosl _asinl _atanl \
+ _cosl _sinl _tanl \
+ _coshl _sinhl _tanhl)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
+ _long_double_round,
+ _ceill _floorl)
LIBS="$ac_save_LIBS"
CXXFLAGS="$ac_save_CXXFLAGS"
dnl
dnl Don't compile bits in math/* if native support exits.
dnl
-dnl Define USE_COMPLEX_LONG_DOUBLE etc if "cargf" is found.
+dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found.
dnl
dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
dnl Check for complex versions of math functions of platform.
- AC_CHECK_HEADERS([complex.h])
- AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
- clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
- ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf copysignf)
+ AC_CHECK_LIB(m, main)
+ AC_REPLACE_MATHFUNCS(nan hypot hypotf atan2f expf copysignf)
dnl Compile the long double complex functions only if the function
dnl provides the non-complex long double functions that are needed.
if test x$ac_cv_func_atan2l = x"yes" \
&& test x$ac_cv_func_copysignl = x"yes"; then
USE_COMPLEX_LONG_DOUBLE=yes
- AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
- csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)
+ AC_REPLACE_MATHFUNCS(hypotl signbitl)
fi
AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
])
-dnl Check to see what architecture we are compiling for. If it's
-dnl supported, use special hand-crafted routines to provide thread
-dnl primitives. Also, if architecture-specific flags are required for
-dnl compilation, add them here.
+dnl Check to see what architecture and operating system we are compiling
+dnl for. Also, if architecture- or OS-specific flags are required for
+dnl compilation, pick them up here.
dnl
-dnl Depending on what is found, select configure/cpu/*/bits/atomicity.h
-dnl If not found, select configure/cpu/generic/bits/atomicity.h
-dnl
-dnl GLIBCPP_CHECK_CPU
-AC_DEFUN(GLIBCPP_CHECK_CPU, [
- AC_MSG_CHECKING([for cpu primitives directory])
- CPU_FLAGS=
- case "$target_cpu" in
- alpha*)
- cpu_include_dir="config/cpu/alpha"
- ;;
- arm*)
- cpu_include_dir="config/cpu/arm"
- ;;
- i386)
- cpu_include_dir="config/cpu/i386"
- ;;
- i486 | i586 | i686 | i786)
- cpu_include_dir="config/cpu/i486"
- ;;
- powerpc | rs6000)
- cpu_include_dir="config/cpu/powerpc"
- CPU_FLAGS='-mcpu=powerpc'
- ;;
- sparc64 | ultrasparc)
- cpu_include_dir="config/cpu/sparc/sparc64"
- ;;
- sparc*)
- cpu_include_dir="config/cpu/sparc/sparc32"
- ;;
- *)
- cpu_include_dir="config/cpu/generic"
- ;;
- esac
- AC_MSG_RESULT($cpu_include_dir)
- AC_SUBST(cpu_include_dir)
- AC_SUBST(CPU_FLAGS)
-])
-
-
-dnl
-dnl Check to see what the underlying c library's interface to ctype looks
-dnl like. Bits of locale rely on things like isspace, toupper, etc. This
-dnl stuff makes sure the right bits from the clibrary get called.
-dnl
-dnl Depending on what is found, select various configure/*/bits/ctype_base.h
-dnl Depending on what is found, select various configure/*/ctype.cc
-dnl
-dnl GLIBCPP_CHECK_CTYPE
-AC_DEFUN(GLIBCPP_CHECK_CTYPE, [
- AC_CHECK_HEADER(ctype.h, [
-
- dnl If doesn't match any specified, go with defaults.
- ctype_default=yes
-
- dnl Test for <ctype> functionality -- gnu-linux
- AC_MSG_CHECKING([<ctype> for gnu-linux ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
- + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
- + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
- ctype_linux=yes, ctype_linux=no)
- AC_MSG_RESULT($ctype_linux)
- if test $ctype_linux = "yes"; then
- ctype_include_dir="config/gnu-linux"
- ctype_default=no
- fi
-
- dnl Test for <ctype> functionality -- FreeBSD 4.0
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for freebsd 4.0 ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _CTYPE_S + _CTYPE_R + _CTYPE_C + _CTYPE_U + _CTYPE_L + _CTYPE_A \
- + _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}], \
- ctype_bsd=yes, ctype_bsd=no)
- AC_MSG_RESULT($ctype_bsd)
- if test $ctype_bsd = "yes"; then
- ctype_include_dir="config/bsd"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- FreeBSD 3.4
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for freebsd 3.4 ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _S + _R + _C + _U + _L + _A \
- + _D + _P + _X + _G + __istype (a, 0);}], \
- ctype_freebsd34=yes, ctype_freebsd34=no)
- AC_MSG_RESULT($ctype_freebsd34)
- if test $ctype_freebsd34 = "yes"; then
- ctype_include_dir="config/bsd"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- solaris 2.6 and 2.7
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for solaris 2.[6,7,8] ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
- + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
- + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
- ctype_solaris=yes, ctype_solaris=no)
- AC_MSG_RESULT($ctype_solaris)
-
- if test $ctype_solaris = "yes"; then
- AC_MSG_CHECKING([ for version])
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <ctype.h>],
- [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
- ctype_solaris26=yes, ctype_solaris26=no)
- AC_LANG_C
- if test $ctype_solaris26 = "yes"; then
- ctype_include_dir="config/solaris/solaris2.6"
- AC_MSG_RESULT("solaris2.6")
- ctype_default=no
- else
- ctype_include_dir="config/solaris/solaris2.7"
- AC_MSG_RESULT("solaris2.[7,8]")
- ctype_default=no
- fi
- fi
- fi
-
- dnl Test for <ctype> functionality -- solaris 2.5.1
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for solaris 2.5.1 ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _U + _L + _N + _S + _P + _C + _X + _B \
- + __ctype[a];}], \
- ctype_solaris25=yes, ctype_solaris25=no)
- AC_MSG_RESULT($ctype_solaris25)
- if test $ctype_solaris25 = "yes"; then
- ctype_include_dir="config/solaris/solaris2.5"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- aix
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for aix ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
- + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
- + _VALC('a') + _IS('c', 0);}], \
- ctype_aix=yes, ctype_aix=no)
- AC_MSG_RESULT($ctype_aix)
- if test $ctype_aix = "yes"; then
- ctype_include_dir="config/aix"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- newlib
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for newlib ])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _U + _L + _N + _S + _P + _C + _X + _B \
- + _ctype_[a];}], \
- ctype_newlib=yes, ctype_newlib=no)
- AC_MSG_RESULT($ctype_newlib)
- if test $ctype_newlib = "yes"; then
- ctype_include_dir="config/newlib"
- ctype_default=no
- fi
- fi
-
- if test $ctype_default = "yes"; then
- ctype_include_dir="config/generic"
- AC_MSG_WARN("Using default ctype headers.")
- fi
- AC_SUBST(ctype_include_dir)
- ])
+dnl GLIBCPP_CHECK_TARGET
+AC_DEFUN(GLIBCPP_CHECK_TARGET, [
+ . [$]{glibcpp_basedir}/configure.target
+ AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
+ AC_MSG_RESULT(OS config directory is $os_include_dir)
+ AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h)
])
dnl
dnl Check to see if this target can enable the wchar_t parts of libstdc++.
+dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
+dnl must have been previously checked.)
dnl
dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
-dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
+dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
dnl
dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
- dnl Sanity check for existence of ISO C9X headers for extended encoding.
- AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
- AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
-
- dnl Only continue checking if the ISO C9X headers exist.
- if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
+ dnl Test wchar.h for mbstate_t, which is needed for char_traits and
+ dnl others even if wchar_t support is not on.
+ AC_MSG_CHECKING([for mbstate_t])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [mbstate_t teststate;],
+ have_mbstate_t=yes, have_mbstate_t=no)
+ AC_MSG_RESULT($have_mbstate_t)
+ if test x"$have_mbstate_t" = xyes; then
+ AC_DEFINE(HAVE_MBSTATE_T)
+ fi
- dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
- AC_MSG_CHECKING([for mbstate_t])
- AC_TRY_COMPILE([#include <wchar.h>],
- [mbstate_t teststate;],
- use_native_mbstatet=yes, use_native_mbstatet=no)
- AC_MSG_RESULT($use_native_mbstatet)
- if test x"$use_native_mbstatet" = xno; then
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
- fi
+ dnl Sanity check for existence of ISO C99 headers for extended encoding.
+ AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
+ AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
+ dnl Only continue checking if the ISO C99 headers exist and support is on.
+ if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes \
+ && test x"$enable_c_mbchar" != xno; then
+
dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
dnl numeric_limits can instantiate type_traits<wchar_t>
AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
[int i = WCHAR_MIN; int j = WCHAR_MAX;],
has_wchar_minmax=yes, has_wchar_minmax=no)
AC_MSG_RESULT($has_wchar_minmax)
-
+
dnl Test wchar.h for WEOF, which is what we use to determine whether
dnl to specialize for char_traits<wchar_t> or not.
AC_MSG_CHECKING([for WEOF])
[wint_t i = WEOF;],
has_weof=yes, has_weof=no)
AC_MSG_RESULT($has_weof)
-
+
dnl Tests for wide character functions used in char_traits<wchar_t>.
- AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset, ac_wfuncs=yes, ac_wfuncs=no)
-
- AC_MSG_CHECKING([for ISO C9X wchar_t support])
- if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes && test x"$ac_wfuncs" = xyes; then
- ac_isoC9X_wchar_t=yes
+ AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
+ wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
+
+ AC_MSG_CHECKING([for ISO C99 wchar_t support])
+ if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
+ && test x"$ac_wfuncs" = xyes; then
+ ac_isoC99_wchar_t=yes
else
- ac_isoC9X_wchar_t=no
+ ac_isoC99_wchar_t=no
fi
- AC_MSG_RESULT($ac_isoC9X_wchar_t)
-
+ AC_MSG_RESULT($ac_isoC99_wchar_t)
+
dnl Use iconv for wchar_t to char conversions. As such, check for
dnl X/Open Portability Guide, version 2 features (XPG2).
AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
- AC_CHECK_FUNCS(iconv_open iconv_close iconv, ac_XPG2funcs=yes, ac_XPG2funcs=no)
+ AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
+
+ dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
+ AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $libiconv"
+
+ AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
+ ac_XPG2funcs=yes, ac_XPG2funcs=no)
+
+ LIBS="$ac_save_LIBS"
AC_MSG_CHECKING([for XPG2 wchar_t support])
- if test x"$ac_has_iconv_h" = xyes && test x"$ac_XPG2funcs" = xyes; then
+ if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
+ && test x"$ac_XPG2funcs" = xyes; then
ac_XPG2_wchar_t=yes
else
ac_XPG2_wchar_t=no
fi
AC_MSG_RESULT($ac_XPG2_wchar_t)
-
+
dnl At the moment, only enable wchar_t specializations if all the
dnl above support is present.
AC_MSG_CHECKING([for enabled wchar_t specializations])
- if test x"$ac_isoC9X_wchar_t" = xyes && test x"$ac_XPG2_wchar_t" = xyes; then
- libinst_wstring_la="libinst-wstring.la"
+ if test x"$ac_isoC99_wchar_t" = xyes \
+ && test x"$ac_XPG2_wchar_t" = xyes; then
AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
AC_MSG_RESULT("yes")
else
- libinst_wstring_la=""
AC_MSG_RESULT("no")
fi
- AC_SUBST(libinst_wstring_la)
-
else
- AC_MSG_WARN([<wchar.h> not found])
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
+ dnl Wide characters disabled by the user.
+ AC_MSG_WARN([wchar_t support disabled.])
fi
])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
- dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
- [ dcomplex x; f(x); ],
+ dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
+ [ dcomplex x; f(x); ],
glibcpp_cv_complex=ok,
glibcpp_cv_complex=buggy
)
// Check for buggy __complex__ that causes ICE in most versions of egcs
// and gcc-2.95.x on certain platforms (eg., x86-win32).
//
- // See http://egcs.cygnus.com/ml/gcc-bugs/1999-07/msg00845.html for
+ // See http://gcc.gnu.org/ml/gcc-bugs/1999-07n/msg00845.html for
// more info on the bug itself.
//
struct
dnl Check for special debugging mode; not for production use.
dnl
dnl GLIBCPP_ENABLE_DEBUG
-dnl --enable-debug sets '-ggdb -O0'.
+dnl --enable-debug sets '-ggdb3 -O0'.
dnl --disable-debug sets '-g' and whatever optimization options the
dnl compiler can handle.
-dnl + Perhaps --enable-maintainer-mode should automatically turn this on?
+dnl + --enable-maintainer-mode automatically defaults this to on.
dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
changequote(<<, >>)dnl
<< --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
changequote([, ])dnl
-[case "$enableval" in
+[case "${enableval}" in
yes) enable_debug=yes ;;
no) enable_debug=no ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
esac],
enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
+
dnl Option parsed, now set things appropriately
-case "$enable_debug" in
+case "${enable_debug}" in
yes)
- DEBUG_FLAGS='-O0 -ggdb'
- ;;
+ DEBUG_FLAGS='-O0 -ggdb3'
+ ;;
no)
- DEBUG_FLAGS='-g'
+ DEBUG_FLAGS='-g'
;;
esac
AC_SUBST(DEBUG_FLAGS)
dnl Somehow this same set of flags must be passed when [re]building
dnl libgcc.
dnl --disable-cxx-flags passes nothing.
-dnl + See http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00131.html
-dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00284.html
-dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00035.html
+dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
+dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
+dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
dnl If "default flags" is an empty string (or "none"), the effect is
dnl the same as --disable or --enable=no.
[default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
changequote([, ])dnl
[case "x$enableval" in
- xyes) AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
- xno|x) enable_cxx_flags='' ;;
- *) enable_cxx_flags="$enableval" ;;
+ xyes)
+ AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
+ xno|x)
+ enable_cxx_flags='' ;;
+ *)
+ enable_cxx_flags="$enableval" ;;
esac],
-enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')dnl
+enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
+
dnl Thinko on my part during design. This kludge is the workaround.
-if test "$enable_cxx_flags" = "none"; then enable_cxx_flags=''; fi
+if test "$enable_cxx_flags" = "none"; then
+ enable_cxx_flags='';
+fi
+
dnl Run through flags (either default or command-line) and set anything
dnl extra (e.g., #defines) that must accompany particular g++ options.
if test -n "$enable_cxx_flags"; then
dnl
-dnl Check for instructions to automatically rebuild libgcc.a. Requires,
-dnl of course, the location of the gcc objdir. Note that if --disable-
-dnl namespaces is in effect, rebuilding libgcc.a is an expensive no-op.
+dnl Check for which locale library to use: gnu or generic.
dnl
-dnl GLIBCPP_ENABLE_RELIBGCC
-dnl --enable-libgcc-rebuild=/absolute/path/to/gcc/objdir sets GCC_OBJDIR
-dnl (presumably in the top-level Makefile) to /absol.../objdir
-dnl --disable-libgcc-rebuild will not touch libgcc.a at all (maybe print
-dnl a warning if this is given along with --enable-namespaces), by
-dnl setting GCC_OBJDIR to `no'.
-dnl + Doing this by default is going to be interesting. What default
-dnl "on" value can there be?
-dnl + Usage: GLIBCPP_ENABLE_RELIBGCC[(DEFAULT)]
-dnl The default path should be ../.. if bundled with GCC source.
-dnl If ommitted, it defaults to `no'.
-dnl
-AC_DEFUN(GLIBCPP_ENABLE_RELIBGCC, [dnl
-define([GLIBCPP_ENABLE_RELIBGCC_DEFAULT], ifelse($1,, no, $1))dnl
-AC_ARG_ENABLE(libgcc-rebuild,
-changequote(<<, >>)dnl
-<< --enable-libgcc-rebuild=DIR also rebuild libgcc.a; DIR is
- the GCC objdir; see install.html>>,
-changequote([, ])dnl
-[case "$enableval" in
- yes) AC_MSG_ERROR([--enable-libgcc-rebuild needs a pathname]) ;;
- no) enable_libgcc_rebuild=no ;;
- *) if test -d "$enableval" && test -d "${enableval}/gcc" && \
- test -d "${enableval}/libiberty"
- then
- enable_libgcc_rebuild="$enableval"
- else
- AC_MSG_ERROR(["$enableval" does not appear to be the GCC objdir])
- fi
+dnl GLIBCPP_ENABLE_CLOCALE
+dnl --enable-clocale=gnu sets config/c_locale_gnu.cc and friends
+dnl --enable-clocale=generic sets config/c_locale_generic.cc and friends
+dnl
+dnl default is generic
+dnl
+AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
+ AC_MSG_CHECKING([for clocale to use])
+ AC_ARG_ENABLE(clocale,
+ [ --enable-clocale enable model for target locale package.
+ --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
+ ],
+ if test x$enable_clocale = xno; then
+ enable_clocale=generic
+ fi,
+ enable_clocale=generic)
+
+ enable_clocale_flag=$enable_clocale
+
+ dnl Check if a valid locale package
+ case x${enable_clocale_flag} in
+ xgnu)
+ CLOCALE_H=config/c_locale_gnu.h
+ CLOCALE_CC=config/c_locale_gnu.cc
+ AC_MSG_RESULT(gnu)
;;
- esac],
-enable_libgcc_rebuild=GLIBCPP_ENABLE_RELIBGCC_DEFAULT)dnl
-GCC_OBJDIR="$enable_libgcc_rebuild"
-AC_SUBST(GCC_OBJDIR)
+ xgeneric)
+ CLOCALE_H=config/c_locale_generic.h
+ CLOCALE_CC=config/c_locale_generic.cc
+ AC_MSG_RESULT(generic)
+ ;;
+ *)
+ echo "$enable_clocale is an unknown locale package" 1>&2
+ exit 1
+ ;;
+ esac
+
+ AC_LINK_FILES($CLOCALE_H, include/bits/c++locale.h)
+ AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
])
dnl GLIBCPP_ENABLE_CSTDIO
dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
dnl
-dnl default is libio
+dnl default is stdio
dnl
AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
AC_MSG_CHECKING([for cstdio to use])
AC_ARG_ENABLE(cstdio,
- [ --enable-cstdio enable GNU libio for target io package. (default)
- --enable-cstdio=LIB use LIB target-speific io package.],
+ [ --enable-cstdio enable stdio for target io package.
+ --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
+ ],
if test x$enable_cstdio = xno; then
- enable_cstdio=libio
+ enable_cstdio=stdio
fi,
- enable_cstdio=libio)
+ enable_cstdio=stdio)
enable_cstdio_flag=$enable_cstdio
- dnl Check if a valid thread package
+ dnl Check if a valid I/O package
case x${enable_cstdio_flag} in
- xlibio | x | xno | xnone | xyes)
- # default
- CSTDIO_H=config/c_io_libio.h
- CSTDIO_CC=config/c_io_libio.cc
- AC_MSG_RESULT(libio)
-
- # see if we are on a system with libio native (ie, linux)
- AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
-
- # bkoz XXX hack hack need version checks, this is temporary
- has_libio=no
-
- if test $has_libio = "yes"; then
- BUILD_LIBIO_INCLUDE=
- need_libio=no
- else
- BUILD_LIBIO_INCLUDE='-I../libio'
- need_libio=yes
- fi
- AC_SUBST(BUILD_LIBIO_INCLUDE)
-
- # see if the _G_config.h header needs to be built.
- # NB: This replaces the _G_CONFIG_H machinery in libio-v2
- AC_CHECK_HEADER(_G_config.h, has_gconf_h=yes, has_gconf_h=no)
- AM_CONDITIONAL(GLIBCPP_NEED_LIBIO_CONFIG_H, test "$has_gconf_h" = no)
- # bkoz XXX hack need to add support for non-glibc systems here
- has_gconf=no
-
- # bkoz XXX need to add checks for this
- need_wlibio=yes
- ;;
- xwince)
- CSTDIO_H=config/c_io_wince.h
- CSTDIO_CC=config/c_io_wince.cc
- AC_MSG_RESULT(wince)
-
- need_libio=no
- BUILD_LIBIO_INCLUDE=
- AC_SUBST(BUILD_LIBIO_INCLUDE)
- ;;
- *)
- echo "$enable_cstdio is an unknown io package" 1>&2
- exit 1
- ;;
+ xlibio)
+ CSTDIO_H=config/c_io_libio.h
+ BASIC_FILE_H=config/basic_file_libio.h
+ BASIC_FILE_CC=config/basic_file_libio.cc
+ AC_MSG_RESULT(libio)
+
+ # see if we are on a system with libio native (ie, linux)
+ AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
+
+ # Need to check and see what version of glibc is being used. If
+ # it's not glibc-2.2 or higher, then we'll need to go ahead and
+ # compile most of libio for linux systems.
+ if test x$has_libio = x"yes"; then
+ case "$target" in
+ *-*-linux*)
+ AC_MSG_CHECKING([for glibc version >= 2.2])
+ AC_EGREP_CPP([ok], [
+ #include <features.h>
+ #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+ ok
+ #endif
+ ], glibc_satisfactory=yes, glibc_satisfactory=no)
+ AC_MSG_RESULT($glibc_satisfactory)
+ ;;
+ esac
+
+ # XXX at the moment, admit defeat and force the recompilation
+ # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
+ glibc_satisfactory=no
+
+ if test x$glibc_satisfactory = x"yes"; then
+ need_libio=no
+ need_wlibio=no
+ else
+ need_libio=yes
+ # bkoz XXX need to add checks to enable this
+ # pme XXX here's a first pass at such a check
+ if test x$enable_c_mbchar != xno; then
+ need_wlibio=yes
+ else
+ need_wlibio=no
+ fi
+ fi
+
+ else
+ # Using libio, but <libio.h> doesn't exist on the target system. . .
+ need_libio=yes
+ # bkoz XXX need to add checks to enable this
+ # pme XXX here's a first pass at such a check
+ if test x$enable_c_mbchar != xno; then
+ need_wlibio=yes
+ else
+ need_wlibio=no
+ fi
+ fi
+ ;;
+ xstdio | x | xno | xnone | xyes)
+ # default
+ CSTDIO_H=config/c_io_stdio.h
+ BASIC_FILE_H=config/basic_file_stdio.h
+ BASIC_FILE_CC=config/basic_file_stdio.cc
+ AC_MSG_RESULT(stdio)
+
+ # We're not using stdio.
+ need_libio=no
+ need_wlibio=no
+ ;;
+ *)
+ echo "$enable_cstdio is an unknown io package" 1>&2
+ exit 1
+ ;;
esac
- AC_LINK_FILES($CSTDIO_H, bits/c++io.h)
- AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
+ AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
+ AC_LINK_FILES($BASIC_FILE_H, include/bits/basic_file_model.h)
+ AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
+
+ # 2000-08-04 bkoz hack
+ CCODECVT_C=config/c_io_libio_codecvt.c
+ AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
+ # 2000-08-04 bkoz hack
+
+ AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
+ test "$need_libio" = yes || test "$need_wlibio" = yes)
AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
+ if test "$need_libio" = yes || test "$need_wlibio" = yes; then
+ libio_la=../libio/libio.la
+ else
+ libio_la=
+ fi
+ AC_SUBST(libio_la)
])
dnl GLIBCPP_ENABLE_THREADS
dnl --enable-threads=posix sets config/threads-posix.h et. al.
dnl
-dnl default is no threads
+dnl Default is no threads, which also disables _IO_MTSAFE_IO in
+dnl libio. Any actual thread package will enable it.
dnl
AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
dnl Note this comes from the gcc/config.in and libjava/config.in
dnl Efforts should be made to keep this in sync.
AC_MSG_CHECKING([for threads package to use])
AC_ARG_ENABLE(threads,
- [ --enable-threads enable thread usage for target GCC.
- --enable-threads=LIB use LIB thread package for target GCC.],
+ [ --enable-threads enable thread usage for target GCC.
+ --enable-threads=LIB use LIB thread package for target GCC. [default=no]
+ ],
if test x$enable_threads = xno; then
enable_threads=''
fi,
dnl Check if a valid thread package
case x${enable_threads_flag} in
- x | xno | xnone)
- # No threads
- target_thread_file='single'
- ;;
- xyes)
- # default
- target_thread_file=''
- ;;
- xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
- xsolaris | xwin32 | xdce | xvxworks)
- target_thread_file=$enable_threads_flag
- ;;
- *)
- echo "$enable_threads is an unknown thread package" 1>&2
- exit 1
- ;;
+ x | xno | xnone)
+ # No threads
+ target_thread_file='single'
+ ;;
+ xyes)
+ # default
+ target_thread_file='posix'
+ ;;
+ xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
+ xsolaris | xwin32 | xdce | xvxworks)
+ target_thread_file=$enable_threads_flag
+ ;;
+ *)
+ echo "$enable_threads is an unknown thread package" 1>&2
+ exit 1
+ ;;
esac
dnl Check for thread package actually supported in libstdc++
+ THREADH=
case "$target_thread_file" in
no | none | single)
- THREADS=none
+ THREADH=threads-no.h
;;
posix | pthreads)
- THREADS=posix
- case "$target" in
- *-*-linux*)
- ;;
- esac
+ THREADH=threads-posix.h
;;
decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
AC_MSG_ERROR(thread package $THREADS not yet supported)
;;
*)
- AC_MSG_ERROR($THREADS is an unknown thread package)
+ AC_MSG_ERROR($THREADS is an unsupported/unknown thread package)
;;
esac
- AC_MSG_RESULT($THREADS)
+ AC_MSG_RESULT($THREADH)
- THREADLIBS=
- THREADINCS=
- THREADDEPS=
- THREADOBJS=
- THREADH=
- THREADSPEC=
- case "$THREADS" in
- posix)
- AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
- THREADLIBS=-lpthread
- THREADSPEC=-lpthread
- dnl Not presently used
- dnl THREADOBJS=threads-posix.lo
- THREADH=threads-posix.h
- ;;
- none)
- dnl Not presently used
- dnl THREADOBJS=threads-no.lo
- THREADH=threads-no.h
- ;;
- esac
- AC_SUBST(THREADLIBS)
- AC_SUBST(THREADINCS)
- AC_SUBST(THREADDEPS)
- AC_SUBST(THREADOBJS)
- AC_SUBST(THREADSPEC)
- AC_LINK_FILES(config/$THREADH, bits/c++threads.h)
+ AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
+ if test $THREADH != threads-no.h; then
+ AC_DEFINE(_GLIBCPP_USE_THREADS)
+ fi
])
*) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
esac],
enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
+
+ # Allow use of os-dependent settings, so that macros that turn on
+ # C99 capabilities can be defined and used in a consistent way.
+ OS_INC_PATH=${srcdir}/$os_include_dir
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="-I$OS_INC_PATH"
- # Check for the existance of functions used if long long is enabled.
+ # Check for the existence of functions used if long long is enabled.
AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
+ # Check for lldiv_t, et. al.
+ AC_MSG_CHECKING([for lldiv_t declaration])
+ AC_CACHE_VAL(glibcpp_lldiv_t_use, [
+ AC_TRY_COMPILE([#include <bits/os_defines.h>
+ #include <stdlib.h>],
+ [ lldiv_t mydivt;],
+ [glibcpp_lldiv_t_use=yes], [glibcpp_lldiv_t_use=no])
+ ])
+ AC_MSG_RESULT($glibcpp_lldiv_t_use)
+ if test x$glibcpp_lldiv_t_use = x"yes"; then
+ AC_DEFINE(HAVE_LLDIV_T)
+ fi
+
AC_MSG_CHECKING([for enabled long long])
if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
enable_long_long=no;
fi;
AC_MSG_RESULT($enable_long_long)
+ # Option parsed, now set things appropriately
+ if test x"$enable_long_long" = xyes; then
+ AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
+ fi
+
+ # Reset CFLAGS
+ CFLAGS="$ac_save_CFLAGS"
+])
+
+
+dnl
+dnl Check for what kind of C headers to use.
+dnl
+dnl GLIBCPP_ENABLE_CHEADERS
+dnl --enable-cheaders= [does stuff].
+dnl --disable-cheaders [does not do anything, really].
+dnl + This will eventually need to be 'c_shadow' by default.
+dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
+dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
+dnl If ommitted, it defaults to `c_std'.
+AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
+define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
+AC_MSG_CHECKING([for c header strategy to use])
+AC_ARG_ENABLE(cheaders,
+changequote(<<, >>)dnl
+<< --enable-cheaders construct "C" header files for
+ g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
+changequote([, ])
+ [case "$enableval" in
+ c)
+ enable_cheaders=c
+ ;;
+ c_std)
+ enable_cheaders=c_std
+ ;;
+ c_shadow)
+ enable_cheaders=c_shadow
+ ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
+ ;;
+ esac],
+ enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
+ AC_MSG_RESULT($enable_cheaders)
+
dnl Option parsed, now set things appropriately
- case "$enable_long_long" in
- yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
- ;;
+ case "$enable_cheaders" in
+ c_shadow)
+ CSHADOW_FLAGS="-fno-builtin"
+ C_INCLUDE_DIR='${top_srcdir}/include/c_shadow'
+ AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
+ ;;
+ c_std)
+ CSHADOW_FLAGS=""
+ C_INCLUDE_DIR='${top_srcdir}/include/c_std'
+ ;;
+ c)
+ CSHADOW_FLAGS=""
+ C_INCLUDE_DIR='${top_srcdir}/include/c'
+ ;;
esac
+
+ AC_SUBST(CSHADOW_FLAGS)
+ AC_SUBST(C_INCLUDE_DIR)
+ AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
])
dnl
-dnl Check for whether or not to do shadowed C headers.
+dnl Check for wide character support. Has the same effect as the option
+dnl in gcc's configure, but in a form that autoconf can mess with.
dnl
-dnl GLIBCPP_ENABLE_SHADOW
-dnl --enable-cshadow-headers [does stuff].
-dnl --disable-cshadow-headers [does not do stuff].
-dnl + This will eventually need to be on by default.
-dnl + Usage: GLIBCPP_ENABLE_SHADOW[(DEFAULT)]
+dnl GLIBCPP_ENABLE_C_MBCHAR
+dnl --enable-c-mbchar requests all the wchar_t stuff.
+dnl --disable-c-mbchar doesn't.
+dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
dnl defaults to `no'.
-AC_DEFUN(GLIBCPP_ENABLE_SHADOW, [dnl
-define([GLIBCPP_ENABLE_SHADOW_DEFAULT], ifelse($1, yes, yes, no))dnl
-AC_MSG_CHECKING([for enabled cshadow headers])
-AC_ARG_ENABLE(cshadow-headers,
+AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
+define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
+AC_ARG_ENABLE(c-mbchar,
changequote(<<, >>)dnl
-<< --enable-cshadow-headers construct "shadowed" C header files for
- g++ [default=>>GLIBCPP_ENABLE_SHADOW_DEFAULT],
+<< --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
changequote([, ])dnl
[case "$enableval" in
- yes) enable_cshadow_headers=yes
- ;;
- no) enable_cshadow_headers=no
- ;;
- *) AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers])
- ;;
+ yes) enable_c_mbchar=yes ;;
+ no) enable_c_mbchar=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
esac],
-enable_cshadow_headers=GLIBCPP_ENABLE_SHADOW_DEFAULT)dnl
-AC_MSG_RESULT($enable_cshadow_headers)
-dnl Option parsed, now set things appropriately
-case "$enable_cshadow_headers" in
- yes)
- CSHADOWFLAGS="-D_GNU_SOURCE"
- CSHADOW_INCLUDES=" -I$srcdir/shadow -I$blddir/cshadow"
- ;;
- no)
- CSHADOWFLAGS=""
- CSHADOW_INCLUDES=""
- ;;
-esac
+enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
+dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
+])
+
-AC_SUBST(CSHADOWFLAGS)
-AC_SUBST(CSHADOW_INCLUDES)
-AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cshadow_headers" = yes)
+dnl
+dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
+dnl
+dnl GLIBCPP_INCLUDE_DIR
+dnl C_INCLUDE_DIR
+dnl TOPLEVEL_INCLUDES
+dnl LIBMATH_INCLUDES
+dnl LIBSUPCXX_INCLUDES
+dnl LIBIO_INCLUDES
+dnl CSHADOW_INCLUDES
+dnl
+dnl GLIBCPP_EXPORT_INCLUDE
+AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
+ # Root level of the include sources.
+ GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
+
+ # Can either use include/c or include/c_std to grab "C" headers. This
+ # variable is set to the include directory currently in use.
+ # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS
+
+ # Passed down for canadian crosses.
+ if test x"$CANADIAN" = xyes; then
+ TOPLEVEL_INCLUDES='-I$(includedir)'
+ fi
+
+ LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
+
+ LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
+
+ #if GLIBCPP_NEED_LIBIO
+ LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
+ #else
+ #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
+ #endif
+
+ #if GLIBCPP_USE_CSHADOW
+ # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
+ # -I$(top_blddir)/cshadow'
+ #else
+ CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
+ #endif
+
+ # Now, export this to all the little Makefiles....
+ AC_SUBST(GLIBCPP_INCLUDE_DIR)
+ AC_SUBST(TOPLEVEL_INCLUDES)
+ AC_SUBST(LIBMATH_INCLUDES)
+ AC_SUBST(LIBSUPCXX_INCLUDES)
+ AC_SUBST(LIBIO_INCLUDES)
+ AC_SUBST(CSTD_INCLUDES)
+])
+
+
+dnl
+dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
+dnl
+AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
+ # Optimization flags that are probably a good idea for thrill-seekers. Just
+ # uncomment the lines below and make, everything else is ready to go...
+ # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
+ OPTIMIZE_CXXFLAGS=
+ AC_SUBST(OPTIMIZE_CXXFLAGS)
+
+ WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
+ AC_SUBST(WARN_FLAGS)
+])
+
+dnl
+dnl GLIBCPP_EXPORT_INSTALL_INFO
+dnl calculates gxx_install_dir
+dnl exports glibcpp_toolexecdir
+dnl exports glibcpp_toolexeclibdir
+dnl
+dnl Assumes cross_compiling bits already done, and with_cross_host in
+dnl particular
+dnl
+dnl GLIBCPP_EXPORT_INSTALL_INFO
+AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
+
+glibcpp_toolexecdir=no
+glibcpp_toolexeclibdir=no
+
+AC_MSG_CHECKING([for interface version number])
+libstdcxx_interface=$INTERFACE
+AC_MSG_RESULT($libstdcxx_interface)
+
+# Process the option --with-gxx-include-dir=<path to include-files directory>
+AC_MSG_CHECKING([for --with-gxx-include-dir])
+AC_ARG_WITH(gxx-include-dir,
+[ --with-gxx-include-dir the installation directory for include files],
+[case "${withval}" in
+ yes)
+ AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
+ gxx_include_dir=no
+ ;;
+ no)
+ gxx_include_dir=no
+ ;;
+ *)
+ gxx_include_dir=${withval}
+ ;;
+esac], [gxx_include_dir=no])
+AC_MSG_RESULT($gxx_include_dir)
+
+# Process the option "--enable-version-specific-runtime-libs"
+AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+AC_ARG_ENABLE(version-specific-runtime-libs,
+[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
+[ version_specific_libs=yes
+# Need the gcc compiler version to know where to install libraries
+# and header files if --enable-version-specific-runtime-libs option
+# is selected.
+changequote(,)dnl
+gcc_version_trigger=${srcdir}/../gcc/version.c
+gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
+gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
+glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}
+changequote([,])dnl
+],version_specific_libs=no)
+AC_MSG_RESULT($version_specific_libs)
+
+# Default case for install directory for include files.
+if test x"$version_specific_libs" = x"no" \
+ && test x"$gxx_include_dir" = x"no"; then
+ gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
+fi
+
+# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
+# Install a library built with a cross compiler in tooldir, not libdir.
+if test x"$glibcpp_toolexecdir" = x"no"; then
+ if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
+ glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
+ glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
+ else
+ glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
+ fi
+fi
+
+AC_MSG_CHECKING([for install location])
+AC_MSG_RESULT($gxx_include_dir)
+
+AC_SUBST(gxx_include_dir)
+AC_SUBST(glibcpp_toolexecdir)
+AC_SUBST(glibcpp_toolexeclibdir)
])
# serial 1
-AC_DEFUN(AC_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
+AC_DEFUN(AC_LC_MESSAGES, [
+ AC_CHECK_HEADER(locale.h, [
AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
if test $ac_cv_val_LC_MESSAGES = yes; then
AC_DEFINE(HAVE_LC_MESSAGES)
fi
- fi])
+ ])
+])
# Check for functions in math library.
[AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
AC_SUBST(LIBSTRINGOBJS)dnl
])
+
+
+dnl This macro searches for a GNU version of make. If a match is found, the
+dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
+dnl set to "#". This is useful for including a special features in a Makefile,
+dnl which cannot be handled by other versions of make. The variable
+dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
+dnl the empty string otherwise.
+dnl
+dnl Here is an example of its use:
+dnl
+dnl Makefile.in might contain:
+dnl
+dnl # A failsafe way of putting a dependency rule into a makefile
+dnl $(DEPEND):
+dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
+dnl
+dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
+dnl @ifGNUmake@ include $(DEPEND)
+dnl @ifGNUmake@ endif
+dnl
+dnl Then configure.in would normally contain:
+dnl
+dnl CHECK_GNU_MAKE()
+dnl AC_OUTPUT(Makefile)
+dnl
+dnl Then perhaps to cause gnu make to override any other make, we could do
+dnl something like this (note that GNU make always looks for GNUmakefile first):
+dnl
+dnl if ! test x$_cv_gnu_make_command = x ; then
+dnl mv Makefile GNUmakefile
+dnl echo .DEFAULT: > Makefile ;
+dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
+dnl fi
+dnl
+dnl Then, if any (well almost any) other make is called, and GNU make also
+dnl exists, then the other make wraps the GNU make.
+dnl
+dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
+dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
+dnl
+dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
+dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
+dnl #### conditional's subshell (" --version" is not a command), using a
+dnl #### different option to grep(1).
+dnl #### -pme
+dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
+dnl #### ${MAKE:-make}).
+dnl #### -msokolov
+AC_DEFUN(
+ GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
+ _cv_gnu_make_command='' ;
+dnl Search all the common names for GNU make
+ for a in "${MAKE-make}" make gmake gnumake ; do
+ if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
+ then
+ _cv_gnu_make_command=$a ;
+ break;
+ fi
+ done ;
+ ) ;
+dnl If there was a GNU version, then set @ifGNUmake@ to the empty
+dnl string, '#' otherwise
+ if test "x$_cv_gnu_make_command" != "x" ; then
+ ifGNUmake='' ;
+ else
+ ifGNUmake='#' ;
+ fi
+ AC_SUBST(ifGNUmake)
+])
+
+sinclude(../libtool.m4)
+dnl The lines below arrange for aclocal not to bring an installed
+dnl libtool.m4 into aclocal.m4, while still arranging for automake to
+dnl add a definition of LIBTOOL to Makefile.in.
+ifelse(,,,[AC_SUBST(LIBTOOL)
+AC_DEFUN([AM_PROG_LIBTOOL])
+AC_DEFUN([AC_LIBTOOL_DLOPEN])
+AC_DEFUN([AC_PROG_LD])
+])
+