# APPLE LOCAL file ARM 5681645
# Build a shared libgcc library with the darwin linker.
SHLIB_SOVERSION = 1
SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0
SHLIB_EXT = .dylib
SHLIB_INSTALL_NAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT)
SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT)
SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_LC = -lc

# Darwin only searches in /usr/lib for shared libraries, not in subdirectories,
# so the libgcc variants have different names not different locations.
# Note that this version is used for the loader, not the linker; the linker
# uses the stub versions named by $(LIBGCC).
# APPLE LOCAL begin no-libtool
# APPLE LOCAL begin ARM dead strip libgcc_s
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
	-Wl,-dead_strip \
	-install_name $(slibdir)/$(SHLIB_INSTALL_NAME) \
	-single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
	-Wl,-exported_symbols_list,$(SHLIB_MAP) \
	$(SHLIB_VERSTRING) \
	@multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC)
# APPLE LOCAL end ARM dead strip libgcc_s
# APPLE LOCAL end no-libtool

# $(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_SONAME) \
	  $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME)

SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MKMAP_OPTS = -v leading_underscore=1
SHLIB_MAPFILES += $(srcdir)/libgcc-std.ver $(srcdir)/config/arm/libgcc-iphoneos.ver

# Must use a different directive for hidden visibility in assembly sources.
ASM_HIDDEN_OP = .private_extern

libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): stmp-multilib
	# When building multilibbed target libraries, all the required
	# libraries are expected to exist in the multilib directory.
	MLIBS=`$(GCC_FOR_TARGET) --print-multi-lib \
		| sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \
	if [ -n "$$MLIBS" ] ; then \
	  for mlib in '' $$MLIBS ; do \
	    cp ./$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \
	       ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
	  done ; \
	  $(LIPO_FOR_TARGET) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \
	    -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* ; \
	  rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* ; \
	else \
	  cp ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \
	     ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) ; \
	fi

# From the point-of-view of the Makefiles, libgcc is built by the 'strip'
# and 'lipo' commands above.
LIBGCC=libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) stmp-multilib
