# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
 # Local preconfigure fragment for sysdeps/arm

case "$machine" in
arm*)
  # If the compiler enables unwind tables by default, this causes
  # problems with undefined symbols in -nostdlib link tests.  To
  # avoid this, add -fno-unwind-tables here and remove it in
  # sysdeps/arm/configure.ac after those tests have been run.
  if test "${CFLAGS+set}" != "set"; then
    CFLAGS="-g -O2"
  fi
  CFLAGS="$CFLAGS -fno-unwind-tables"

  base_machine=arm
  # Lets ask the compiler which ARM family we've got
  # Unfortunately it doesn't define any flags for implementations
  # that you might pass to -mcpu or -mtune
  # Note if you add patterns here you must ensure that
  # an appropriate directory exists in sysdeps/arm
  archcppflag=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
    sed -n 's/^#define \(__ARM_ARCH_[0-9].*__\) .*$/\1/p'`

  case "x$archcppflag" in
  x__ARM_ARCH_89*__)
    machine=armv7
    { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for something newer than v7 - using v7" >&5
$as_echo "$as_me: Found compiler is configured for something newer than v7 - using v7" >&6;}
    ;;

  x__ARM_ARCH_7A__)
    machine=armv7
    { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
    ;;

  x__ARM_ARCH_6T2__)
    machine=armv6t2
    { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
    ;;
  x__ARM_ARCH_6*__)
    machine=armv6
    { $as_echo "$as_me:${as_lineno-$LINENO}: Found compiler is configured for $machine" >&5
$as_echo "$as_me: Found compiler is configured for $machine" >&6;}
    ;;
  *)
    machine=arm
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: arm/preconfigure: Did not find ARM architecture type; using default" >&5
$as_echo "$as_me: WARNING: arm/preconfigure: Did not find ARM architecture type; using default" >&2;}
    ;;
  esac

  machine=arm/$machine
  with_fp_cond="!defined __SOFTFP__"
esac
