LIB1ASMSRC = arm/lib1funcs.asm LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ _call_via_rX _interwork_call_via_rX \ _lshrdi3 _ashrdi3 _ashldi3 \ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundidf _floatundisf _muldi3 # These functions are present in both lib1funcs.asm and arm-libgcc2.c. Only # one version of a function is built based on compilation time arch setting. LIB2FUNCS_EXTRA += $(srcdir)/config/arm/arm-libgcc2.c LIB2FUNCS_EXCLUDE += _clzdi2 _clzsi2 LIB1ASMFUNCS += _clzdi2 _clzsi2 MULTILIB_OPTIONS = marm/mthumb MULTILIB_DIRNAMES = arm thumb MULTILIB_EXCEPTIONS = MULTILIB_MATCHES = # MULTILIB_OPTIONS += mcpu=ep9312 # MULTILIB_DIRNAMES += ep9312 # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312* # # MULTILIB_OPTIONS += mlittle-endian/mbig-endian # MULTILIB_DIRNAMES += le be # MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle # # MULTILIB_OPTIONS += mhard-float/msoft-float # MULTILIB_DIRNAMES += fpu soft # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork MULTILIB_DIRNAMES += normal interwork # -mandroind implies -mthumb-interwork MULTILIB_OPTIONS += mandroid MULTILIB_DIRNAMES += android MULTILIB_EXCEPTIONS += *mthumb-interwork/*mandroid* # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore # MULTILIB_DIRNAMES += elf under # # MULTILIB_OPTIONS += mcpu=arm7 # MULTILIB_DIRNAMES += nofmult # MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=arm7* # # Note: the multilib_exceptions matches both -mthumb and # # -mthumb-interwork # # # # We have to match all the arm cpu variants which do not have the # # multiply instruction and treat them as if the user had specified # # -mcpu=arm7. Note that in the following the ? is interpreted as # # an = for the purposes of matching command line options. # # FIXME: There ought to be a better way to do this. # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7d # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7di # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm70 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700i # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710c # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7100 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500fe # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm6 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm60 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm600 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610 # MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620 EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o # If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here # EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib # Currently there is a bug somewhere in GCC's alias analysis # or scheduling code that is breaking _fpmul_parts in fp-bit.c. # Disabling function inlining is a workaround for this problem. TARGET_LIBGCC2_CFLAGS = -fno-inline # Assemble startup files. $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm $(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm # ANDROID LOCAL BEGIN # Build a shared libgcc library. # Only work for Android SHLIB_EXT = .so SHLIB_NAME = @shlib_base_name@.so SHLIB_SONAME = @shlib_base_name@.so.1 SHLIB_OBJS = @shlib_objs@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -Wl,-soname,$(SHLIB_SONAME) \ -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \ rm -f $(SHLIB_SONAME) && \ if [ -f $(SHLIB_NAME) ]; then \ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ else true; fi && \ mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ $(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME) # $(slibdir) double quoted to protect it from expansion while building # libgcc.mk. We want this delayed until actual install time. SHLIB_INSTALL = \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir); \ $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \ rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \ $(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME) # ANDROID LOCAL END