# We build 4 multilibs:
#  ./		  (default)
#  thumb/	  -mthumb
#  thumb2/	  -mthumb -march=armv7
#  armv6-m/	  -mthumb -march=armv6-m

MULTILIB_OPTIONS     = mthumb
MULTILIB_DIRNAMES    = thumb
MULTILIB_EXCEPTIONS  =
MULTILIB_MATCHES     =
MULTILIB_ALIASES     =

MULTILIB_OPTIONS      += march=armv7/march=armv6-m
MULTILIB_DIRNAMES     += v7 v6-m
MULTILIB_EXCEPTIONS   += march=armv7*
MULTILIB_MATCHES      += march?armv7=march?armv7-a
MULTILIB_MATCHES      += march?armv7=march?armv7-r
MULTILIB_MATCHES      += march?armv7=march?armv7-m
MULTILIB_MATCHES      += march?armv7=march?armv7e-m
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r5
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m4
MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3

MULTILIB_EXCEPTIONS   += march=armv6-m
MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
MULTILIB_MATCHES      += march?armv6-m=march=armv6s-m

# FIXME: We need a sane way of doing this.
# This isn't really a multilib, it's a hack to add an extra option
# to the v7-m multilib.
MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
MULTILIB_DIRNAMES     += broken_ldrd

MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd

MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7

# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
# omitted from MULTILIB_OSDIRNAMES
MULTILIB_OSDIRNAMES    = mthumb=!thumb
MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
