dnl GCC_CHECK_LIBM dnl dnl Check whether -lm is available. This is a pre-requisite for dnl GCC_CHECK_MATH_FUNC so that it will link with -lm. AC_DEFUN([GCC_CHECK_LIBM], [AC_CHECK_LIB([m],[sin])]) dnl GCC_CHECK_MATH_HEADERS dnl dnl Check for math.h and complex.h. This is a pre-requisite for dnl GCC_CHECK_MATH_FUNC so that it includes the right headers. dnl (Some systems, such as AIX or OpenVMS may define macro for math dnl functions). AC_DEFUN([GCC_CHECK_MATH_HEADERS], [AC_CHECK_HEADERS_ONCE(math.h complex.h)]) dnl GCC_CHECK_MATH_FUNC([name]) dnl dnl Check whether math function NAME is available on the system (by compiling dnl and linking a C program) and run define HAVE_name on success. dnl dnl Note that OpenVMS system insists on including complex.h before math.h AC_DEFUN([GCC_CHECK_MATH_FUNC], [ AC_REQUIRE([GCC_CHECK_LIBM]) AC_REQUIRE([GCC_CHECK_MATH_HEADERS]) AC_CACHE_CHECK([for $1], [gcc_cv_math_func_$1], [AC_LINK_IFELSE([AC_LANG_SOURCE([ #ifdef HAVE_COMPLEX_H #include #endif #ifdef HAVE_MATH_H #include #endif int (*ptr)() = (int (*)())$1; int main () { return 0; } ])], [gcc_cv_math_func_$1=yes], [gcc_cv_math_func_$1=no])]) if test $gcc_cv_math_func_$1 = yes; then AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1),[1], [Define to 1 if you have the `$1' function.]) fi ]) dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([name], [type]) dnl dnl Check if math function NAME fallback for function with single dnl TYPE argument and TYPE result can be implemented using dnl __builtin_NAME expanded inline without needing unavailable math dnl library function. AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1], [ AC_REQUIRE([GCC_CHECK_LIBM]) if test $gcc_cv_math_func_$1 = no; then AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1], [AC_LINK_IFELSE([AC_LANG_SOURCE([ $2 $1_fallback ($2 x) { return __builtin_$1 (x); } int main () { return 0; } ])], [gcc_cv_math_inline_builtin_$1=yes], [gcc_cv_math_inline_builtin_$1=no])]) if test $gcc_cv_math_inline_builtin_$1 = yes; then AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1], [Define to 1 if `__builtin_$1' is expanded inline.]) fi fi]) dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([name], [type]) dnl dnl Check if math function NAME fallback for function with two dnl TYPE arguments and TYPE result can be implemented using dnl __builtin_NAME expanded inline without needing unavailable math dnl library function. AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2], [ AC_REQUIRE([GCC_CHECK_LIBM]) if test $gcc_cv_math_func_$1 = no; then AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1], [AC_LINK_IFELSE([AC_LANG_SOURCE([ $2 $1_fallback ($2 x, $2 y) { return __builtin_$1 (x, y); } int main () { return 0; } ])], [gcc_cv_math_inline_builtin_$1=yes], [gcc_cv_math_inline_builtin_$1=no])]) if test $gcc_cv_math_inline_builtin_$1 = yes; then AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1], [Define to 1 if `__builtin_$1' is expanded inline.]) fi fi])