dnl
dnl Check to see if g++ can compile this library, and if so, if any version-
-dnl specific precautions need to be taken. In particular, test for
-dnl newer compiler features, or features that are present in newer
+dnl specific precautions need to be taken.
+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)
+ ok
+ #endif
+ ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above"))
+ AC_MSG_RESULT($gpp_satisfactory)
+])
+
+
+dnl
+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 FMTFLAGS='-fdiagnostics-show-location=once' if possible
+dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
+dnl
dnl Define WERROR='-Werror' if possible; g++'s that lack the new inlining
-dnl code or the new system_header pragma will die. Other options dealing
-dnl with warnings, errors, and compiler complaints may be folded into
-dnl the WERROR variable.
+dnl code or the new system_header pragma will die.
dnl
-dnl GLIBCPP_CHECK_COMPILER_VERSION
-AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
+dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
+dnl compiler supports it.
+dnl GLIBCPP_CHECK_COMPILER_FEATURES
+AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
# All these tests are for C++; save the language and the compiler flags.
# The CXXFLAGS thing is suspicious, but based on similar bits
# found in GLIBCPP_CONFIGURE.
ac_save_CXXFLAGS="$CXXFLAGS"
WERROR='-Werror'
- # 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)
- ok
- #endif
- ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above"))
- AC_MSG_RESULT($gpp_satisfactory)
-
# Check for pragma system_header.
AC_MSG_CHECKING([for g++ that supports pragma system_header])
CXXFLAGS='-Wunknown-pragmas -Werror'
CXXFLAGS=''
fi
if test "$ac_gabydiags" = "yes"; then
- FMTFLAGS='-fdiagnostics-show-location=once'
+ 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='-ffunction-sections -fdata-sections'
+ AC_TRY_COMPILE(, [int foo;
+ ], [ac_fdsections=yes], [ac_fdsections=no])
+ if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ else
+ # this is the suspicious part
+ CXXFLAGS=''
+ fi
+ if test "$ac_fdsections" = "yes"; then
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+ fi
+ AC_MSG_RESULT($ac_fdsections)
+
AC_LANG_RESTORE
AC_SUBST(WERROR)
- AC_SUBST(FMTFLAGS)
+ AC_SUBST(WFMT_FLAGS)
+ AC_SUBST(SECTION_FLAGS)
])
dnl
-dnl Check to see what builtin math functions are supported
+dnl Check to see if tricky linker opts can be used.
+dnl
+dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible
+dnl GLIBCPP_CHECK_LINKER_FEATURES
+AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
+ # All these tests are for C++; save the language and the compiler flags.
+ # Need to do this so that g++ won't try to link in libstdc++
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS='-x c++ -Wl,--gc-sections'
+
+ # Check for -Wl,--gc-sections
+ AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
+ AC_TRY_RUN([
+ int main(void)
+ {
+ try { throw 1; }
+ catch (...) { };
+ return 0;
+ }
+ ], [ac_sectionLDflags=yes], [ac_sectionLFflags=no], [ac_sectionLDflags=yes])
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ else
+ # this is the suspicious part
+ CFLAGS=''
+ fi
+ if test "$ac_sectionLDflags" = "yes"; then
+ SECTION_LDFLAGS='-Wl,--gc-sections'
+ fi
+ AC_MSG_RESULT($ac_sectionLDflags)
+
+ AC_SUBST(SECTION_LDFLAGS)
+])
+
+
dnl
-dnl Define _GLIBCPP_HAS_BUILTIN_SINF if __builtin_sinf
-dnl Define _GLIBCPP_HAS_BUILTIN_COSF if __builtin_cosf
-dnl Define _GLIBCPP_HAS_BUILTIN_FABSF if __builtin_fabsf
-dnl Define _GLIBCPP_HAS_BUILTIN_SQRTF if __builtin_sqrtf
+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_BUILTIN_MATH_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
- dnl Test for builtin math functions.
- AC_MSG_CHECKING([for __builtin_sinf])
+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, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_MSG_CHECKING([for $1 declaration])
AC_TRY_COMPILE([#include <math.h>],
- [float foo(void) { __builtin_sinf(0.0); }],
- use_builtin_sinf=yes, use_builtin_sinf=no)
- AC_MSG_RESULT($use_builtin_sinf)
- if test $use_builtin_sinf = "yes"; then
- AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SINF)
+ [ $1(0);],
+ [use_$1=yes], [use_$1=no])
+ AC_MSG_RESULT($use_$1)
+ AC_LANG_RESTORE
+ if test x$use_$1 = x"yes"; then
+ AC_CHECK_FUNCS($1)
fi
+])
+
- AC_MSG_CHECKING([for __builtin_cosf])
+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
+dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_MSG_CHECKING([for $1 declaration])
AC_TRY_COMPILE([#include <math.h>],
- [float foo(void) { __builtin_cosf(0.0); }],
- use_builtin_cosf=yes, use_builtin_cosf=no)
- AC_MSG_RESULT($use_builtin_cosf)
- if test $use_builtin_cosf = "yes"; then
- AC_DEFINE(_GLIBCPP_HAS_BUILTIN_COSF)
+ [ $1(0, 0);],
+ [use_$1=yes], [use_$1=no])
+ AC_MSG_RESULT($use_$1)
+ AC_LANG_RESTORE
+ if test x$use_$1 = x"yes"; then
+ AC_CHECK_FUNCS($1)
fi
+])
+
- AC_MSG_CHECKING([for __builtin_fabsf])
+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, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_MSG_CHECKING([for $1 declaration])
AC_TRY_COMPILE([#include <math.h>],
- [float foo(void) { __builtin_fabsf(0.0); }],
- use_builtin_fabsf=yes, use_builtin_fabsf=no)
- AC_MSG_RESULT($use_builtin_fabsf)
- if test $use_builtin_fabsf = "yes"; then
- AC_DEFINE(_GLIBCPP_HAS_BUILTIN_FABSF)
+ [ $1(0, 0, 0);],
+ [use_$1=yes], [use_$1=no])
+ AC_MSG_RESULT($use_$1)
+ AC_LANG_RESTORE
+ if test x$use_$1 = x"yes"; then
+ AC_CHECK_FUNCS($1)
fi
+])
+
- AC_MSG_CHECKING([for __builtin_sqrtf])
+dnl
+dnl Because the builtins are picky picky picky about the arguments they take,
+dnl do an explict linkage tests here.
+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 ONE parameter
+dnl
+dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
+AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_MSG_CHECKING([for $1 declaration])
AC_TRY_COMPILE([#include <math.h>],
- [float foo(void) { __builtin_sqrtf(0.0); }],
- use_builtin_sqrtf=yes, use_builtin_sqrtf=no)
- AC_MSG_RESULT($use_builtin_sqrtf)
- if test $use_builtin_sqrtf = "yes"; then
- AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SQRTF)
+ [ $1(0);],
+ [use_$1=yes], [use_$1=no])
+ AC_MSG_RESULT($use_$1)
+ AC_LANG_RESTORE
+ if test x$use_$1 = x"yes"; then
+ AC_MSG_CHECKING([for $1 linkage])
+ AC_TRY_LINK([#include <math.h>],
+ [ $1(0);],
+ [link_$1=yes], [link_$1=no])
+ AC_MSG_RESULT($link_$1)
+ if test x$link_$1 = x"yes"; then
+ ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ AC_DEFINE_UNQUOTED(${ac_tr_func})
+ fi
+ fi
+])
+
+
+dnl
+dnl Check to see what builtin math functions are supported
+dnl
+dnl check for __builtin_abs
+dnl check for __builtin_fabsf
+dnl check for __builtin_fabs
+dnl check for __builtin_fabl
+dnl check for __builtin_labs
+dnl check for __builtin_sqrtf
+dnl check for __builtin_sqrtl
+dnl check for __builtin_fsqrt
+dnl check for __builtin_sinf
+dnl check for __builtin_sin
+dnl check for __builtin_sinl
+dnl check for __builtin_cosf
+dnl check for __builtin_cos
+dnl check for __builtin_cosl
+dnl
+dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
+ dnl Test for builtin math functions.
+ dnl These are made in gcc/c-common.c
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
+
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
+
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
+
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
+ GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
+
+ dnl There is, without a doubt, a more elegant way to have these
+ dnl names exported so that they won't be stripped out of acconfig.h by
+ dnl autoheader. I leave this as an exercise to somebody less frustrated
+ dnl than I.... please email the libstdc++ list if you can figure out a
+ dnl more elegant approach (see autoconf/acgen.m4 and specifically
+ dnl AC_CHECK_FUNC for things to steal.)
+ dummyvar=no
+ if test x$dummyvar = x"yes"; then
+ AC_DEFINE(HAVE___BUILTIN_ABS)
+ AC_DEFINE(HAVE___BUILTIN_LABS)
+ AC_DEFINE(HAVE___BUILTIN_COS)
+ AC_DEFINE(HAVE___BUILTIN_COSF)
+ AC_DEFINE(HAVE___BUILTIN_COSL)
+ AC_DEFINE(HAVE___BUILTIN_FABS)
+ AC_DEFINE(HAVE___BUILTIN_FABSF)
+ AC_DEFINE(HAVE___BUILTIN_FABSL)
+ AC_DEFINE(HAVE___BUILTIN_SIN)
+ AC_DEFINE(HAVE___BUILTIN_SINF)
+ AC_DEFINE(HAVE___BUILTIN_SINL)
+ AC_DEFINE(HAVE___BUILTIN_FSQRT)
+ AC_DEFINE(HAVE___BUILTIN_SQRTF)
+ AC_DEFINE(HAVE___BUILTIN_SQRTL)
+ fi
+])
+
+
+dnl
+dnl Check to see what the underlying c library or math library is like.
+dnl These checks need to do two things:
+dnl 1) make sure the name is declared when using the c++ compiler
+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_CARGF etc if "cargf" is found.
+dnl
+dnl GLIBCPP_CHECK_MATH_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
+
+ dnl Check libm
+ AC_CHECK_LIB(m, sin, libm="-lm")
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $libm"
+
+ dnl Although not math functions, needed and for some reason checked here.
+ AC_CHECK_FUNCS(strtof strtold)
+
+ dnl Check to see if certain C math functions exist.
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(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)
+
+ 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)
+
+ dnl Some runtimes have these functions with a preceding underscore. Please
+ dnl keep this sync'd with the one above. And if you add any new symbol,
+ dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
+ dnl Check to see if certain C math functions exist.
+ dnl Check to see if certain C math functions exist.
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass)
+
+ dnl Check to see if basic C math functions have float versions.
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef)
+
+ 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)
+
+ LIBS="$ac_save_LIBS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+])
+
+
+dnl
+dnl Check to see if there is native support for complex
+dnl
+dnl Don't compile bits in math/* if native support exits.
+dnl
+dnl Define USE_COMPLEX_LONG_DOUBLE etc if "cargf" is found.
+dnl
+dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
+ dnl Check for complex versions of math functions of platform.
+ AC_CHECK_HEADERS([complex.h])
+ AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
+ clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
+ ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf copysignf)
+
+ dnl Compile the long double complex functions only if the function
+ dnl provides the non-complex long double functions that are needed.
+ dnl Currently this includes copysignl and atan2l, which should be
+ dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
+ USE_COMPLEX_LONG_DOUBLE=no
+ if test x$ac_cv_func_atan2l = x"yes" \
+ && test x$ac_cv_func_copysignl = x"yes"; then
+ USE_COMPLEX_LONG_DOUBLE=yes
+ AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
+ csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)
fi
+
+ AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
])
dnl GLIBCPP_CHECK_CPU
AC_DEFUN(GLIBCPP_CHECK_CPU, [
AC_MSG_CHECKING([for cpu primitives directory])
- CPUFLAGS=
+ CPU_FLAGS=
case "$target_cpu" in
alpha*)
cpu_include_dir="config/cpu/alpha"
;;
powerpc | rs6000)
cpu_include_dir="config/cpu/powerpc"
- CPUFLAGS='-mcpu=powerpc'
+ CPU_FLAGS='-mcpu=powerpc'
;;
sparc64 | ultrasparc)
cpu_include_dir="config/cpu/sparc/sparc64"
esac
AC_MSG_RESULT($cpu_include_dir)
AC_SUBST(cpu_include_dir)
- AC_SUBST(CPUFLAGS)
+ AC_SUBST(CPU_FLAGS)
])
dnl
-dnl Check to see what the underlying c library or math library is like.
-dnl
-dnl Define HAVE_CARGF etc if "cargf" is found.
-dnl
-dnl GLIBCPP_CHECK_MATH_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
- AC_CHECK_LIB(m, sin, libm="-lm")
- save_LIBS="$LIBS"
- LIBS="$LIBS $libm"
-
- dnl Check for complex versions of math functions of platform.
- AC_CHECK_HEADERS([complex.h])
- AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
- clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
- ctan ctanf ctanh ctanhf \
- carg cargf nan hypot hypotf atan2f expf copysignf)
-
- dnl We compile the long double complex functions only if the function
- dnl provides the non-complex long double functions.
- USE_LONG_DOUBLE=no
- AC_CHECK_FUNC(copysignl,
- USE_LONG_DOUBLE=yes
- AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
- csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l))
- AC_SUBST(USE_LONG_DOUBLE)
-
- dnl Check to see if basic C math functions have faster float versions.
- AC_CHECK_FUNCS(modf isnan isnanf isnanl isinf isinff isinfl copysign \
- copysignl cosf coshf logf log10f powf sinf sinhf sqrtf tanf tanhf \
- strtof strtold fabsf sincos sincosf sincosl finite finite fqfinite \
- fpclass qfpclass)
-
-#Some runtimes have these functions with a preceding underscore. Please
-# keep this sync'd with the one above. And if you add any new symbol,
-# please add the corresponding block in the @BOTTOM@ section of
-# acconfig.h.
-AC_CHECK_FUNCS(_modf _isnan _isnanf _isnanl _isinf _isinff _isinfl _copysign \
-_copysignl _cosf _coshf _logf _log10f _powf _sinf _sinhf _sqrtf _tanf _tanhf \
-_strtof _strtold _fabsf _sincos _sincosf _sincosl _finite _finitef _qfinite \
-_fpclass _qfpclass)
-
-LIBS="$save_LIBS"
-])
-
-
-dnl
dnl Check to see if this target can enable the wchar_t parts of libstdc++.
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 _GLIBCPP_HAS_WCHAR_MIN_MAX if WCHAR_MIN, WCHAR_MAX in wchar.h
dnl
dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
- AC_CHECK_HEADER(wchar.h,[
- dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
- AC_MSG_CHECKING([for native 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 $use_native_mbstatet = "no"; then
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
- fi
+
+ 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 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 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)
- if test $has_wchar_minmax = "yes"; then
- AC_DEFINE(_GLIBCPP_HAS_WCHAR_MIN_MAX)
- fi
+ 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)
- # Test wchar.h for WEOF, which is what we use to determine whether
- # to specialize for 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.
- AC_REPLACE_STRINGFUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset)
- AC_SUBST(libinst_wstring_la)
-
- AC_MSG_CHECKING([for wide character support])
- if test $has_weof = "yes" && test $has_wchar_minmax = "yes"; then
- libinst_wstring_la="libinst-wstring.la"
- AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
- AC_MSG_RESULT(ok)
+ 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, 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_FUNCS(iconv_open iconv_close iconv, ac_XPG2funcs=yes, ac_XPG2funcs=no)
+
+ AC_MSG_CHECKING([for XPG2 wchar_t support])
+ if test x"$ac_has_iconv_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.
+ dnl 2000-07-07-bkoz-hack-xxx
+# ac_isoC9X_wchar_t=no
+ dnl 2000-07-07-bkoz-hack-xxx
+
+ 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)
+
else
- libinst_wstring_la=""
- AC_MSG_RESULT("not specializing for wchar_t")
+ AC_MSG_WARN([<wchar.h> not found])
+ AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
fi
- ],[
- AC_MSG_WARN([<wchar.h> not found])
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
- ])
])
dnl
dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
dnl
-dnl GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT, [
+dnl Check to see if this version of GNU C++ is afflicted by bugs in
+dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
+dnl gcc-2.95.x when using the library, unless we define the default copy
+dnl ctor in the specializations of complex<>.
+dnl
+dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
+dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
+AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
AC_REQUIRE([AC_PROG_CXX])
+
+ AC_MSG_CHECKING([for GNU C++ __complex__ support])
+ AC_CACHE_VAL(glibcpp_cv_complex, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
+ dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
+ [ dcomplex x; f(x); ],
+ glibcpp_cv_complex=ok,
+ glibcpp_cv_complex=buggy
+ )
+ AC_LANG_RESTORE
+ ])
+ AC_MSG_RESULT($glibcpp_cv_complex)
+ if test $glibcpp_cv_complex = buggy; then
+ AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
+ fi
+
AC_MSG_CHECKING([for GNU C++ __complex__ float support])
AC_CACHE_VAL(glibcpp_cv_float_complex, [
AC_LANG_SAVE
dnl
-dnl
-dnl Check to see if this version of GNU C++ is afflicted by bugs in
-dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
-dnl gcc-2.95.x when using the library, unless we define the default copy
-dnl ctor in the specializations of complex<>.
-dnl
-dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
-dnl
-dnl GLIBCPP_CHECK_COMPLEX_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_COMPLEX_SUPPORT, [
- AC_REQUIRE([AC_PROG_CXX])
- AC_MSG_CHECKING([for GNU C++ __complex__ support])
- AC_CACHE_VAL(glibcpp_cv_complex, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
- dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
- [ dcomplex x; f(x); ],
- glibcpp_cv_complex=ok,
- glibcpp_cv_complex=buggy
- )
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_complex)
- if test $glibcpp_cv_complex = buggy; then
- AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
- fi
-])
-
-
-dnl
dnl Check for special debugging mode; not for production use.
dnl
dnl GLIBCPP_ENABLE_DEBUG
dnl Option parsed, now set things appropriately
case "$enable_debug" in
yes)
- DEBUGFLAGS='-O0 -ggdb'
+ DEBUG_FLAGS='-O0 -ggdb'
;;
no)
- DEBUGFLAGS='-g'
+ DEBUG_FLAGS='-g'
;;
esac
-AC_SUBST(DEBUGFLAGS)
+AC_SUBST(DEBUG_FLAGS)
])
dnl Check if a valid thread package
case x${enable_cstdio_flag} in
- xlibio | x | xno | xnone | xyes)
- # default
- CSTDIO_H=c_io_libio.h
- CSTDIO_CC=c_io_libio.cc
- AC_MSG_RESULT(libio)
-
- # see if we are on a system with libio native (ie, linux)
- AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
- if test $has_libio = "yes"; then
- BUILD_LIBIO_INCLUDE=
- need_libio=no
- else
- BUILD_LIBIO_INCLUDE='-I../libio'
- need_libio=yes
- fi
- AC_SUBST(BUILD_LIBIO_INCLUDE)
-
- # see if the _G_config.h header needs to be built.
- # NB: This replaces the _G_CONFIG_H machinery in libio-v2
- AC_CHECK_HEADER(_G_config.h, has_gconf_h=yes, has_gconf_h=no)
- AM_CONDITIONAL(GLIBCPP_NEED_LIBIO_CONFIG_H, test "$has_gconf_h" = no)
- ;;
- xwince)
- CSTDIO_H=c_io_wince.h
- CSTDIO_CC=c_io_wince.cc
- AC_MSG_RESULT(wince)
-
- need_libio=no
- BUILD_LIBIO_INCLUDE=
- AC_SUBST(BUILD_LIBIO_INCLUDE)
- ;;
- *)
- echo "$enable_cstdio is an unknown io package" 1>&2
- exit 1
- ;;
+ xlibio | x | xno | xnone | xyes)
+ # default
+ CSTDIO_H=config/c_io_libio.h
+ CSTDIO_CC=config/c_io_libio.cc
+ AC_MSG_RESULT(libio)
+
+ # see if we are on a system with libio native (ie, linux)
+ AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
+
+ # Need to check and see what version of glibc is being used. If
+ # it's not glibc-2.2 or higher, then we'll need to go ahead and
+ # compile most of libio for linux systems.
+ if test x$has_libio = x"yes"; then
+ case "$target" in
+ *-*-linux*)
+ AC_MSG_CHECKING([for glibc version >= 2.2])
+ AC_EGREP_CPP([ok], [
+ #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+ ok
+ #endif
+ ], glibc_satisfactory=yes, glibc_satisfactory=no)
+ AC_MSG_RESULT($glibc_satisfactory)
+ ;;
+ esac
+
+ if test x$glibc_satisfactory = x"yes"; then
+ BUILD_LIBIO_INCLUDE=
+ need_libio=no
+ need_xtra_libio=no
+ need_wlibio=no
+ else
+ BUILD_LIBIO_INCLUDE='-I../libio'
+ need_libio=yes
+ need_xtra_libio=yes
+ # bkoz XXX need to add checks to enable this
+ need_wlibio=yes
+ fi
+
+ # Using libio, but <libio.h> doesn't exist on the target system. . .
+ else
+ BUILD_LIBIO_INCLUDE='-I../libio'
+ need_libio=yes
+ need_xtra_libio=no
+ # bkoz XXX need to add checks to enable this
+ need_wlibio=no
+ fi
+ ;;
+
+ xwince)
+ CSTDIO_H=config/c_io_wince.h
+ CSTDIO_CC=config/c_io_wince.cc
+ AC_MSG_RESULT(wince)
+
+ need_libio=no
+ BUILD_LIBIO_INCLUDE=
+ AC_SUBST(BUILD_LIBIO_INCLUDE)
+ ;;
+ *)
+ echo "$enable_cstdio is an unknown io package" 1>&2
+ exit 1
+ ;;
esac
- AC_SUBST(CSTDIO_H)
- AC_SUBST(CSTDIO_CC)
+ AC_LINK_FILES($CSTDIO_H, bits/c++io.h)
+ AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
+ AM_CONDITIONAL(GLIBCPP_NEED_XTRA_LIBIO, test "$need_xtra_libio" = yes)
+ AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
])
;;
posix | pthreads)
THREADS=posix
- case "$host" in
+ case "$target" in
*-*-linux*)
;;
esac
AC_SUBST(THREADDEPS)
AC_SUBST(THREADOBJS)
AC_SUBST(THREADSPEC)
+ AC_LINK_FILES(config/$THREADH, bits/c++threads.h)
])
AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
- AC_MSG_CHECKING([for enabled long long])
AC_ARG_ENABLE(long-long,
changequote(<<, >>)dnl
<<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
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
- enable_long_long=no;
- fi; unset ac_ll
-
+ enable_long_long=no;
+ fi;
AC_MSG_RESULT($enable_long_long)
+
dnl Option parsed, now set things appropriately
case "$enable_long_long" in
yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
dnl Option parsed, now set things appropriately
case "$enable_cshadow_headers" in
yes)
- CSHADOWFLAGS="-D_ISOC9X_SOURCE"
+ CSHADOWFLAGS="-D_GNU_SOURCE"
CSHADOW_INCLUDES=" -I$srcdir/shadow -I$blddir/cshadow"
;;
no)
[AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
AC_SUBST(LIBSTRINGOBJS)dnl
])
+
+
+dnl This macro searches for a GNU version of make. If a match is found, the
+dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
+dnl set to "#". This is useful for including a special features in a Makefile,
+dnl which cannot be handled by other versions of make. The variable
+dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
+dnl the empty string otherwise.
+dnl
+dnl Here is an example of its use:
+dnl
+dnl Makefile.in might contain:
+dnl
+dnl # A failsafe way of putting a dependency rule into a makefile
+dnl $(DEPEND):
+dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
+dnl
+dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
+dnl @ifGNUmake@ include $(DEPEND)
+dnl @ifGNUmake@ endif
+dnl
+dnl Then configure.in would normally contain:
+dnl
+dnl CHECK_GNU_MAKE()
+dnl AC_OUTPUT(Makefile)
+dnl
+dnl Then perhaps to cause gnu make to override any other make, we could do
+dnl something like this (note that GNU make always looks for GNUmakefile first):
+dnl
+dnl if ! test x$_cv_gnu_make_command = x ; then
+dnl mv Makefile GNUmakefile
+dnl echo .DEFAULT: > Makefile ;
+dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
+dnl fi
+dnl
+dnl Then, if any (well almost any) other make is called, and GNU make also
+dnl exists, then the other make wraps the GNU make.
+dnl
+dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
+dnl @version $Id: acinclude.m4,v 1.42 2000/07/17 18:17:33 pme Exp $
+dnl
+dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
+dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
+dnl #### conditional's subshell (" --version" is not a command).
+dnl #### -pme
+AC_DEFUN(
+ GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
+ _cv_gnu_make_command='' ;
+dnl Search all the common names for GNU make
+ for a in "${MAKE:-make}" make gmake gnumake ; do
+ if ( $a --version 2> /dev/null | grep -q GNU ) ; then
+ _cv_gnu_make_command=$a ;
+ break;
+ fi
+ done ;
+ ) ;
+dnl If there was a GNU version, then set @ifGNUmake@ to the empty
+dnl string, '#' otherwise
+ if test "x$_cv_gnu_make_command" != "x" ; then
+ ifGNUmake='' ;
+ else
+ ifGNUmake='#' ;
+ fi
+ AC_SUBST(ifGNUmake)
+])
+
+