*) 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 ...
[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
dnl Fool anybody using AC_PROG_CXX.
AC_PROVIDE([AC_PROG_CXX])
-# Use CXX_libstdcxx so that we do not cause CXX to be cached with the
+# Use glibcpp_CXX 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])
+glibcpp_CXX=$CXX
+AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+AC_SUBST(glibcpp_CXX)
+CXX=$glibcpp_CXX
+test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
AC_PROG_CXX_GNU
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
- AC_CHECK_TOOL(RANLIB, ranlib, :)
-
+ AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
+ AC_CHECK_TOOL(glibcpp_expect, expect, expect-not-found-in-path-error)
+ AC_CHECK_TOOL(glibcpp_runtest, runtest, runtest-not-found-in-path-error)
+ AC_SUBST(glibcpp_expect)
+ AC_SUBST(glibcpp_runtest)
AC_PROG_INSTALL
AM_MAINTAINER_MODE
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
- GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
- GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
- AC_SUBST(GLIBCPP_CFLAGS)
- AC_SUBST(GLIBCPP_CXXFLAGS)
+ # 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 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.
+dnl compiler supports it and the user has not requested debug mode.
+dnl
dnl GLIBCPP_CHECK_COMPILER_FEATURES
AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
# All these tests are for C++; save the language and the compiler flags.
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 "$ac_gabydiags" = "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'
# 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)
])
AC_REQUIRE([AC_PROG_LD])
# Set --gc-sections.
- if test "$ac_cv_prog_gnu_ld" = "broken"; then
+ 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.
fi
# Set linker optimization flags.
- if test "$ac_cv_prog_gnu_ld" = "yes"; then
+ if test x"$ac_cv_prog_gnu_ld" = x"yes" && test x"$enable_debug" = x"no"; then
OPT_LDFLAGS='-Wl,-O1'
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_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_MSG_CHECKING([for $1 declaration])
- 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
- ])
- AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ 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_MSG_CHECKING([for $1 declaration])
- 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
- ])
- AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ 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_MSG_CHECKING([for $1 declaration])
- 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
- ])
- 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
])
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 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
AC_MSG_CHECKING([for $1 declaration])
- 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
- ])
+ 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)
dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
AC_MSG_CHECKING([for $1 declaration])
- 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
- ])
+ 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_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])
- ])
+ 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'`
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 Define HAVE_STRTOLD if "strtold" is declared and links
+dnl Define HAVE_STRTOF if "strtof" is declared and links
+dnl Define HAVE_DRAND48 if "drand48" is declared and links
dnl
dnl GLIBCPP_CHECK_STDLIB_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
AC_CHECK_FUNCS(strtof)
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
+ AC_CHECK_FUNCS(drand48)
CXXFLAGS="$ac_save_CXXFLAGS"
])
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.
- 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 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_CHECK_LIB(m, main)
- AC_REPLACE_MATHFUNCS(cabs cabsf 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_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(cabsl 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. Also, if
-dnl architecture-specific flags are required for 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 GLIBCPP_CHECK_CPU
-AC_DEFUN(GLIBCPP_CHECK_CPU, [
- AC_MSG_CHECKING([for cpu config directory])
-# Currently unused, but could be useful.
-# CPU_FLAGS=
- case "${target_cpu}" in
- alpha*)
- cpu_include_dir="config/cpu/alpha"
- ;;
- arm*)
- cpu_include_dir="config/cpu/arm"
- ;;
- ia64)
- cpu_include_dir="config/cpu/ia64"
- ;;
- 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"
- ;;
- 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)
-])
-
-
-dnl Check to see what OS we are compiling for. Also, if os-specific flags
-dnl are required for compilation, add them here.
-dnl
-dnl GLIBCPP_CHECK_OS
-AC_DEFUN(GLIBCPP_CHECK_OS, [
- AC_MSG_CHECKING([for OS config directory])
-# Currently unused, but could be useful.
-# OS_FLAGS=
- case "${target_os}" in
- aix4.[[3456789]]* | aix[[56789]]*)
- os_include_dir="config/os/aix"
- case "$CXX" in
- *pthread*)
- enable_threads='posix'
- ;;
- *)
- enable_threads='no'
- ;;
- esac
- ;;
- aix*)
- os_include_dir="config/os/aix"
- ;;
- bsd* | freebsd*)
- os_include_dir="config/os/bsd"
- ;;
- linux*)
- os_include_dir="config/os/gnu-linux"
- ;;
- irix*)
- os_include_dir="config/os/irix"
- ;;
- solaris2.5*)
- os_include_dir="config/os/solaris/solaris2.5"
- ;;
- solaris2.6*)
- os_include_dir="config/os/solaris/solaris2.6"
- ;;
- solaris2.7* | solaris2.8*)
- os_include_dir="config/os/solaris/solaris2.7"
- ;;
- *)
- os_include_dir="config/os/generic"
- ;;
- esac
- AC_MSG_RESULT($os_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 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"
- 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"
- 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/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
-
- AC_LINK_FILES($ctype_include_dir/bits/ctype_base.h,
- include/bits/ctype_base.h)
- AC_LINK_FILES($ctype_include_dir/bits/ctype_inline.h,
- include/bits/ctype_inline.h)
- AC_LINK_FILES($ctype_include_dir/bits/ctype_noninline.h, \
- include/bits/ctype_noninline.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, [
- if test x$enable_c_mbchar != xno; then
-
- 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 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)
- if test x"$use_native_mbstatet" = xno; then
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
- fi
+ 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 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
- else
- ac_isoC9X_wchar_t=no
- fi
- AC_MSG_RESULT($ac_isoC9X_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)
- AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
- ac_XPG2funcs=yes, ac_XPG2funcs=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 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 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 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"
- AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
- AC_MSG_RESULT("yes")
- else
- libinst_wstring_la=""
- AC_MSG_RESULT("no")
- fi
- AC_SUBST(libinst_wstring_la)
+ 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
+ AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
+ AC_MSG_RESULT("yes")
else
- AC_MSG_WARN([<wchar.h> not found])
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
+ 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
])
case "${enable_debug}" in
yes)
DEBUG_FLAGS='-O0 -ggdb3'
- ;;
+ ;;
no)
DEBUG_FLAGS='-g'
;;
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.
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
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 I/O package
case x${enable_cstdio_flag} in
- xlibio | x | xno | xnone | xyes)
- # default
+ 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)
fi
fi
;;
- xstdio)
+ 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
;;
*)
echo "$enable_cstdio is an unknown io package" 1>&2
;;
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
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 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.],
- if test x$enable_threads = xno; then
- enable_threads=''
- fi,
- enable_threads='')
-
- enable_threads_flag=$enable_threads
-
- 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
- ;;
- esac
+ AC_MSG_CHECKING([for thread model used by GCC])
+ target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
+ AC_MSG_RESULT([$target_thread_file])
dnl Check for thread package actually supported in libstdc++
THREADH=
THREADH=threads-posix.h
;;
decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
- AC_MSG_ERROR(thread package $THREADS not yet supported)
+ AC_MSG_WARN(disabling unsupported thread package $target_thread_file)
+ THREADH=threads-no.h
;;
*)
- AC_MSG_ERROR($THREADS is an unknown thread package)
+ AC_MSG_ERROR($target_thread_file: unsupported/unknown thread package)
;;
esac
- AC_MSG_RESULT($THREADH)
AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
if test $THREADH != threads-no.h; then
])
-dnl Enable atomic locking
-dnl GLIBCPP_ENABLE_ATOMICITY
-AC_DEFUN(GLIBCPP_ENABLE_ATOMICITY, [
- AC_MSG_CHECKING([for atomicity.h])
- case "$target" in
- *-*-linux* | sparc*-*-*)
- ATOMICITYH=$cpu_include_dir
- ;;
- *-*-aix* | *-*-irix*)
- ATOMICITYH=$os_include_dir
- ;;
- *)
- # bit of overkill on this text...
- AC_MSG_ERROR([Atomic locking requested, but $enable_threads is an unknown thread package and atomic operations are not present in the CPU])
- ;;
- esac
- AC_MSG_RESULT($ATOMICITYH/bits/atomicity.h)
- AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, include/bits/atomicity.h)
+dnl
+dnl Check for exception handling support. If an explicit enable/disable
+dnl sjlj exceptions is given, we don't have to detect. Otherwise the
+dnl target may or may not support call frame exceptions.
+dnl
+dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
+dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
+dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
+dnl
+dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
+dnl
+AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
+ AC_MSG_CHECKING([for exception model to use])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_ARG_ENABLE(sjlj-exceptions,
+ [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
+ [:],
+ [dnl Botheration. Now we've got to detect the exception model.
+ dnl Link tests against libgcc.a are problematic since -- at least
+ dnl as of this writing -- we've not been given proper -L bits for
+ dnl single-tree newlib and libgloss.
+ dnl
+ dnl This is what AC_TRY_COMPILE would do if it didn't delete the
+ dnl conftest files before we got a change to grep them first.
+ cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+struct S { ~S(); };
+void bar();
+void foo()
+{
+ S s;
+ bar();
+}
+EOF
+ old_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS=-S
+ if AC_TRY_EVAL(ac_compile); then
+ if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
+ enable_sjlj_exceptions=yes
+ elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
+ enable_sjlj_exceptions=no
+ fi
+ fi
+ CXXFLAGS="$old_CXXFLAGS"
+ rm -f conftest*])
+ if test x$enable_sjlj_exceptions = xyes; then
+ AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
+ [Define if the compiler is configured for setjmp/longjmp exceptions.])
+ ac_exception_model_name=sjlj
+ elif test x$enable_sjlj_exceptions = xno; then
+ ac_exception_model_name="call frame"
+ else
+ AC_MSG_ERROR([unable to detect exception model])
+ fi
+ AC_LANG_RESTORE
+ AC_MSG_RESULT($ac_exception_model_name)
+])
+
+
+dnl
+dnl Check for ISO/IEC 9899:1999 "C99" support.
+dnl
+dnl GLIBCPP_ENABLE_C99
+dnl --enable-c99 defines _GLIBCPP_USE_C99
+dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
+dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
+dnl Where DEFAULT is either `yes' or `no'. If omitted, it
+dnl defaults to `no'.
+dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
+dnl
+dnl GLIBCPP_ENABLE_C99
+AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
+ define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
+
+ AC_ARG_ENABLE(c99,
+ changequote(<<, >>)dnl
+ <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
+ changequote([, ])dnl
+ [case "$enableval" in
+ yes) enable_c99=yes ;;
+ no) enable_c99=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
+ esac],
+ enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ # Check for the existence of <math.h> functions used if C99 is enabled.
+ AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [isgreaterequal(0.0,0.0);], , [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [islessgreater(0.0,0.0);], , [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [isunordered(0.0,0.0);], , [ac_c99_math=no])
+
+ # Check for the existence in <stdlib.h> of lldiv_t, et. al.
+ AC_CHECK_FUNC(strtoll,,ac_c99_stdlib=no)
+ AC_CHECK_FUNC(strtoull,,ac_c99_stdlib=no)
+ AC_CHECK_FUNC(llabs,,ac_c99_stdlib=no)
+ AC_CHECK_FUNC(lldiv,,ac_c99_stdlib=no)
+ AC_CHECK_FUNC(atoll,,ac_c99_stdlib=no)
+
+ AC_MSG_CHECKING([for lldiv_t declaration])
+ AC_CACHE_VAL(ac_c99_lldiv_t, [
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [ lldiv_t mydivt;],
+ [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
+ ])
+ AC_MSG_RESULT($ac_c99_lldiv_t)
+ if test x"$ac_c99_lldiv_t" = x"no"; then
+ ac_c99_stdlib=no;
+ fi;
+
+ # Check for the existence of <wchar.h> functions used if C99 is enabled.
+ AC_CHECK_FUNC(wcstold,,ac_c99_wchar=no)
+ AC_CHECK_FUNC(wcstoll,,ac_c99_wchar=no)
+ AC_CHECK_FUNC(wcstoull,,ac_c99_wchar=no)
+
+ AC_MSG_CHECKING([for enabled ISO C99 support])
+ if test x"$ac_c99_math" = x"no" || test x"$ac_c99_wchar" = x"no" \
+ || test x"$ac_c99_stdlib" = x"no"; then
+ enable_c99=no;
+ fi;
+ AC_MSG_RESULT($enable_c99)
+
+ # Option parsed, now set things appropriately
+ if test x"$enable_c99" = x"yes"; then
+ AC_DEFINE(_GLIBCPP_USE_C99)
+ fi
+
+ AC_LANG_RESTORE
])
dnl
dnl Check for template specializations for the 'long long' type extension.
+dnl NB: Must check for C99 support before calling _GLIBCPP_ENABLE_LONG_LONG
dnl
dnl GLIBCPP_ENABLE_LONG_LONG
dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
-dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
+dnl Where DEFAULT is either `yes' or `no'. If omitted, it
dnl defaults to `no'.
dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
dnl
esac],
enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
- # Check for the existance of functions used if long long is enabled.
- AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
- AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
-
- AC_MSG_CHECKING([for enabled long long])
- if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
+ # iostreams require strtoll, strtoull to compile. If the
+ # GLIBCPP_ENABLE_C99 tests found these, and if C99 support is enabled,
+ # go ahead and allow long long to be used.
+ if test x"$enable_c99" = x"no"; then
enable_long_long=no;
- fi;
- AC_MSG_RESULT($enable_long_long)
+ fi
- dnl Option parsed, now set things appropriately
+ # Option parsed, now set things appropriately
+ AC_MSG_CHECKING([for enabled long long support])
if test x"$enable_long_long" = xyes; then
AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
fi
+ AC_MSG_RESULT($enable_long_long)
])
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
+ ;;
+ c_std)
+ enable_cheaders=c_std
;;
- no) enable_cshadow_headers=no
+ c_shadow)
+ enable_cheaders=c_shadow
;;
- *) AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers])
+ *) 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'
;;
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)
])
# 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 cross compilers, canadian crosses.
- TOPLEVEL_INCLUDES='-I$(includedir)'
+ # Passed down for canadian crosses.
+ if test x"$CANADIAN" = xyes; then
+ TOPLEVEL_INCLUDES='-I$(includedir)'
+ fi
LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
# 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....
AC_SUBST(LIBMATH_INCLUDES)
AC_SUBST(LIBSUPCXX_INCLUDES)
AC_SUBST(LIBIO_INCLUDES)
- AC_SUBST(CSHADOW_INCLUDES)
+ AC_SUBST(CSTD_INCLUDES)
])
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.
# 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.
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 ;
])
+
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.