diff options
Diffstat (limited to 'libstdc++-v3/acinclude.m4')
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 278 |
1 files changed, 238 insertions, 40 deletions
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index b10de7293a8..939746eb00b 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -159,7 +159,6 @@ 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], [ @@ -264,13 +263,14 @@ AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [ # Check for -Wl,--gc-sections AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) CXXFLAGS='-Wl,--gc-sections' - AC_TRY_COMPILE(, [ - try - { - throw 1; - } - catch (...) {}; - ], [ac_sectionLDflags=yes], [ac_sectionLFflags=no]) + AC_TRY_RUN([ + int main() + { + try { throw 1; } + catch (...) { }; + return 0; + } + ], [ac_sectionLDflags=yes], [ac_sectionLFflags=no], [ac_sectionLDflags=yes]) if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS="$ac_save_CXXFLAGS" else @@ -894,49 +894,247 @@ AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [ dnl +dnl Check to see if the 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_MATH_DECL_AND_LINKAGE_1 +AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for $1 declaration]) + AC_TRY_COMPILE([#include <math.h>], + [ $1(0);], + [use_$1=yes], [use_$1=no]) + AC_MSG_RESULT($use_$1) + AC_LANG_RESTORE + if test x$use_$1 = x"yes"; then + AC_CHECK_FUNCS($1) + fi +]) + + +dnl +dnl Check to see if the 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>], + [ $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 +]) + + +dnl +dnl Check to see if the 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>], + [ $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 +]) + + +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, [ - dnl Work around bug on powerpc compiler, where no long double is - dnl declared, yet functions defined with long double are in libm. Thus, - dnl the "C" math library has the prototypes implicitly declared, and - dnl everything works. - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS='-Werror-implicit-function-declaration -fno-builtins' + ac_test_CXXFLAGS="${CXXFLAGS+set}" + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS='-fno-builtins' dnl Check libm AC_CHECK_LIB(m, sin, libm="-lm") - save_LIBS="$LIBS" + ac_save_LIBS="$LIBS" LIBS="$LIBS $libm" - dnl Check to see if basic C math functions have float, long double versions. - AC_REPLACE_MATHFUNCS(cosf fabsf sinf sqrtf) - AC_CHECK_FUNCS(isnan isnanf isnanl isinf isinff isinfl copysign copysignl \ - acosf acosl asinf asinl atanf atanl atan2f atan2l ceilf ceill cosl \ - coshf coshl expf expl fabsl floorf floorl fmodf fmodl frexpf frexpl ldexpf \ - ldexpl logf logl log10f log10l modff modfl powf powl sinl sinhf \ - sinhl sqrtl tanf tanl tanhf tanhl strtof strtold sincos sincosf \ - sincosl finite finitef finitel 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(_isnan _isnanf _isnanl _isinf _isinff _isinfl _copysign \ - _copysignl _acosf _acosl _asinf _asinl _atanf _atanl _atan2f _atan2l \ - _ceilf _ceill _cosf _cosl _coshf _coshl _expf _expl _fabsf _fabsl \ - _floorf _floorl _fmodf _fmodl _frexpf _frexpl _ldexpf _ldexpl _logf _logl \ - _log10f _log10l _modff _modfl _powf _powl _sinf _sinl _sinhf _sinhl \ - _sqrtf _sqrtl _tanf _tanl _tanhf _tanhl _strtof _strtold _sincos _sincosf \ - _sincosl _finite _finitef _finitel _fqfinite _fpclass _qfpclass) - - LIBS="$save_LIBS" -# CFLAGS="$ac_save_CFLAGS" + 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_1(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_2(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_1(_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_2(_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" ]) |