AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ ],
[ $1(0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [
GLIBCXX_CHECK_MATH_DECL_1($1)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
else
GLIBCXX_CHECK_MATH_DECL_1(_$1)
if test x$glibcxx_cv_func__$1_use = x"yes"; then
AC_CHECK_FUNCS(_$1)
fi
fi
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
AC_MSG_CHECKING([for $1 functions])
AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ `for x in $3; do echo "$x (0);"; done` ],
[glibcxx_cv_func_$2_use=yes],
[glibcxx_cv_func_$2_use=no])
AC_LANG_RESTORE])
AC_MSG_RESULT($glibcxx_cv_func_$2_use)
if test x$glibcxx_cv_func_$2_use = x"yes"; then
AC_CHECK_FUNCS($3)
fi
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1(0, 0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [
GLIBCXX_CHECK_MATH_DECL_2($1)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
else
GLIBCXX_CHECK_MATH_DECL_2(_$1)
if test x$glibcxx_cv_func__$1_use = x"yes"; then
AC_CHECK_FUNCS(_$1)
fi
fi
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1(0, 0, 0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
])
AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
GLIBCXX_CHECK_MATH_DECL_3($1)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
else
GLIBCXX_CHECK_MATH_DECL_3(_$1)
if test x$glibcxx_cv_func__$1_use = x"yes"; then
AC_CHECK_FUNCS(_$1)
fi
fi
])
AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1();],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
fi
])
AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1(0, 0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
fi
])
AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1(0, 0, 0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
fi
])
AC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1], [
AC_MSG_CHECKING([for $1 declaration])
if test x${glibcxx_cv_func_$1_use+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([ [ $1(0);],
[glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
AC_LANG_RESTORE
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_use)
if test x$glibcxx_cv_func_$1_use = x"yes"; then
AC_MSG_CHECKING([for $1 linkage])
if test x${glibcxx_cv_func_$1_link+set} != xset; then
AC_CACHE_VAL(glibcxx_cv_func_$1_link, [
AC_TRY_LINK([ [ $1(0);],
[glibcxx_cv_func_$1_link=yes], [glibcxx_cv_func_$1_link=no])
])
fi
AC_MSG_RESULT($glibcxx_cv_func_$1_link)
if test x$glibcxx_cv_func_$1_link = x"yes"; then
ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
AC_DEFINE_UNQUOTED(${ac_tr_func}, 1, [Defined if $1 exists.])
fi
fi
])
AC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT], [
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
])
AC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
CXXFLAGS="$ac_save_CXXFLAGS"
])
AC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
AC_CHECK_LIB(m, sin, libm="-lm")
ac_save_LIBS="$LIBS"
LIBS="$LIBS $libm"
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
float_trig,
acosf asinf atanf \
cosf sinf tanf \
coshf sinhf tanhf)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
float_round,
ceilf floorf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
long_double_trig,
acosl asinl atanl \
cosl sinl tanl \
coshl sinhl tanhl)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
long_double_round,
ceill floorl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
_float_trig,
_acosf _asinf _atanf \
_cosf _sinf _tanf \
_coshf _sinhf _tanhf)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
_float_round,
_ceilf _floorf)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
_long_double_trig,
_acosl _asinl _atanl \
_cosl _sinl _tanl \
_coshl _sinhl _tanhl)
GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
_long_double_round,
_ceill _floorl)
LIBS="$ac_save_LIBS"
CXXFLAGS="$ac_save_CXXFLAGS"
])
AC_DEFUN([GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT], [
AC_CHECK_LIB(m, main)
AC_REPLACE_MATHFUNCS(copysignf)
AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
if test x$ac_cv_func_copysignl = x"yes"; then
AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
fi
if test -n "$LIBMATHOBJS"; then
need_libmath=yes
fi
AC_SUBST(LIBMATHOBJS)
])
AC_DEFUN([AC_REPLACE_MATHFUNCS],
[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])