*) 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)
+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
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)
])
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
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 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'
AC_LANG_RESTORE
AC_SUBST(WERROR)
- AC_SUBST(WFMT_FLAGS)
AC_SUBST(SECTION_FLAGS)
])
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 Define HAVE_CARGF etc if "cargf" is declared and links
-dnl
-dnl argument 1 is name of function to check
-dnl
+dnl declared when using the c++ compiler
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, [
+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>],
+ 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 argument 1 is name of function to check
+dnl
+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
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 Define HAVE_CARGF etc if "cargf" 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 declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
dnl
-dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
-AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
+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, [
])
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
dnl
dnl argument 1 is name of function to check
dnl
-dnl ASSUMES argument is a math function with THREE parameters
+dnl ASSUMES argument is a math function with TWO parameters
dnl
-dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
-AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
+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, [
])
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 Define HAVE_CARGF etc if "cargf" is declared and links
+dnl
+dnl argument 1 is name of function to check
+dnl
+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, [
+ 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 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"
])
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_DECLS_AND_LINKAGES_1(_float trig,
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(_fabsf)
- 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(_sqrtf)
- 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,
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_2(_atan2l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl)
- 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(_sqrtl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel)
LIBS="$ac_save_LIBS"
CXXFLAGS="$ac_save_CXXFLAGS"
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)
-
else
dnl Wide characters disabled by the user.
AC_MSG_WARN([wchar_t support disabled.])
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
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)
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
;;
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
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 template specializations for the 'long long' type extension.
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
*) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
esac],
enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
+
+ # Option parsed, now set things appropriately
+ if test x"$enable_long_long" = xyes; then
+ AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
+ fi
+])
+
- # Allow use of os-dependent settings, so that macros that turn on
- # C99 capabilities can be defined and used in a consistent way.
- OS_INC_PATH=${srcdir}/$os_include_dir
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS="-I$OS_INC_PATH"
+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
- # Check for the existence of functions used if long long is enabled.
- AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
- AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
+ 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 lldiv_t, et. al.
+ # 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);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isgreaterequal(0,0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isless(0,0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[islessequal(0,0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[islessgreater(0,0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isunordered(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(glibcpp_lldiv_t_use, [
- AC_TRY_COMPILE([#include <bits/os_defines.h>
- #include <stdlib.h>],
+ AC_CACHE_VAL(ac_c99_lldiv_t, [
+ AC_TRY_COMPILE([#include <stdlib.h>],
[ lldiv_t mydivt;],
- [glibcpp_lldiv_t_use=yes], [glibcpp_lldiv_t_use=no])
+ [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
])
- AC_MSG_RESULT($glibcpp_lldiv_t_use)
- if test x$glibcpp_lldiv_t_use = x"yes"; then
- AC_DEFINE(HAVE_LLDIV_T)
- fi
+ AC_MSG_RESULT($ac_c99_lldiv_t)
+ if test x"$ac_c99_lldiv_t" = x"no"; then
+ ac_c99_stdlib=no;
+ fi;
- AC_MSG_CHECKING([for enabled long long])
- if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
- enable_long_long=no;
+ # 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_long_long)
+ AC_MSG_RESULT($enable_c99)
# Option parsed, now set things appropriately
- if test x"$enable_long_long" = xyes; then
- AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
+ if test x"$enable_c99" = x"yes"; then
+ AC_DEFINE(_GLIBCPP_USE_C99)
fi
- # Reset CFLAGS
- CFLAGS="$ac_save_CFLAGS"
+ AC_LANG_RESTORE
])
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.
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 ;
AC_DEFUN([AC_PROG_LD])
])
+