# Set this as a minimum (unless overriden by arch t-files) since it's a
# reasonable lowest common denominator that works for all our archs.
HOST_LIBGCC2_CFLAGS += $(DARWIN_MIN_LIB_VERSION)

crt3.o: $(srcdir)/config/darwin-crt3.c
	$(crt_compile) $(DARWIN_MIN_CRT_VERSION) -c $<

crttms.o: $(srcdir)/config/darwin-crt-tm.c
	$(crt_compile) $(DARWIN_MIN_CRT_VERSION) -DSTART -c $<

crttme.o: $(srcdir)/config/darwin-crt-tm.c
	$(crt_compile) $(DARWIN_MIN_CRT_VERSION) -DEND -c $<

# Make emutls weak so that we can deal with -static-libgcc, override the
# hidden visibility when this is present in libgcc_eh.
emutls.o: HOST_LIBGCC2_CFLAGS += \
  -DEMUTLS_ATTR='__attribute__((__weak__,__visibility__("default")))'
emutls_s.o: HOST_LIBGCC2_CFLAGS += \
  -DEMUTLS_ATTR='__attribute__((__weak__,__visibility__("default")))'

# Make the emutls crt as a convenience lib so that it can be linked
# optionally, use the shared version so that we can link with DSO.
libemutls_w.a: emutls_s.o
	$(AR_CREATE_FOR_TARGET) $@ $<
	$(RANLIB_FOR_TARGET) $@

# Patch to __Unwind_Find_Enclosing_Function for Darwin10.
# This needs to be built for darwin10, regardless of the current platform
# version.
d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c libgcc_tm.h
	$(crt_compile) -mmacosx-version-min=10.6 -c $<

# Using this crt as a library means that it will not be added to an exe
# (or module) unless needed.
libd10-uwfef.a: d10-uwfef.o
	$(AR_CREATE_FOR_TARGET) $@ d10-uwfef.o
	$(RANLIB_FOR_TARGET) $@

###### Unwinder #######
# Most Darwin versions get their unwinder from libSystem; older versions
# have an installed /usr/lib/libgcc_s.1.dylib.
# So do not add the unwinder to the shared libgcc.
LIB2ADDEHSHARED =

# We still need it in the _eh.a for earlier platform versions.
# Use unwind-dw2-fde-darwin
LIB2ADDEH = $(srcdir)/unwind-dw2.c \
	    $(srcdir)/config/unwind-dw2-fde-darwin.c \
	    $(srcdir)/unwind-c.c

# Do not build a shared unwind lib by default.
LIBEHSOBJS=

# Symbols for all the sub-ports.
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
