# BEGIN boiler-plate MIPS stuff

# Don't let CTOR_LIST end up in sdata section.
CRTSTUFF_T_CFLAGS = -G 0

# We must build libgcc2.a with -G 0, in case the user wants to link
# without the $gp register.
TARGET_LIBGCC2_CFLAGS = -G 0

LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/mips/mips16.S \
                         $(srcdir)/config/mips/vr4120-div.S
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o

# Assemble startup files.
$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
        $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
        -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm

$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
        $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
        -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm

# END boiler-plate

# Main multilibs
# --------------
#
# Endianness: EB or EL
#
# ABIs: mabi=32
#        mabi=o64
#        mabi=eabi
#        mabi=eabi/mlong32
#        mabi=eabi/mgp32
#        mabi=eabi/mgp32/mlong64
#
# Architecture: march=vr4120 with -mfix-vr4120
#                march=vr4130 with -mfix-vr4130 (default)
#                march=vr5000
#                march=vr5400
#                march=vr5500
#
# Total: 2 * 6 * 5 = 60 multilibs.
#
#
# Extra vr4300 multilibs
# ----------------------
#
# Endianness: EB or EL
#
# ABI: o64
#
# Architecture: vr4300.
#
# Total: 2 * 1 * 2 = 2 multilibs.
#
#
# Extra MIPS16 multilibs
# ----------------------
#
# Endianness: EB or EL
#
# ABIs: mabi=o64
#        mabi=eabi/mlong32
#        mabi=eabi/mgp32
#
# Architecture: march=vr4120 with -mfix-vr4120
#                march=vr4130 with -mfix-vr4130 (default)
#
# Total: 2 * 3 * 2 = 12 multilibs.
MULTILIB_OPTIONS =                        \
        EL/EB                                \
        mabi=32/mabi=o64/mabi=eabi        \
        mgp32                                \
        mlong64                                \
        mips16                                \
        mfix-vr4120/mfix-vr4130/march=vr4300/march=vr5000/march=vr5400/march=vr5500

MULTILIB_DIRNAMES =        \
        el eb                \
        o32 o64 eabi        \
        gp32                \
        long64                \
        mips16                \
        vr4120 vr4130 vr4300 vr5000 vr5400 vr5500

MULTILIB_MATCHES = EL=mel EB=meb mfix-vr4120=march?vr4120 \
                   mfix-vr4130=march?vr4130

# Assume a 41xx-series is the default: we'd need a *mips16 entry if
# the default processor didn't support mips16.  Also assume the
# default ABI is EABI64 -mlong32.
MULTILIB_EXCEPTIONS =                                \
        *mabi=32/mlong64*                        \
        *mabi=32/mgp32*                                \
        *mabi=o64/mgp32*                        \
        *mabi=o64/mlong64*                        \
        *mips16/march=vr5*                        \
        *mips16/march=vr4300                        \
        $(MIPS16_EXCEPTIONS)                        \
        $(VR4300_EXCEPTIONS)

MIPS16_EXCEPTIONS =                                \
        *mabi=32*mips16*                        \
        *mlong64*mips16*

VR4300_EXCEPTIONS =                                \
        *mabi=32*march=vr4300                        \
        *mgp32*march=vr4300                        \
        *mlong64*march=vr4300                        \
        march=vr4300                                \
        E[LB]/march=vr4300
