Home | History | Annotate | Download | only in m4
      1 # fpieee.m4 serial 2
      2 dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
      3 dnl This file is free software; the Free Software Foundation
      4 dnl gives unlimited permission to copy and/or distribute it,
      5 dnl with or without modifications, as long as this notice is preserved.
      6 
      7 dnl IEEE 754 standardized three items:
      8 dnl - The formats of single-float and double-float - nowadays commonly
      9 dnl   available as 'float' and 'double' in C and C++.
     10 dnl   No autoconf test needed.
     11 dnl - The overflow and division by zero behaviour: The result are values
     12 dnl   'Inf' and 'NaN', rather than exceptions as it was before.
     13 dnl   This file provides an autoconf macro for ensuring this behaviour of
     14 dnl   floating-point operations.
     15 dnl - A set of conditions (overflow, underflow, inexact, etc.) which can
     16 dnl   be configured to trigger an exception.
     17 dnl   This cannot be done in a portable way: it depends on the compiler,
     18 dnl   libc, kernel, and CPU.  No autoconf macro is provided for this.
     19 
     20 dnl Ensure non-trapping behaviour of floating-point overflow and
     21 dnl floating-point division by zero.
     22 dnl (For integer overflow, see gcc's -ftrapv option; for integer division by
     23 dnl zero, see the autoconf macro in intdiv0.m4.)
     24 
     25 AC_DEFUN([gl_FP_IEEE],
     26 [
     27   AC_REQUIRE([AC_PROG_CC])
     28   AC_REQUIRE([AC_CANONICAL_HOST])
     29   # IEEE behaviour is the default on all CPUs except Alpha and SH
     30   # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
     31   # and the GCC 4.1.2 manual).
     32   case "$host_cpu" in
     33     alpha*)
     34       # On Alpha systems, a compiler option provides the behaviour.
     35       # See the ieee(3) manual page, also available at
     36       # <http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/0600____.HTM>
     37       if test -n "$GCC"; then
     38         # GCC has the option -mieee.
     39         # For full IEEE compliance (rarely needed), use option -mieee-with-inexact.
     40         CPPFLAGS="$CPPFLAGS -mieee"
     41       else
     42         # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact.
     43         # For full IEEE compliance (rarely needed), use option -ieee_with_inexact.
     44         CPPFLAGS="$CPPFLAGS -ieee"
     45       fi
     46       ;;
     47     sh*)
     48       if test -n "$GCC"; then
     49         # GCC has the option -mieee.
     50         CPPFLAGS="$CPPFLAGS -mieee"
     51       fi
     52       ;;
     53   esac
     54 ])
     55