# Multilibs for SourceryG++ arm-none-linux-gnueabi

MULTILIB_OPTIONS     = mthumb
MULTILIB_DIRNAMES    = t
MULTILIB_EXCEPTIONS  = 
MULTILIB_MATCHES     =
MULTILIB_ALIASES     =

MULTILIB_OPTIONS      += march=armv4t/march=armv7-a
MULTILIB_DIRNAMES     += v4t v7a

MULTILIB_MATCHES      += march?armv7-a=march?armv7a
MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a9
MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a8
MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a5
MULTILIB_MATCHES      += march?armv4t=march?ep9312
MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi
MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
MULTILIB_MATCHES      += march?armv4t=mcpu?arm710t
MULTILIB_MATCHES      += march?armv4t=mcpu?arm720t
MULTILIB_MATCHES      += march?armv4t=mcpu?arm740t
MULTILIB_MATCHES      += march?armv4t=mcpu?arm9
MULTILIB_MATCHES      += march?armv4t=mcpu?arm9tdmi
MULTILIB_MATCHES      += march?armv4t=mcpu?arm920
MULTILIB_MATCHES      += march?armv4t=mcpu?arm920t
MULTILIB_MATCHES      += march?armv4t=mcpu?arm922t
MULTILIB_MATCHES      += march?armv4t=mcpu?arm940t
MULTILIB_MATCHES      += march?armv4t=mcpu?ep9312
MULTILIB_MATCHES      += march?armv4t=march?armv5
MULTILIB_MATCHES      += march?armv4t=march?armv5t
MULTILIB_MATCHES      += march?armv4t=march?arm10tdmi
MULTILIB_MATCHES      += march?armv4t=march?arm1020t

MULTILIB_OPTIONS      += mfloat-abi=softfp/mfloat-abi=hard
MULTILIB_DIRNAMES     += softfp hard
MULTILIB_MATCHES      += mfloat-abi?hard=mhard-float

MULTILIB_OPTIONS      += mfpu=neon
MULTILIB_DIRNAMES     += neon
MULTILIB_EXCEPTIONS   += mfpu=neon
MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-fp16
MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-vfpv4
MULTILIB_ALIASES      += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon
MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon
MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon

MULTILIB_OPTIONS      += mbig-endian
MULTILIB_DIRNAMES     += be
MULTILIB_ALIASES      += mbig-endian=mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mbig-endian=mthumb/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian

# Do not build Thumb libraries.
MULTILIB_EXCEPTIONS   += mthumb
MULTILIB_EXCEPTIONS   += mthumb/mfpu=neon

# Use ARM libraries for ARMv4t Thumb and VFP.
MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t
MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp
MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp
MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfpu?neon
MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp/mfpu?neon
MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfpu?neon
MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp/mfpu?neon

# We do not support ARMv4t big-endian.
MULTILIB_EXCEPTIONS   += *march=armv4t*mbig-endian

# Behave ARMv7-A as ARMv7 for some cases.
MULTILIB_EXCEPTIONS   += march=armv7-a
MULTILIB_EXCEPTIONS   += march=armv7-a/mfpu=neon
MULTILIB_ALIASES      += mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mbig-endian
MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian
MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfpu?neon
MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfloat-abi?softfp

# Thumb-1 VFP isn't really a meaningful combination.  Use the ARM VFP.
MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp
MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian

# Use ARM libraries for big-endian Thumb.
MULTILIB_ALIASES      += mbig-endian=mthumb/mbig-endian

# Don't bother with big-endian Thumb-2 VFP.  Use the soft-float libraries
# for now.
MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian

# The only -mfloat-abi=hard libraries provided are for little-endian
# v7-A NEON.
MULTILIB_EXCEPTIONS   += mfloat-abi=hard*
MULTILIB_EXCEPTIONS   += *march=armv4t*mfloat-abi=hard*
MULTILIB_EXCEPTIONS   += mthumb/mfloat-abi=hard*
MULTILIB_EXCEPTIONS   += *mfloat-abi=hard*mbig-endian
MULTILIB_EXCEPTIONS   += *mfloat-abi=hard

# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
# omitted from MULTILIB_OSDIRNAMES
MULTILIB_OSDIRNAMES    = march.armv4t=!armv4t
MULTILIB_OSDIRNAMES   += mbig-endian=!be
MULTILIB_OSDIRNAMES   += mfloat-abi.softfp=!vfp
MULTILIB_OSDIRNAMES   += mfloat-abi.softfp/mbig-endian=!vfp-be
MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a=!thumb2
MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon
MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mfloat-abi.softfp/mfpu.neon=!thumb2-neon
MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard
MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mbig-endian=!thumb2-be
