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)
       ;;
   bpf-*-*)
       SIM_ARCH(bpf)
       ;;
   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)
       ;;
   or1k-*-* | or1knd-*-*)
       SIM_ARCH(or1k)
       ;;
   pru*-*-*)
       SIM_ARCH(pru)
       ;;
   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)
