# 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_EXTRA = $(srcdir)/config/mips/mips16.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 # Endianness: EB or EL # # ABIs: mabi=32 # mabi=o64 # mabi=eabi # meabi=eabi/mlong32 # mabi=eabi/mgp32 # mabi=eabi/mgp32/mlong64 # # Architecture: march=vr5400 # march=vr4100 # march=vr4100/mips16 # # Total: 2 * 6 * 3 = 36 multilibs. MULTILIB_OPTIONS = \ EL/EB \ mabi=32/mabi=o64/mabi=eabi \ mgp32 \ mlong32/mlong64 \ mips16 \ march=vr5400/march=vr4100 MULTILIB_DIRNAMES = \ el eb \ o32 o64 eabi \ gp32 \ long32 long64 \ mips16 \ vr5400 vr4100 MULTILIB_MATCHES = EL=mel EB=meb # Assume a 4000-series is the default: we'd need a *mips16 entry if # the default processor didn't support mips16. Also assume o64, # which means we need to extend the o64 exceptions to combinations # without a -mabi flag. MULTILIB_EXCEPTIONS = \ *mabi=32/mlong64* \ *mabi=32/mgp32/mlong64* \ *mabi=o64/mgp32* \ *mabi=o64/mlong64* \ mgp32* E[LB]/mgp32* \ mlong64* E[LB]/mlong64* \ *mips16/march=vr5* # The real value of this macro is very long, so generate it using a # shell fragment. The idea is to tell the GCC driver how -mabi, # -mgp32, -mlong32 and -mlong64 interact, so that it choses the right # library when some options are specified redundantly (for example, # -mabi=32 -mgp32). # The core equalities are listed after "for changes in ". The first # entry assumes o64 is the default ABI. MULTILIB_REDUNDANT_DIRS=` \ for endian in '' 'el' 'eb'; do \ for arch in '' 'vr5400' 'vr4100' \ 'mips16' 'mips16/vr100'; do \ for changes in long32= \ o32/gp32=o32 \ o32/gp32/long32=o32 \ o32/long32=o32 \ o64/long32=o64 \ eabi/gp32/long32=eabi/gp32 \ eabi/long64=eabi; do \ from=\`echo \$${changes} | sed 's/=.*//'\`; \ to=\`echo \$${changes} | sed 's/.*=//'\`; \ echo \$$endian \$$from \$$arch=\$$endian \$$to \$$arch \ | sed -e 's: *= *:=:' \ -e 's: *:/:g' \ -e 's:=$$:=.:'; \ done; \ done; \ done`