diff --git a/mk/config.mk.in b/mk/config.mk.in
index fe081e9f6c28288bbd9c71ca824761fac7c35284..725c6da57b028f445afcf7a2720a88943209cc01 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -600,6 +600,7 @@ REAL_SHELL=$(SHELL)
 SIZE			= size
 STRIP			= strip
 TAR			= @TarCmd@
+ZIP			= zip
 
 #
 # Under cygwin32, we have to deal with .exe suffixes
diff --git a/mk/target.mk b/mk/target.mk
index 3b9bef841304483d785cce30d7665e8b4dd9c351..fe44cae1f15bfc3c3b9d37496ea9938429e7c364 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -741,9 +741,14 @@ dist-post::
 dist-manifest ::
 	cd $(SRC_DIST_DIR); find . \( -type l -o -type f \) -exec ls -lLG {} \; | sed -e 's/\.\///' > /tmp/MANIFEST ; mv /tmp/MANIFEST MANIFEST
 
-dist-package::
+dist-package:: dist-package-tar-gz
+
+dist-package-tar-gz ::
 	cd $(SRC_DIST_DIR); cd ..; $(TAR) chzf $(SRC_DIST_NAME).tar.gz $(SRC_DIST_NAME)
 
+dist-package-zip ::
+	cd $(SRC_DIST_DIR); cd ..; $(ZIP) -r $(SRC_DIST_NAME).zip $(SRC_DIST_NAME)
+
 #
 # binary-dist creates a binary bundle, set BIN_DIST_NAME
 # to package name and do `make binary-dist' (normally this