# configure.host

# This shell script handles all host based configuration for libstdc++.
# It sets various shell variables based on the the host and the
# configuration options.  You can modify this shell script without
# needing to rerun autoconf.

# This shell script should be invoked as
#   . configure.host
# If it encounters an error, it will exit with a message.

# It uses the following shell variables:
#   host                  The configuration host
#   host_cpu              The configuration host CPU
#   target_optspace       --enable-target-optspace ("yes", "no", "")

# It sets the following shell variables:


AM_RUNTESTFLAGS= 

# Set any host dependent compiler flags.
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.


case "${host}" in
  *)
    ;;
esac


