+endif # LIBRARY = ""
+
+#--------------------------------------------------------------
+# Build dynamically-linkable libraries for GHCi
+#
+# Build $(GHCI_LIBRARY) from $(LIBOBJS)+$(STUBOBJS)
+#
+# Why? GHCi can only link .o files (at the moment), not .a files
+# so we have to build libFoo.o as well as libFoo.a
+#
+# Furthermore, GHCi currently never loads
+# profiling libraries (or other non-std ways)
+#
+# Inputs:
+# $(GHCI_LIBRARY)
+#
+# Outputs:
+# Rule to build $(GHCI_LIBRARY)
+
+
+ifneq "$(GHCI_LIBRARY)" ""
+ifeq "$(way)" ""
+ifeq "$(GhcWithInterpreter)" "YES"
+
+
+INSTALL_LIBS += $(GHCI_LIBRARY)
+CLEAN_FILES += $(GHCI_LIBRARY)
+
+all :: $(GHCI_LIBRARY)
+
+ifneq "$(DONT_WANT_STD_GHCI_LIB_RULE)" "YES"
+# If you don't want to build GHCI_LIBRARY the 'standard' way,
+# set DONT_WANT_STD_GHCI_LIB_RULE to YES. The Prelude and
+# hslibs/Win32 uses this 'feature'.
+#
+$(GHCI_LIBRARY) :: $(LIBOBJS)
+ ld -r -x -o $@ $(LIBOBJS) $(STUBOBJS)
+
+endif # DONT_WANT_STD_GHCI_LIB_RULE
+endif # GhcWithInterpreter
+endif # way
+endif # GHCI_LIBRARY != ""
+
+
+#----------------------------------------
+# Building Win32 DLLs
+#
+
+ifeq "$(DLLized)" "YES"
+SRC_CC_OPTS += -DDLLized
+
+ifneq "$(PACKAGE)" ""
+
+SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(PACKAGE)$(_cbits)$(_way).def DllVersionInfo.$(way_)o
+
+ifneq "$(PACKAGE) $(IS_CBITS_LIB)" "std YES"
+ifneq "$(PACKAGE)" "rts"
+SRC_BLD_DLL_OPTS += -lHSstd_cbits_imp -L$(GHC_LIB_DIR)/std/cbits
+SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RUNTIME_DIR)
+ifneq "$(PACKAGE)" "std"
+ ifeq "$(IS_CBITS_LIB)" ""
+ SRC_BLD_DLL_OPTS += -lHSstd_$(way_)imp -L$(GHC_LIB_DIR)/std
+ endif
+endif
+endif
+endif
+
+SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RUNTIME_DIR)/gmp
+ifeq "$(IS_CBITS_LIB)" ""
+SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(PACKAGE_DEPS))
+SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(PACKAGE_DEPS))
+endif
+ifneq "$(HAS_CBITS)" ""
+SRC_BLD_DLL_OPTS += -lHS$(PACKAGE)_cbits_imp -Lcbits
+endif
+SRC_BLD_DLL_OPTS += -lwsock32 -lwinmm
+
+endif # PACKAGE != ""
+
+SplitObjs = NO
+
+ifneq "$(LIBRARY)" ""
+
+all :: DllVersionInfo.$(way_)o
+
+ifeq "$(DLL_NAME)" ""
+DLL_NAME = $(patsubst %.a,%.dll,$(subst lib,,$(LIBRARY)))
+endif
+
+ifneq "$(DLL_NAME)" ""
+DLL_NAME := $(DLL_PEN)/$(DLL_NAME)
+endif
+
+all :: $(DLL_NAME)
+
+ifeq "$(DLL_IMPLIB_NAME)" ""
+DLL_IMPLIB_NAME = $(patsubst %.a,%_imp.a,$(LIBRARY))
+endif
+
+$(DLL_NAME) :: $(LIBRARY)
+ $(BLD_DLL) --output-lib $(DLL_IMPLIB_NAME) -o $(DLL_NAME) $(LIBRARY) $(BLD_DLL_OPTS)
+endif # LIBRARY != ""
+
+endif # DLLized
+
+#
+# Version information is baked into a DLL by having the DLL include DllVersionInfo.o.
+# The version info contains two user tweakables: DLL_VERSION and DLL_VERSION_NAME.
+# (both are given sensible defaults though.)
+#
+# Note: this will not work as expected with Cygwin B20.1; you need a more recent
+# version of binutils (to pick up windres bugfixes.)
+
+ifndef DLL_VERSION
+DLL_VERSION=$(ProjectVersion)
+endif
+
+ifndef DLL_VERSION_NAME
+DLL_VERSION_NAME="http://www.haskell.org/ghc"
+endif
+
+ifndef DLL_DESCRIPTION
+DLL_DESCRIPTION="A GHC-compiled DLL"
+endif
+
+ifndef EXE_VERSION
+EXE_VERSION=$(ProjectVersion)