diff --git a/ghc/rts/gmp/Makefile.in b/ghc/rts/gmp/Makefile.in
index c0871fca3091b14853dd3f2011aa13b704945499..77173bfe17f09c776208ad690b9a60a91987d68a 100644
--- a/ghc/rts/gmp/Makefile.in
+++ b/ghc/rts/gmp/Makefile.in
@@ -61,6 +61,10 @@ FLAGS_TO_PASS = "CC=$(CC)" "CFLAGS=$(CFLAGS)" "XCFLAGS=$(XCFLAGS)"
 
 all: libgmp.a
 
+ifeq "(EnableWin32DLLs)" "YES"
+all: gmp.dll
+endif
+
 %.o : %.c
 	$(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
 
@@ -78,6 +82,11 @@ libgmp.a: mpn/libmpn.a mpz/libmpz.a $(OBJS)
 	mv tmpdir/$@ .
 	rm -rf tmpdir
 
+gmp.dll: libgmp.a
+	dllwrap -mno-cygwin --target=i386-unknown-mingw32 \
+		--export-all --dllname gmp.dll --output-lib=libgmp_imp.a \
+		-o gmp.dll libgmp.a
+
 libmp.a: mpn/libmpn.a mpbsd/libmpbsd.a $(OBJS)
 	rm -rf tmpdir
 	mkdir tmpdir