-#
-# Do this separately for now
-#
-binary-pack::
- ( cd $(BIN_DIST_TMPDIR); $(TAR) chzf $(BIN_DIST_NAME).tar.gz $(BIN_DIST_NAME) )
-
-ifneq "$(way)" ""
-.PHONY: package-way-dist
-package-way-dist::
- ( cd $(BIN_DIST_TMPDIR); $(FIND) $(BIN_DIST_NAME)/ \( -name "*$(_way).a" -o -name "*.$(way_)hi" \) -print | xargs tar cvf $(BIN_DIST_TMPDIR)/ghc-$(ProjectVersion)-$(way)-$(TARGETPLATFORM).tar )
- gzip $(BIN_DIST_TMPDIR)/ghc-$(ProjectVersion)-$(way)-$(TARGETPLATFORM).tar
+# Jiggle the files around to make a valid Windows distribution if necessary
+ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
+binary-dist :: fiddle-binary-dist
+endif
+
+fiddle-binary-dist:
+ cd $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) && ../distrib/prep-bin-dist-mingw
+.PHONY: binary-dist-doc-%
+
+BIN_DIST_LIBDIR=$(BIN_DIST_DIR)/libraries
+
+LIBRARY_SUBDIRS=$(shell $(MAKE) -s -C libraries subdirs)
+
+BINARY_DIST_LIBRARY_RULES=$(foreach d,$(LIBRARY_SUBDIRS),binary-dist-lib-$d)
+
+binary-dist:: $(BINARY_DIST_LIBRARY_RULES)
+ cp libraries/Makefile $(BIN_DIST_LIBDIR)
+ cp libraries/gen_contents_index $(BIN_DIST_LIBDIR)
+ cp libraries/index.html $(BIN_DIST_LIBDIR)
+ cp libraries/doc-index.html $(BIN_DIST_LIBDIR)
+ cp -a libraries/stamp $(BIN_DIST_LIBDIR)
+
+$(BINARY_DIST_LIBRARY_RULES): binary-dist-lib-%:
+ $(MKDIRHIER) $(BIN_DIST_LIBDIR)/$*/setup
+ cp libraries/$*/setup/Setup $(BIN_DIST_LIBDIR)/$*/setup
+ cp libraries/$*/*.cabal $(BIN_DIST_LIBDIR)/$*
+ cp -a libraries/$*/dist $(BIN_DIST_LIBDIR)/$*
+ find $(BIN_DIST_LIBDIR)/$*/dist \
+ \( \( -name "*.o" -o -name "*.p_o" \) -a \! -name "HS*" \) \
+ -exec rm {} \;
+
+# Tar up the distribution and build a manifest
+binary-dist :: tar-binary-dist
+
+tar-binary-dist:
+ ( cd $(BIN_DIST_TOPDIR); tar cf - $(BIN_DIST_NAME) | bzip2 >$(BIN_DIST_TARBALL) )
+ ( cd $(BIN_DIST_TOPDIR); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >bin-manifest-$(ProjectVersion) )
+
+# Upload the distribution and documentation
+ifneq "$(PublishLocation)" ""
+binary-dist ::
+ $(MAKE) publish-binary-dist