# configure.host
#
# This shell script handles all host based configuration for libgfortran.
# It sets various shell variables based on the the host triplet.
# You can modify this shell script without rerunning autoconf/aclocal/etc.
# This file is "sourced", not executed.
#
#
# It uses the following shell variables as set by config.guess:
#   host                The configuration host (full CPU-vendor-OS triplet)
#   host_cpu            The configuration host CPU
#   host_os             The configuration host OS
#
#
# It sets the following shell variables:
#
#   fpu_host            FPU-specific code file, defaults to fpu-generic.


# DEFAULTS
fpu_host='fpu-generic'
ieee_support='no'

if test "x${have_fp_enable}" = "xyes" && test "x${have_fp_trap}" = "xyes"; then
  fpu_host='fpu-aix'
  ieee_support='yes'
fi

if test "x${have_fpsetmask}" = "xyes"; then
  fpu_host='fpu-sysv'
  ieee_support='yes'
fi

if test "x${have_feenableexcept}" = "xyes"; then
  fpu_host='fpu-glibc'
  ieee_support='yes'
fi

# x86 asm should be used instead of glibc, since glibc doesn't support
# the x86 denormal exception.
case "${host_cpu}" in
  i?86 | x86_64)
    if test "x${have_soft_float}" = "xyes"; then
      fpu_host='fpu-generic'
    else
      fpu_host='fpu-387'
    fi
    ieee_support='yes'
    ;;
esac

# Some targets require additional compiler options for NaN/Inf.
ieee_flags=
case "${host_cpu}" in
  alpha*)
    ieee_flags="-mieee" ;;
  sh*)
    ieee_flags="-mieee" ;;
esac
