dnl Note that this file is intended to be included at the m4 level and not
dnl the shell level, so use sinclude(...) to pull it in.

# WHEN ADDING ENTRIES TO THIS MATRIX:

# Make sure that the left side always has two dashes.  Otherwise you
# can get spurious matches.  Even for unambiguous cases, do this as a
# convention, else the table becomes a real mess to understand and
# maintain.

dnl glue to avoid code duplication at top level
m4_ifndef([SIM_ARCH], [AC_DEFUN([SIM_ARCH],[sim_arch=$1])])

sim_igen=no
sim_arch=
case "${target}" in
   aarch64*-*-*)
       SIM_ARCH(aarch64)
       ;;
   arm*-*-*)
       SIM_ARCH(arm)
       ;;
   avr*-*-*)
       SIM_ARCH(avr)
       ;;
   bfin-*-*)
       SIM_ARCH(bfin)
       ;;
   cr16*-*-*)
       SIM_ARCH(cr16)
       ;;
   cris-*-* | crisv32-*-*)
       SIM_ARCH(cris)
       ;;
   d10v-*-*)
       SIM_ARCH(d10v)
       ;;
   frv-*-*)
       SIM_ARCH(frv)
       ;;
   h8300*-*-*)
       SIM_ARCH(h8300)
       ;;
   iq2000-*-*)
       SIM_ARCH(iq2000)
       ;;
   lm32-*-*)
       SIM_ARCH(lm32)
       ;;
   m32c-*-*)
       SIM_ARCH(m32c)
       ;;
   m32r-*-*)
       SIM_ARCH(m32r)
       ;;
   m68hc11-*-*|m6811-*-*)
       SIM_ARCH(m68hc11)
       ;;
   mcore-*-*)
       SIM_ARCH(mcore)
       ;;
   microblaze-*-*)
       SIM_ARCH(microblaze)
       ;;
   mips*-*-*)
       SIM_ARCH(mips)
       sim_igen=yes
       ;;
   mn10300*-*-*)
       SIM_ARCH(mn10300)
       sim_igen=yes
       ;;
   moxie-*-*)
       SIM_ARCH(moxie)
       ;;
   msp430*-*-*)
       SIM_ARCH(msp430)
       ;;
   rl78-*-*)
       SIM_ARCH(rl78)
       ;;
   rx-*-*)
       SIM_ARCH(rx)
       ;;
   sh64*-*-*)
       SIM_ARCH(sh64)
       ;;
   sh*-*-*)
       SIM_ARCH(sh)
       ;;
   sparc-*-rtems*|sparc-*-elf*)
       SIM_ARCH(erc32)
       ;;
   powerpc*-*-*)
       SIM_ARCH(ppc)
       ;;
   ft32-*-*)
       SIM_ARCH(ft32)
       ;;
   v850*-*-*)
       SIM_ARCH(v850)
       sim_igen=yes
       ;;
esac
AC_SUBST(sim_arch)
