math.m4: New file.
authorTristan Gingold <gingold@adacore.com>
Mon, 26 Mar 2012 08:42:52 +0000 (08:42 +0000)
committerTristan Gingold <gingold@gcc.gnu.org>
Mon, 26 Mar 2012 08:42:52 +0000 (08:42 +0000)
2012-03-26  Tristan Gingold  <gingold@adacore.com>

* math.m4: New file.

From-SVN: r185788

config/ChangeLog
config/math.m4 [new file with mode: 0644]

index bfabcc0fb3c8f60581a07740537826c5594f5402..f502696ac552f9fc11bd7e3f84b7ea5755953f19 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-26  Tristan Gingold  <gingold@adacore.com>
+
+       * math.m4: New file.
+
 2012-03-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * weakref.m4 (GCC_CHECK_ELF_STYLE_WEAKREF): Remove
diff --git a/config/math.m4 b/config/math.m4
new file mode 100644 (file)
index 0000000..5527c25
--- /dev/null
@@ -0,0 +1,49 @@
+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],[if-present])
+dnl
+dnl Check whether math function NAME is available on the system (by compiling
+dnl and linking a C program) and run if-present 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([
+#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
+    $2
+  fi
+])