# 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.
#   tmake_file		A list of machine-description-specific
#			makefile fragments.



# 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

case "${host_cpu}" in

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

  # use asm on aarch64-darwin
  aarch64)
    case "${host_os}" in
      darwin*)
        fpu_host='fpu-aarch64'
        ieee_support='yes'
        ;;
    esac

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

tmake_file=
# Other system configury
case "${target}" in

  *-*-aix*)
	# Create AIX-style "FAT" libraries.
	tmake_file="t-aix"
	;;

  *)
	;;

esac

