# If we are building next to winsup, this will let us find the real
# limits.h when building libgcc2.  Otherwise, winsup must be installed
# first.
LIBGCC2_INCLUDES += -I$(srcdir)/../winsup/include \
	-I$(srcdir)/../winsup/cygwin/include

cygwin1.o: $(srcdir)/config/i386/cygwin1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
  $(TM_H) $(TM_P_H)
	$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
	$(srcdir)/config/i386/cygwin1.c

cygwin2.o: $(srcdir)/config/i386/cygwin2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
  $(TM_H) $(TM_P_H)
	$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
	$(srcdir)/config/i386/cygwin2.c

# Cygwin-specific parts of LIB_SPEC
SHLIB_LC = -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32

# We have already included one of the t-{dw2,sjlj}-eh fragments for EH_MODEL
SHLIB_EH_EXTENSION = $(subst -dw2,,-$(EH_MODEL))

# Cygwin uses different conventions than MinGW; override generic SHLIB_ def'ns here.
SHLIB_IMPLIB = @shlib_base_name@$(SHLIB_EXT).a
SHLIB_SONAME = cyggcc_s$(SHLIB_EH_EXTENSION)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
# This must match the definitions of SHLIB_SONAME/SHLIB_SOVERSION and LIBGCC_SONAME.
# We'd like to use SHLIB_SONAME here too, and we can, since
# we don't rely on shlib_base_name substitution for it.
SHLIB_MKMAP_OPTS = -v pe_dll=$(SHLIB_SONAME)

