OSDN Git Service

* update_web_docs: Handle -r and -d options to generate docs for a
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / aclocal.m4
index c00423b..6823268 100644 (file)
@@ -26,20 +26,10 @@ AC_DEFUN(GLIBCPP_CONFIGURE, [
     *)   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)
 
-  AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
+  AM_INIT_AUTOMAKE(libstdc++, 2.91)
 
   # Never versions of autoconf add an underscore to these functions.
   # Prevent future problems ...
@@ -155,27 +145,16 @@ LIB_AC_PROG_CXX
     AC_EXEEXT
   fi
 
-  # configure.host sets the following important variables
-  #        glibcpp_cflags    - host specific C compiler flags
-  #        glibcpp_cxxflags  - host specific C++ compiler flags
-  glibcpp_cflags=
-  glibcpp_cxxflags=
-
   . [$]{glibcpp_basedir}/configure.host
 
   case [$]{glibcpp_basedir} in
-    /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
+    /* | [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 modifying the same flags, it also sets up symlinks.
+  # addition to possibly modifying the same flags, it also sets up symlinks.
   GLIBCPP_CHECK_TARGET
-
-  GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
-  GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
-  AC_SUBST(GLIBCPP_CFLAGS)
-  AC_SUBST(GLIBCPP_CXXFLAGS)
 ])
 
 
@@ -190,10 +169,10 @@ if test ! -f stamp-sanity-compiler; then
   AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
   AC_EGREP_CPP(ok, [
-  #if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) 
+  #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
@@ -206,8 +185,6 @@ dnl Test for newer compiler features, or features that are present in newer
 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 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.
@@ -231,22 +208,6 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
     WERROR='-Werror'
   fi
 
-  # Check for more sophisticated diagnostic control.
-  AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
-  CXXFLAGS='-Werror -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 x"$ac_gabydiags" = x"yes"; then
-    WFMT_FLAGS='-fdiagnostics-show-location=once'
-  fi
-  AC_MSG_RESULT($ac_gabydiags)
-
   # Check for -ffunction-sections -fdata-sections
   AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
   CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
@@ -265,7 +226,6 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
 
   AC_LANG_RESTORE
   AC_SUBST(WERROR)
-  AC_SUBST(WFMT_FLAGS)
   AC_SUBST(SECTION_FLAGS)
 ])
 
@@ -337,8 +297,34 @@ AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
 
 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
@@ -348,24 +334,60 @@ dnl ASSUMES argument is a math function with ONE parameter
 dnl
 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
+  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);], 
+                     [ $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 Check to see if the (math function) argument passed is
 dnl 1) declared when using the c++ compiler
@@ -379,24 +401,39 @@ dnl ASSUMES argument is a math function with TWO parameters
 dnl
 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
+  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);], 
+                     [ $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)
-  if test x$glibcpp_cv_func_$1_use = x"yes"; then
-    AC_CHECK_FUNCS($1)    
-  fi
 ])
 
-
 dnl
 dnl Check to see if the (math function) argument passed is
 dnl 1) declared when using the c++ compiler
@@ -410,20 +447,14 @@ dnl ASSUMES argument is a math function with THREE parameters
 dnl
 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_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)
+  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
 ])
 
@@ -624,16 +655,17 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
   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_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(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)
@@ -641,28 +673,25 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
   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)
@@ -670,11 +699,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
   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)
 
@@ -682,68 +707,26 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
   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.
-  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_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(_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"
@@ -792,290 +775,103 @@ AC_DEFUN(GLIBCPP_CHECK_TARGET, [
 
 
 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_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_CTYPE_SUPPORT, [
-  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/os/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/os/bsd/freebsd"
-      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/os/bsd/freebsd"
-      ctype_default=no
-    fi
-    fi
-
-    dnl Test for <ctype> functionality -- NetBSD
-    if test $ctype_default = "yes"; then
-    AC_MSG_CHECKING([<ctype> for NetBSD])
-    AC_TRY_COMPILE([#include <ctype.h>],
-    [int
-    foo (int a)
-    { return _S + _C + _U + _L \
-      + _N + _P + _X + _tolower_tab_[a] + _toupper_tab_[a];}], \
-    ctype_netbsd=yes, ctype_netbsd=no)
-    AC_MSG_RESULT($ctype_netbsd)
-    if test $ctype_netbsd = "yes"; then
-      ctype_include_dir="config/os/bsd/netbsd"
-      ctype_default=no
-    fi
-    fi
-
-    dnl Test for <ctype> functionality -- Solaris 2.6 and up
-    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/os/solaris/solaris2.6"
-        AC_MSG_RESULT([Solaris 2.6])
-        ctype_default=no
-      else
-        ctype_include_dir="config/os/solaris/solaris2.7"
-        AC_MSG_RESULT([Solaris 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/os/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/os/aix"
-      ctype_default=no
-    fi
-    fi
-
-    dnl Test for <ctype> functionality -- IRIX
-    if test $ctype_default = "yes"; then 
-    AC_MSG_CHECKING([<ctype> for IRIX])
-    AC_TRY_COMPILE([#include <ctype.h>],
-    [int
-    foo (int a)
-    { return _U + _L + _N + _S + _P + _C + _B + _X + \
-             _A + _PR + _G + _BL;}], \
-    ctype_irix=yes, ctype_irix=no)
-    AC_MSG_RESULT($ctype_irix)
-    if test $ctype_irix = "yes"; then
-      ctype_include_dir="config/os/irix"
-      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/os/newlib"
-      ctype_default=no
-    fi
-    fi
-
-    if test $ctype_default = "yes"; then
-      ctype_include_dir="config/os/generic"
-      AC_MSG_WARN("Using default ctype headers.")
-    fi
-  ])
-])
-
-
-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, [
-  if test x$enable_c_mbchar != xno; then
-
-    dnl Sanity check for existence of ISO C99 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 C99 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 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 Test wchar.h for mbstate_t, which is needed for char_traits
-      dnl 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)
+  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])
+    AC_TRY_COMPILE([#include <wchar.h>],
+    [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 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])
-      AC_TRY_COMPILE([#include <wchar.h>],
-      [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])
-      AC_TRY_COMPILE([
-        #include <wchar.h>
-        #include <stddef.h>],
-      [wint_t i = WEOF;],
-      has_weof=yes, has_weof=no)
-      AC_MSG_RESULT($has_weof)
+    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])
+    AC_TRY_COMPILE([
+      #include <wchar.h>
+      #include <stddef.h>],
+    [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 \
-      wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
+    dnl Tests for wide character functions used in char_traits<wchar_t>.
+    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_isoC99_wchar_t=no
-      fi
-      AC_MSG_RESULT($ac_isoC99_wchar_t)
+    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_isoC99_wchar_t=no
+    fi
+    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_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)
+    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_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"
+    LIBS="$ac_save_LIBS"
 
-      AC_MSG_CHECKING([for XPG2 wchar_t support])
-      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_isoC99_wchar_t" = xyes \
-         && test x"$ac_XPG2_wchar_t" = xyes; then
-        libinst_wstring_la="libinst-wstring.la"
-        AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
-        AC_MSG_RESULT("yes")
-      else
-        libinst_wstring_la=""
-        AC_MSG_RESULT("no")
-      fi
-      AC_SUBST(libinst_wstring_la)
+    AC_MSG_CHECKING([for XPG2 wchar_t support])
+    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_isoC99_wchar_t" = xyes \
+       && test x"$ac_XPG2_wchar_t" = xyes; then
+      AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
+      AC_MSG_RESULT("yes")
     else
-      AC_MSG_WARN([<wchar.h> not found])
+      AC_MSG_RESULT("no")
     fi
-
   else
-    dnl Wide characters disabled by the user.  Maybe print a warning?
-    :
+    dnl Wide characters disabled by the user. 
+    AC_MSG_WARN([wchar_t support disabled.])
   fi
 ])
 
@@ -1196,9 +992,9 @@ dnl     experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
 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.
@@ -1242,6 +1038,51 @@ AC_SUBST(EXTRA_CXX_FLAGS)
 
 
 dnl
+dnl Check for which locale library to use:  gnu or generic.
+dnl
+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)
+      ;;
+    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
 dnl Check for which I/O library to use:  libio, or something specific.
 dnl
 dnl GLIBCPP_ENABLE_CSTDIO
@@ -1252,8 +1093,9 @@ dnl
 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
   AC_MSG_CHECKING([for cstdio to use])
   AC_ARG_ENABLE(cstdio,
-  [  --enable-cstdio        enable stdio 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=stdio
   fi,
@@ -1265,7 +1107,8 @@ AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
   case x${enable_cstdio_flag} in
     xlibio)
       CSTDIO_H=config/c_io_libio.h
-      CSTDIO_CC=config/c_io_libio.cc
+      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)
@@ -1321,14 +1164,13 @@ AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
     xstdio | x | xno | xnone | xyes)
       # default
       CSTDIO_H=config/c_io_stdio.h
-      CSTDIO_CC=config/c_io_stdio.cc
+      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
-      # Wide characters are not supported with this package.
-      enable_c_mbchar=no
       ;;
     *)
       echo "$enable_cstdio is an unknown io package" 1>&2
@@ -1336,7 +1178,8 @@ AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
       ;;
   esac
   AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
-  AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
+  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
@@ -1370,8 +1213,9 @@ AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
   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,
@@ -1424,19 +1268,6 @@ AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
 ])
 
 
-dnl Enable atomic locking
-dnl GLIBCPP_ENABLE_ATOMICITY
-AC_DEFUN(GLIBCPP_ENABLE_ATOMICITY, [
-    AC_MSG_CHECKING([for atomicity.h])
-    # We have ATOMICITY already from GLIBCPP_CONFIGURE
-    if test "$ATOMICITYH" = "config/cpu/generic"; then
-      AC_MSG_WARN([No ATOMICITY settings found, using generic atomic ops.])
-    fi
-    AC_MSG_RESULT($ATOMICITYH/bits/atomicity.h)
-    AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, include/bits/atomicity.h)
-])
-
-
 dnl
 dnl Check for template specializations for the 'long long' type extension.
 dnl
@@ -1504,43 +1335,51 @@ AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
 
 
 dnl
-dnl Check for whether or not to do shadowed C headers.
+dnl Check for what kind of C headers to use.
 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       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,
+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-cshadow-headers construct "shadowed" C header files for
-                           g++ [default=>>GLIBCPP_ENABLE_SHADOW_DEFAULT],
+<<  --enable-cheaders construct "C" header files for
+                           g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
 changequote([, ])
   [case "$enableval" in
-   yes) enable_cshadow_headers=yes 
+   c) 
+        enable_cheaders=c 
         ;;
-   no)  enable_cshadow_headers=no 
+   c_std)  
+        enable_cheaders=c_std 
         ;;
-   *)   AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers]) 
+   c_shadow)  
+        enable_cheaders=c_shadow 
+        ;;
+   *)   AC_MSG_ERROR([Unknown argument to enable/disable "C" headers]) 
         ;;
   esac],
-  enable_cshadow_headers=GLIBCPP_ENABLE_SHADOW_DEFAULT)
-  AC_MSG_RESULT($enable_cshadow_headers)
+  enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
+  AC_MSG_RESULT($enable_cheaders)
 
   dnl Option parsed, now set things appropriately
-  dnl NB: these things may be duplicated in c++config.h as well.
-  case "$enable_cshadow_headers" in
-    yes) 
+  case "$enable_cheaders" in
+    c_shadow) 
         CSHADOW_FLAGS="-fno-builtin"
-        C_INCLUDE_DIR='${top_srcdir}/include/c_std'
+        C_INCLUDE_DIR='${top_srcdir}/include/c_shadow'
         AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
         ;;
-    no)   
+    c_std)   
+        CSHADOW_FLAGS=""
+        C_INCLUDE_DIR='${top_srcdir}/include/c_std'
+        ;;
+    c)   
         CSHADOW_FLAGS=""
         C_INCLUDE_DIR='${top_srcdir}/include/c'
         ;;
@@ -1548,7 +1387,7 @@ changequote([, ])
 
   AC_SUBST(CSHADOW_FLAGS)
   AC_SUBST(C_INCLUDE_DIR)
-  AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cshadow_headers" = yes)
+  AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
 ])
 
 
@@ -1596,7 +1435,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
 
   # 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_SHADOW
+  # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_CHEADERS
    
   # Passed down for canadian crosses.
   if  test x"$CANADIAN" = xyes; then
@@ -1617,7 +1456,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   #  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
   #                   -I$(top_blddir)/cshadow'
   #else
-  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
+  CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
   #endif
 
   # Now, export this to all the little Makefiles....
@@ -1626,7 +1465,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   AC_SUBST(LIBMATH_INCLUDES)
   AC_SUBST(LIBSUPCXX_INCLUDES)
   AC_SUBST(LIBIO_INCLUDES)
-  AC_SUBST(CSHADOW_INCLUDES)
+  AC_SUBST(CSTD_INCLUDES)
 ])
 
 
@@ -1644,6 +1483,88 @@ AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
   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)
+])
+
 
 # Check whether LC_MESSAGES is available in <locale.h>.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -1745,11 +1666,14 @@ 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
+          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 ;