From: Piotr Kubaj <pku...@freebsd.org>

FreeBSD/powerpc* has feenableexcept() defined in fenv.h header.

Signed-off-by: Piotr Kubaj <pku...@freebsd.org>
---
 libgfortran/configure    | 41 +++++++++++++++++++++++++++++++++++++++-
 libgfortran/configure.ac | 17 ++++++++++++++++-
 2 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/libgfortran/configure b/libgfortran/configure
index ae64dca3114..ad71694ef05 100755
--- a/libgfortran/configure
+++ b/libgfortran/configure
@@ -27338,8 +27338,45 @@ fi
 
 
 
+case x$target in
+  xpowerpc*-freebsd*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fenv.h and 
feenableexcept" >&5
+$as_echo_n "checking for fenv.h and feenableexcept... " >&6; }
+if ${have_feenableexcept+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ #include <fenv.h>
+int
+main ()
+{
+ feenableexcept(FE_DIVBYZERO | FE_INVALID);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+   have_feenableexcept="yes"
+else
+   have_feenableexcept="no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_feenableexcept" >&5
+$as_echo "$have_feenableexcept" >&6; }
+    if test "x$have_feenableexcept" = "xyes"; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_FEENABLEEXCEPT 1
+_ACEOF
+
+    fi;
+    ;;
+  *)
 # Check for GNU libc feenableexcept
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for feenableexcept in -lm" 
>&5
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for feenableexcept in 
-lm" >&5
 $as_echo_n "checking for feenableexcept in -lm... " >&6; }
 if ${ac_cv_lib_m_feenableexcept+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -27384,6 +27421,8 @@ $as_echo "#define HAVE_FEENABLEEXCEPT 1" >>confdefs.h
 
 fi
 
+    ;;
+esac
 
 # At least for glibc, clock_gettime is in librt.  But don't
 # pull that in if it still doesn't give us the function we want.  This
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 97cc490cb5e..2dd6d345b22 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -602,8 +602,23 @@ fi
 # Check whether we have a __float128 type, depends on 
enable_libquadmath_support
 LIBGFOR_CHECK_FLOAT128
 
+case x$target in
+  xpowerpc*-freebsd*)
+    AC_CACHE_CHECK([for fenv.h and feenableexcept], have_feenableexcept, [
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+        [[ #include <fenv.h>  ]],
+        [[ feenableexcept(FE_DIVBYZERO | FE_INVALID); ]])],
+        [ have_feenableexcept="yes" ],
+        [ have_feenableexcept="no"  ])])
+    if test "x$have_feenableexcept" = "xyes"; then
+      AC_DEFINE(HAVE_FEENABLEEXCEPT,1,[fenv.h includes feenableexcept])
+    fi;
+    ;;
+  *)
 # Check for GNU libc feenableexcept
-AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes 
AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])])
+    AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes 
AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])])
+    ;;
+esac
 
 # At least for glibc, clock_gettime is in librt.  But don't
 # pull that in if it still doesn't give us the function we want.  This
-- 
2.36.0

Reply via email to