gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / config / math.m4
CommitLineData
acf89cab
JM
1dnl GCC_CHECK_LIBM
2dnl
3dnl Check whether -lm is available. This is a pre-requisite for
4dnl GCC_CHECK_MATH_FUNC so that it will link with -lm.
5AC_DEFUN([GCC_CHECK_LIBM],
6[AC_CHECK_LIB([m],[sin])])
7
8dnl GCC_CHECK_MATH_HEADERS
9dnl
10dnl Check for math.h and complex.h. This is a pre-requisite for
11dnl GCC_CHECK_MATH_FUNC so that it includes the right headers.
12dnl (Some systems, such as AIX or OpenVMS may define macro for math
13dnl functions).
14AC_DEFUN([GCC_CHECK_MATH_HEADERS],
15[AC_CHECK_HEADERS_ONCE(math.h complex.h)])
16
17dnl GCC_CHECK_MATH_FUNC([name])
18dnl
19dnl Check whether math function NAME is available on the system (by compiling
20dnl and linking a C program) and run define HAVE_name on success.
21dnl
22dnl Note that OpenVMS system insists on including complex.h before math.h
23AC_DEFUN([GCC_CHECK_MATH_FUNC],
24[
25 AC_REQUIRE([GCC_CHECK_LIBM])
26 AC_REQUIRE([GCC_CHECK_MATH_HEADERS])
27 AC_CACHE_CHECK([for $1], [gcc_cv_math_func_$1],
b555fb21 28 [AC_LINK_IFELSE([AC_LANG_SOURCE([
acf89cab
JM
29#ifdef HAVE_COMPLEX_H
30#include <complex.h>
31#endif
32#ifdef HAVE_MATH_H
33#include <math.h>
34#endif
35
36int (*ptr)() = (int (*)())$1;
37
38int
39main ()
40{
41 return 0;
42}
b555fb21 43])],
acf89cab
JM
44[gcc_cv_math_func_$1=yes],
45[gcc_cv_math_func_$1=no])])
46 if test $gcc_cv_math_func_$1 = yes; then
47 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1),[1],
48 [Define to 1 if you have the `$1' function.])
49 fi
50])
87c66b2e
L
51
52dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([name], [type])
53dnl
54dnl Check if math function NAME fallback for function with single
55dnl TYPE argument and TYPE result can be implemented using
56dnl __builtin_NAME expanded inline without needing unavailable math
57dnl library function.
58AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1],
59[
60 AC_REQUIRE([GCC_CHECK_LIBM])
61if test $gcc_cv_math_func_$1 = no; then
62 AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
63 [AC_LINK_IFELSE([AC_LANG_SOURCE([
64$2
65$1_fallback ($2 x)
66{
67 return __builtin_$1 (x);
68}
69
70int
71main ()
72{
73 return 0;
74}
75])],
76[gcc_cv_math_inline_builtin_$1=yes],
77[gcc_cv_math_inline_builtin_$1=no])])
78 if test $gcc_cv_math_inline_builtin_$1 = yes; then
79 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
80 [Define to 1 if `__builtin_$1' is expanded inline.])
81 fi
82fi])
83
84dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([name], [type])
85dnl
86dnl Check if math function NAME fallback for function with two
87dnl TYPE arguments and TYPE result can be implemented using
88dnl __builtin_NAME expanded inline without needing unavailable math
89dnl library function.
90AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2],
91[
92 AC_REQUIRE([GCC_CHECK_LIBM])
93if test $gcc_cv_math_func_$1 = no; then
94 AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
95 [AC_LINK_IFELSE([AC_LANG_SOURCE([
96$2
97$1_fallback ($2 x, $2 y)
98{
99 return __builtin_$1 (x, y);
100}
101
102int
103main ()
104{
105 return 0;
106}
107])],
108[gcc_cv_math_inline_builtin_$1=yes],
109[gcc_cv_math_inline_builtin_$1=no])])
110 if test $gcc_cv_math_inline_builtin_$1 = yes; then
111 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
112 [Define to 1 if `__builtin_$1' is expanded inline.])
113 fi
114fi])
This page took 0.33296 seconds and 4 git commands to generate.