123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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 <complex.h>
- #endif
- #ifdef HAVE_MATH_H
- #include <math.h>
- #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])
|