bindists are now some way towards working
authorIan Lynagh <igloo@earth.li>
Sun, 10 Aug 2008 00:50:16 +0000 (00:50 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 10 Aug 2008 00:50:16 +0000 (00:50 +0000)
30 files changed:
Makefile
compiler/Makefile
docs/Makefile
docs/docbook-cheat-sheet/Makefile
docs/ext-core/Makefile
docs/man/Makefile
docs/storage-mgt/Makefile
docs/users_guide/Makefile
driver/Makefile
driver/ghc/Makefile
driver/ghci/Makefile
driver/mangler/Makefile
driver/split/Makefile
gmp/Makefile
includes/Makefile
libraries/Makefile
libraries/Makefile.local
mk/cabal.mk
mk/config.mk.in
mk/install.mk
rts/Makefile
utils/Makefile
utils/genapply/Makefile
utils/genprimopcode/Makefile
utils/hp2ps/Makefile
utils/mkdependC/Makefile
utils/mkdirhier/Makefile
utils/parallel/Makefile
utils/runstdtest/Makefile
utils/unlit/Makefile

index edad014..1f9b653 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -307,90 +307,99 @@ binary-dist::
 
 else
 
-BinDistDirs = includes compiler docs rts
-
-BIN_DIST_TOP= distrib/Makefile \
-              distrib/configure-bin.ac \
-              distrib/INSTALL \
-              distrib/README \
-              ANNOUNCE \
-              LICENSE \
-              install-sh \
-              extra-gcc-opts.in \
-              config.guess \
-              config.sub   \
-              aclocal.m4
+.PHONY: binary-dist
 
-ifeq "$(darwin_TARGET_OS)" "1"
-BIN_DIST_TOP+=mk/fix_install_names.sh
-endif
-
-.PHONY: binary-dist-pre% binary-dist
-
-binary-dist:: binary-dist-pre
-
-binary-dist-pre::
-       $(MKDIRHIER) $(BIN_DIST_DIR)/mk
-       echo 'include $$(TOP)/Makefile-vars' >  $(BIN_DIST_DIR)/mk/boilerplate.mk
-       echo 'include $$(TOP)/mk/package.mk' >  $(BIN_DIST_DIR)/mk/target.mk
-       echo 'include $$(TOP)/mk/install.mk' >> $(BIN_DIST_DIR)/mk/target.mk
-       echo 'include $$(TOP)/mk/recurse.mk' >> $(BIN_DIST_DIR)/mk/target.mk
-       cp mk/package.mk $(BIN_DIST_DIR)/mk/
-       cp mk/install.mk $(BIN_DIST_DIR)/mk/
-       cp mk/recurse.mk $(BIN_DIST_DIR)/mk/
-       cp mk/fptools.css $(BIN_DIST_DIR)/mk/
-       $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM)
-       $(MKDIRHIER) $(BIN_DIST_DIR)/share
+BIN_DIST_VARFILE=$(BIN_DIST_PREP)/Makefile-vars.in
 
-binary-dist::
-       $(MAKE) -C gmp       binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C includes  binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C compiler  binary-dist DOING_BIN_DIST=YES $(INSTALL_STAGE)
-       $(MAKE) -C rts       binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C driver    binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C utils     binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C docs      binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C libraries binary-dist DOING_BIN_DIST=YES
-       $(MAKE) -C libraries/Cabal/doc binary-dist DOING_BIN_DIST=YES
-
-VARFILE=$(BIN_DIST_DIR)/Makefile-vars.in
+WHERE_AM_I = $(BIN_DIST_NAME)
 
 binary-dist::
-       @for i in $(BIN_DIST_TOP); do \
-         if test -f "$$i"; then \
-            echo cp $$i $(BIN_DIST_DIR); \
-            cp $$i $(BIN_DIST_DIR); \
-         fi; \
-       done;
-       @echo "Configuring the Makefile for this project..."
-       echo                                                         >  $(VARFILE)
-       echo "package = ghc"                                         >> $(VARFILE)
-       echo "version = $(ProjectVersion)"                           >> $(VARFILE)
-       echo "ProjectVersion = $(ProjectVersion)"                    >> $(VARFILE)
-       echo "HaveLibGmp = $(HaveLibGmp)"                            >> $(VARFILE)
-       echo "GhcLibsWithUnix = $(GhcLibsWithUnix)"                  >> $(VARFILE)
-       echo "GhcWithInterpreter = $(GhcWithInterpreter)"            >> $(VARFILE)
-       echo "GhcHasEditline = $(GhcHasEditline)"                    >> $(VARFILE)
-       echo "BootingFromHc = $(BootingFromHc)"                      >> $(VARFILE)
-       echo "XMLDocWays = $(XMLDocWays)"                            >> $(VARFILE)
-       # We won't actually use xsltproc, but we need to know if it's "" or not
-       echo "XSLTPROC = $(XSLTPROC)"                                >> $(VARFILE)
-       echo "TARGETPLATFORM = $(TARGETPLATFORM)"                    >> $(VARFILE)
-       echo "HADDOCK_DOCS = $(HADDOCK_DOCS)"                        >> $(VARFILE)
-
-       cat distrib/Makefile-bin-vars.in                             >> $(VARFILE)
-       @echo "Generating a shippable configure script.."
-       $(MV) $(BIN_DIST_DIR)/configure-bin.ac $(BIN_DIST_DIR)/configure.ac
-       ( cd $(BIN_DIST_DIR); autoreconf )
+# For the most part we will be putting filenames in $(BIN_DIST_LIST),
+# and telling tar to tar all of those files up. So to start with we
+# remove $(BIN_DIST_LIST) so that we can start with an empty slate
+       $(RM) -f $(BIN_DIST_LIST)
+# Now we add a few files from mk/ to $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/package.mk     >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/install.mk     >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/recurse.mk     >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/cabal.mk       >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/cabal-flags.mk >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/mk/fptools.css    >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/ANNOUNCE          >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/LICENSE           >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/install-sh        >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/extra-gcc-opts.in >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/config.guess      >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/config.sub        >> $(BIN_DIST_LIST)
+# Now we recurse into various subdirectories and tell them to add and
+# files that they want into $(BIN_DIST_LIST)
+# XXX Ug, this duplication of "-C foo WHERE_AM_I=.../foo" isn't nice.
+       $(MAKE) -C gmp                 binary-dist WHERE_AM_I=$(WHERE_AM_I)/gmp
+       $(MAKE) -C includes            binary-dist WHERE_AM_I=$(WHERE_AM_I)/includes
+       $(MAKE) -C compiler            binary-dist WHERE_AM_I=$(WHERE_AM_I)/compiler $(INSTALL_STAGE)
+       $(MAKE) -C rts                 binary-dist WHERE_AM_I=$(WHERE_AM_I)/rts
+       $(MAKE) -C driver              binary-dist WHERE_AM_I=$(WHERE_AM_I)/driver
+       $(MAKE) -C utils               binary-dist WHERE_AM_I=$(WHERE_AM_I)/utils
+       $(MAKE) -C docs                binary-dist WHERE_AM_I=$(WHERE_AM_I)/docs
+       $(MAKE) -C libraries           binary-dist WHERE_AM_I=$(WHERE_AM_I)/libraries
+       $(MAKE) -C libraries/Cabal/doc binary-dist WHERE_AM_I=$(WHERE_AM_I)/libraries/Cabal/doc
+# Now thinks get messier. Some files we need to move around, rename or
+# generate. We do this under $(BIN_DIST_PREP).
+       $(RM) -rf    $(BIN_DIST_PREP_DIR)
+       $(MKDIRHIER) $(BIN_DIST_PREP)/utils/pwd
+       cp utils/pwd/dist-install/build/pwd/pwd $(BIN_DIST_PREP)/utils/pwd
+       $(MKDIRHIER) $(BIN_DIST_PREP)/mk
+       echo 'include $$(TOP)/Makefile-vars' >  $(BIN_DIST_PREP)/mk/boilerplate.mk
+       echo 'include $$(TOP)/mk/package.mk' >  $(BIN_DIST_PREP)/mk/target.mk
+       echo 'include $$(TOP)/mk/install.mk' >> $(BIN_DIST_PREP)/mk/target.mk
+       echo 'include $$(TOP)/mk/recurse.mk' >> $(BIN_DIST_PREP)/mk/target.mk
+       touch                                   $(BIN_DIST_PREP)/mk/bindist.mk
+ifeq "$(darwin_TARGET_OS)" "1"
+       cp mk/fix_install_names.sh $(BIN_DIST_PREP)/mk
 endif
 
-# Tar up the distribution and build a manifest
-binary-dist :: tar-binary-dist
+       cp distrib/Makefile         $(BIN_DIST_PREP)
+       cp distrib/INSTALL          $(BIN_DIST_PREP)
+       cp distrib/README           $(BIN_DIST_PREP)
+       cp distrib/configure-bin.ac $(BIN_DIST_PREP)/configure.ac
+# We can't just list aclocal.m4 in $(BIN_DIST_LIST), as it needs to be
+# next to configure.ac when we run autoreconf
+       cp aclocal.m4               $(BIN_DIST_PREP)
+       cd $(BIN_DIST_PREP) && autoreconf
+
+       echo "package = ghc"                              >> $(BIN_DIST_VARFILE)
+       echo "version = $(ProjectVersion)"                >> $(BIN_DIST_VARFILE)
+       echo "ProjectVersion = $(ProjectVersion)"         >> $(BIN_DIST_VARFILE)
+       echo "HaveLibGmp = $(HaveLibGmp)"                 >> $(BIN_DIST_VARFILE)
+       echo "GhcLibsWithUnix = $(GhcLibsWithUnix)"       >> $(BIN_DIST_VARFILE)
+       echo "GhcWithInterpreter = $(GhcWithInterpreter)" >> $(BIN_DIST_VARFILE)
+       echo "GhcHasEditline = $(GhcHasEditline)"         >> $(BIN_DIST_VARFILE)
+       echo "BootingFromHc = $(BootingFromHc)"           >> $(BIN_DIST_VARFILE)
+       echo "XMLDocWays = $(XMLDocWays)"                 >> $(BIN_DIST_VARFILE)
+# We won't actually use xsltproc, but we need to know if it's "" or not
+       echo "XSLTPROC = $(XSLTPROC)"                     >> $(BIN_DIST_VARFILE)
+       echo "TARGETPLATFORM = $(TARGETPLATFORM)"         >> $(BIN_DIST_VARFILE)
+       echo "HADDOCK_DOCS = $(HADDOCK_DOCS)"             >> $(BIN_DIST_VARFILE)
+       cat distrib/Makefile-bin-vars.in                  >> $(BIN_DIST_VARFILE)
+
+# With that done, we can now build the actual tarball
+
+       $(RM) -f $(BIN_DIST_NAME)
+       ln -s . $(BIN_DIST_NAME)
+       tar cf $(BIN_DIST_TAR) -T $(BIN_DIST_LIST)
+       cd $(BIN_DIST_PREP_DIR) && tar rf $(BIN_DIST_TAR) $(BIN_DIST_NAME)
+       bzip2 < $(BIN_DIST_TAR) > $(BIN_DIST_TAR_BZ2)
+       tar tf $(BIN_DIST_TAR) | sort > bin-manifest-$(ProjectVersion)
+endif
 
-.PHONY: tar-binary-dist
-tar-binary-dist:
-       ( cd $(BIN_DIST_TOPDIR_ABS); tar cf - $(BIN_DIST_NAME) | bzip2 >$(BIN_DIST_TARBALL) )
-       ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >$(FPTOOLS_TOP_ABS)/bin-manifest-$(ProjectVersion) )
+# XXX Presumably we still need to do this for Windows?
+## Tar up the distribution and build a manifest
+#binary-dist :: tar-binary-dist
+#
+#.PHONY: tar-binary-dist
+#tar-binary-dist:
+#      ( cd $(BIN_DIST_TOPDIR_ABS); tar cf - $(BIN_DIST_NAME) | bzip2 >$(BIN_DIST_TARBALL) )
+#      ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >$(FPTOOLS_TOP_ABS)/bin-manifest-$(ProjectVersion) )
 
 PUBLISH_FILES = $(BIN_DIST_TARBALL)
 
index 5598be6..1dbb2d3 100644 (file)
@@ -435,10 +435,14 @@ primop-primop-info.hs-incl: prelude/primops.txt
 primop-usage.hs-incl: prelude/primops.txt
        $(GENPRIMOP) --usage              < $< > $@
 
-# XXX:
 #-----------------------------------------------------------------------------
 # binary-dist
 #
+
+# XXX This is just broken, currently
+binary-dist:
+       @:
+
 #binary-dist:
 #      $(INSTALL_DIR)                         $(BIN_DIST_DIR)/compiler
 #      $(INSTALL_DIR)                         $(BIN_DIST_DIR)/compiler/stage$(stage)
index fc60173..9b51adb 100644 (file)
@@ -6,21 +6,20 @@ ifneq "$(DOING_BIN_DIST)" "YES"
 SUBDIRS += ext-core storage-mgt
 endif
 
-PAGES = index.html
+PAGE = index.html
 
-install-docs :: $(PAGES)
-       $(INSTALL_DIR)                                                   $(DESTDIR)$(htmldir)
-       $(INSTALL_DATA) $(INSTALL_OPTS) $(PAGES) $(DESTDIR)$(htmldir)
+install-docs :: $(PAGE)
+       $(INSTALL_DIR)                          $(DESTDIR)$(htmldir)
+       $(INSTALL_DATA) $(INSTALL_OPTS) $(PAGE) $(DESTDIR)$(htmldir)
 
 .PHONY: binary-dist binary-dist.doc.%
 
 binary-dist: $(foreach SUBDIR,$(SUBDIRS),binary-dist.doc.$(SUBDIR))
-       $(MKDIRHIER) $(BIN_DIST_DIR)/docs
-       cp Makefile $(BIN_DIST_DIR)/docs/
-       cp $(PAGES) $(BIN_DIST_DIR)/docs/
+       echo $(WHERE_AM_I)/Makefile >> $(BIN_DIST_LIST)
+       echo $(WHERE_AM_I)/$(PAGE)  >> $(BIN_DIST_LIST)
 
 $(foreach SUBDIR,$(SUBDIRS),binary-dist.doc.$(SUBDIR)): \
 binary-dist.doc.%:
-       $(MAKE) -C $* binary-dist
+       $(MAKE) -C $* binary-dist WHERE_AM_I=$(WHERE_AM_I)/$*
 
 include $(TOP)/mk/target.mk
index 95896d1..14e0c3c 100644 (file)
@@ -4,4 +4,7 @@ include $(TOP)/mk/boilerplate.mk
 XML_DOC = docbook-cheat-sheet
 INSTALL_XML_DOC = docbook-cheat-sheet
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
index 561b71b..10f3183 100644 (file)
@@ -28,6 +28,9 @@ distclean: clean
 
 maintainer-clean: distclean
 
+binary-dist:
+       @:
+
 # dummy targets
 all:
 boot:
index 7fa112d..71644ca 100644 (file)
@@ -45,11 +45,7 @@ install-docs:: $(MAN_PAGE).$(MAN_SECTION)
 
 endif
 
-binary-dist:: $(MAN_PAGE).$(MAN_SECTION)
-       $(MKDIRHIER) $(BIN_DIST_DIR)/docs/man
-       cp Makefile                   $(BIN_DIST_DIR)/docs/man/
-ifneq "$(strip $(XSLTPROC))" ""
-       cp $(MAN_PAGE).$(MAN_SECTION) $(BIN_DIST_DIR)/docs/man/
-endif
+BINDIST_EXTRAS += $(MAN_PAGE).$(MAN_SECTION)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index 871766d..9ef54ad 100644 (file)
@@ -25,6 +25,9 @@ distclean: clean
 
 maintainer-clean: distclean
 
+binary-dist:
+       @:
+
 # dummy targets
 all:
 boot:
index f0a31fb..1a370d5 100644 (file)
@@ -4,4 +4,7 @@ include $(TOP)/mk/boilerplate.mk
 XML_DOC = users_guide
 INSTALL_XML_DOC = users_guide
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
index e81b1ea..5825356 100644 (file)
@@ -28,9 +28,7 @@ INSTALL_DATAS += package.conf ghc-usage.txt ghci-usage.txt
 CLEAN_FILES += package.conf* stamp-pkg-conf*
 
 binary-dist:
-       $(INSTALL_DIR)                   $(BIN_DIST_DIR)/driver
-       $(INSTALL_DATA) Makefile         $(BIN_DIST_DIR)/driver
-       $(INSTALL_DATA) $(INSTALL_DATAS) $(BIN_DIST_DIR)/driver
-       set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d binary-dist; done
+       for FILE in Makefile $(INSTALL_DATAS); do echo $(WHERE_AM_I)/$$FILE >> $(BIN_DIST_LIST); done
+       set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d binary-dist WHERE_AM_I=$(WHERE_AM_I)/$$d; done
 
 include $(TOP)/mk/target.mk
index 66a8d2b..fc9bb4a 100644 (file)
@@ -23,8 +23,6 @@ endif
 
 # -----------------------------------------------------------------------------
 
-binary-dist:
-       $(INSTALL_DIR)           $(BIN_DIST_DIR)/driver/ghc
-       $(INSTALL_DATA) Makefile $(BIN_DIST_DIR)/driver/ghc/
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index 2c118fa..94fe452 100644 (file)
@@ -53,8 +53,6 @@ ghci.res : ghci.rc ghci.ico
        windres --preprocessor="$(CPP) -xc -DRC_INVOKED" -o ghci.res -i ghci.rc -O coff
 endif
 
-binary-dist:
-       $(INSTALL_DIR)           $(BIN_DIST_DIR)/driver/ghci
-       $(INSTALL_DATA) Makefile $(BIN_DIST_DIR)/driver/ghci/
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index dfc7c39..1242d6c 100644 (file)
@@ -20,9 +20,7 @@ ifeq "$(BootingFromHc)" "YES"
 boot :: all
 endif
 
-binary-dist:
-       $(INSTALL_DIR)             $(BIN_DIST_DIR)/driver/mangler
-       $(INSTALL_DATA)   Makefile $(BIN_DIST_DIR)/driver/mangler/
-       $(INSTALL_SCRIPT) $(PROG)  $(BIN_DIST_DIR)/driver/mangler/
+BINDIST_EXTRAS += $(PROG)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index cce7618..404cb97 100644 (file)
@@ -15,9 +15,7 @@ all:: $(PROG).prl
 INSTALL_LIBEXEC_SCRIPTS += $(PROG)
 CLEAN_FILES += $(PROG) $(PROG).prl
 
-binary-dist:
-       $(INSTALL_DIR)             $(BIN_DIST_DIR)/driver/split
-       $(INSTALL_DATA)   Makefile $(BIN_DIST_DIR)/driver/split/
-       $(INSTALL_SCRIPT) $(PROG)  $(BIN_DIST_DIR)/driver/split/
+BINDIST_EXTRAS += $(PROG)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index f194f66..2a9fdcf 100644 (file)
@@ -114,21 +114,9 @@ endif
 
 include $(TOP)/mk/target.mk
 
-binary-dist:
-       $(INSTALL_DIR)                         $(BIN_DIST_DIR)/gmp
-       $(INSTALL_DATA)    Makefile            $(BIN_DIST_DIR)/gmp/
-ifneq "$(HaveLibGmp)" "YES"
- ifneq "$(HaveFrameworkGMP)" "YES"
-       $(INSTALL_DATA)    $(BINDIST_STAMPS)   $(BIN_DIST_DIR)/gmp/
-  ifneq "$(INSTALL_PROGS)" ""
-       $(INSTALL_DATA)    $(INSTALL_PROGS)    $(BIN_DIST_DIR)/gmp/
-  endif
-  ifneq "$(INSTALL_LIBS)" ""
-       $(INSTALL_DATA)    $(INSTALL_LIBS)     $(BIN_DIST_DIR)/gmp/
-  endif
-  ifneq "$(INSTALL_HEADERS)" ""
-       $(INSTALL_HEADER)  $(INSTALL_HEADERS)  $(BIN_DIST_DIR)/gmp/
-  endif
- endif
-endif
+BINDIST_EXTRAS += $(BINDIST_STAMPS)
+BINDIST_EXTRAS += $(INSTALL_PROGS)
+BINDIST_EXTRAS += $(INSTALL_LIBS)
+BINDIST_EXTRAS += $(INSTALL_HEADERS)
+include $(TOP)/mk/bindist.mk
 
index bebe2eb..bacf4bd 100644 (file)
@@ -177,10 +177,8 @@ endif
 #
 INSTALL_HEADERS += $(H_FILES) $(H_CONFIG) $(H_PLATFORM)
 
-binary-dist:
-       $(INSTALL_DIR)                     $(BIN_DIST_DIR)/includes
-       $(INSTALL_DATA) Makefile           $(BIN_DIST_DIR)/includes/
-       $(INSTALL_DATA) $(INSTALL_HEADERS) $(BIN_DIST_DIR)/includes/
+BINDIST_EXTRAS += $(INSTALL_HEADERS)
+include $(TOP)/mk/bindist.mk
 
 #
 # `make clean' settings:
index 5c5d192..6cc349b 100644 (file)
@@ -371,33 +371,20 @@ install.library.%: ifBuildable/ifBuildable
 
 BIN_DIST_LIBDIR=$(BIN_DIST_DIR)/libraries
 
-binary-dist: $(foreach SUBDIR,$(SUBDIRS),binary-dist.library.$(SUBDIR))
-       mkdir                               $(BIN_DIST_LIBDIR)/ifBuildable
-       cp        ifBuildable/ifBuildable       $(BIN_DIST_LIBDIR)/ifBuildable
-       cp    Makefile                      $(BIN_DIST_LIBDIR)
+BINDIST_EXTRAS += ifBuildable/ifBuildable
 ifeq "$(HADDOCK_DOCS)" "YES"
-       cp    gen_contents_index            $(BIN_DIST_LIBDIR)
-       cp    index.html                    $(BIN_DIST_LIBDIR)
-       cp    doc-index*.html               $(BIN_DIST_LIBDIR)
+BINDIST_EXTRAS += gen_contents_index
+BINDIST_EXTRAS += index.html
+BINDIST_EXTRAS += doc-index*.html
 endif
-       cp -pR stamp                         $(BIN_DIST_LIBDIR)
+binary-dist: $(foreach SUBDIR,$(SUBDIRS),binary-dist.library.$(SUBDIR))
+# This is a bit of a hack, but it works...
+       echo $(WHERE_AM_I)/Makefile >> $(BIN_DIST_LIST)
 
 $(foreach SUBDIR,$(SUBDIRS),binary-dist.library.$(SUBDIR)): \
 binary-dist.library.%:
        if $(IFBUILDABLE) $*; then \
-         $(MKDIRHIER) $(BIN_DIST_LIBDIR)/$*; \
-         cd $* && \
-         cp    $*.cabal      $(BIN_DIST_LIBDIR)/$* && \
-         cp    LICENSE       $(BIN_DIST_LIBDIR)/$* && \
-         cp -R dist          $(BIN_DIST_LIBDIR)/$* && \
-         $(FIND) . -name "*.buildinfo" -exec cp {} $(BIN_DIST_LIBDIR)/$* \; && \
-         $(FIND) . -name unbuildable -exec cp {} $(BIN_DIST_LIBDIR)/$* \; && \
-         (cp -RL include      $(BIN_DIST_LIBDIR)/$* || true) && \
-         $(FIND) $(BIN_DIST_LIBDIR)/$*/dist \
-            \( -name "*_split" -o -name "autogen" \) | xargs rm -rf && \
-         $(FIND) $(BIN_DIST_LIBDIR)/$*/dist \
-            \( \( -name "*.o" -o -name "*.p_o" \) -a ! -name "HS*" \) \
-            -exec rm {} \; ; \
+         $(MAKE) -C $* -f Makefile.local binary-dist BINDIST_EXTRAS="$*.cabal LICENSE $*.buildinfo unbuildable" WHERE_AM_I=$(WHERE_AM_I)/$*; \
        fi
 
 # Ignore some doc targets that we don't support
index 7ca6115..0caadcf 100644 (file)
@@ -33,3 +33,6 @@ endif
 # Now add flags from the GHC build system to the Cabal build:
 GHC_OPTS    += $(SRC_HC_OPTS)
 GHC_OPTS    += $(GhcLibHcOpts)
+
+include $(TOP)/mk/bindist.mk
+
index 98b985b..1ae6cba 100644 (file)
@@ -1,5 +1,6 @@
 
 include $(TOP)/mk/cabal-flags.mk
+include $(TOP)/mk/bindist.mk
 
 # XXX We would like to turn this on, but Cabal generates paths files
 #     that are not -Wall clean!
@@ -60,5 +61,3 @@ ifneq "$(EXTRA_CLEAN)" ""
        $(RM) -f $(EXTRA_CLEAN)
 endif
 
-# XXX fix binary-dist
-
index 839fe29..3812475 100644 (file)
@@ -535,10 +535,15 @@ endif
 # On Windows this is a c:/foo/bar style path.
 FPTOOLS_TOP_ABS                = @hardtop@
 
-BIN_DIST_NAME=ghc-$(ProjectVersion)
 BIN_DIST_TOPDIR_ABS=$(FPTOOLS_TOP_ABS)
 BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
-BIN_DIST_TARBALL=$(FPTOOLS_TOP_ABS)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
+
+BIN_DIST_NAME=ghc-$(ProjectVersion)
+BIN_DIST_TAR=$(FPTOOLS_TOP_ABS)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar
+BIN_DIST_TAR_BZ2=$(BIN_DIST_TAR).bz2
+BIN_DIST_PREP_DIR=$(FPTOOLS_TOP_ABS)/bindist-prep
+BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
+BIN_DIST_LIST=$(FPTOOLS_TOP_ABS)/bindist-list
 
 # Definition of installation directories, we don't use half of these, but since
 # the configure script has them on offer while passing through, we might as well
index dd8dfc4..41b312c 100644 (file)
@@ -270,10 +270,6 @@ ifeq "$(DOC_SUBDIR)" ""
 DOC_SUBDIR=docs/$(XML_DOC)
 endif
 
-binary-dist::
-       $(MKDIRHIER) $(BIN_DIST_DIR)/$(DOC_SUBDIR)
-       $(CP) Makefile $(BIN_DIST_DIR)/$(DOC_SUBDIR)
-
 ifneq "$(XMLDocWays)" ""
 # TODO: The following could be an entry for an Obfuscated Makefile Contest...
 install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.html,%/index.html,.$(i))))
@@ -293,19 +289,6 @@ install-docs-html-no-chunks:
 install-docs-%:
        $(INSTALL_DIR) $(DESTDIR)$($*dir)
        $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC).$* $(DESTDIR)$($*dir)
-
-binary-dist:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.html,%/index.html,.$(i))))
-
-binary-dist:: $(foreach i,$(XMLDocWays),binary-dist-docs-$i)
-
-binary-dist-docs-html:
-       $(CP) -r $(INSTALL_XML_DOC) $(BIN_DIST_DIR)/$(DOC_SUBDIR)
-
-binary-dist-docs-html-no-chunks:
-       $(CP) $(INSTALL_XML_DOC).html $(BIN_DIST_DIR)/$(DOC_SUBDIR)/
-
-binary-dist-docs-%:
-       $(CP) $(INSTALL_XML_DOC).$* $(BIN_DIST_DIR)/$(DOC_SUBDIR)/
 endif
 endif
 
index 8ca69ef..09f5766 100644 (file)
@@ -468,13 +468,8 @@ endif
 #
 # binary-dist
 
-binary-dist:
-       $(INSTALL_DIR)                         $(BIN_DIST_DIR)/rts
-       $(INSTALL_DATA)    Makefile            $(BIN_DIST_DIR)/rts/
-       $(INSTALL_DATA)    package.conf.in     $(BIN_DIST_DIR)/rts/
-ifneq "$(INSTALL_LIBS)" ""
-       $(INSTALL_DATA)    $(INSTALL_LIBS)     $(BIN_DIST_DIR)/rts/
-endif
-ifneq "$(INSTALL_LIBEXECS)" ""
-       $(INSTALL_PROGRAM) $(INSTALL_LIBEXECS) $(BIN_DIST_DIR)/rts/
-endif
+BINDIST_EXTRAS += package.conf.in
+BINDIST_EXTRAS += $(INSTALL_LIBS)
+BINDIST_EXTRAS += $(INSTALL_LIBEXECS)
+include $(TOP)/mk/bindist.mk
+
index a6d39cc..6dc6838 100644 (file)
@@ -42,11 +42,6 @@ endif
 #  unlikely to want it desperately.  It is easy to build once you have
 #  a Haskell compiler and if you want it.
 
-binary-dist:
-       $(INSTALL_DIR)           $(BIN_DIST_DIR)/utils
-       $(INSTALL_DATA) Makefile $(BIN_DIST_DIR)/utils/
-       set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d binary-dist; done
-
 include $(TOP)/mk/target.mk
 
 # genprimopcode is needed to boot in ghc/compiler...
@@ -57,7 +52,7 @@ endif
 
 WITH_BOOTSTRAPPING_COMPILER = installPackage ghc-pkg hsc2hs hpc
 
-WITH_STAGE1 = installPackage ghc-pkg hasktags runghc hpc
+WITH_STAGE1 = installPackage ghc-pkg hasktags runghc hpc pwd
 ifneq "$(NO_INSTALL_HSC2HS)" "YES"
 WITH_STAGE1 += hsc2hs
 endif
@@ -65,6 +60,10 @@ endif
 # sort removes duplicates - we don't actually care about the order
 WITH_EITHER = $(sort $(WITH_BOOTSTRAPPING_COMPILER) $(WITH_STAGE1))
 
+binary-dist: $(foreach P,$(WITH_STAGE1),binary-dist.$P)
+       echo $(WHERE_AM_I)/Makefile >> $(BIN_DIST_LIST)
+       set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d binary-dist WHERE_AM_I=$(WHERE_AM_I)/$$d; done
+
 clean distclean:: $(foreach P,$(WITH_EITHER),clean.$P)
 
 with-bootstrapping-compiler: \
@@ -90,3 +89,7 @@ $(foreach P,$(WITH_STAGE1),install.$P): \
 install.%:
        $(MAKE) -C $* install
 
+$(foreach P,$(WITH_STAGE1),binary-dist.$P): \
+binary-dist.%:
+       $(MAKE) -C $* binary-dist WHERE_AM_I=$(WHERE_AM_I)/$*
+
index 64489db..a017547 100644 (file)
@@ -27,4 +27,7 @@ GenApply.o : $(GHC_INCLUDE_DIR)/ghcconfig.h
 GenApply.o : $(GHC_INCLUDE_DIR)/MachRegs.h
 GenApply.o : $(GHC_INCLUDE_DIR)/Constants.h
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
index 20c409a..ed011eb 100644 (file)
@@ -3,5 +3,8 @@ include $(TOP)/mk/boilerplate.mk
 
 HS_PROG = genprimopcode
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
 
index 09c193f..93aa856 100644 (file)
@@ -14,9 +14,7 @@ LIBS       = $(LIBM)
 
 CLEAN_FILES += $(C_OBJS) $(C_PROG)
 
-binary-dist:
-       $(INSTALL_DIR)               $(BIN_DIST_DIR)/utils/hp2ps
-       $(INSTALL_DATA)    Makefile  $(BIN_DIST_DIR)/utils/hp2ps/
-       $(INSTALL_PROGRAM) $(C_PROG) $(BIN_DIST_DIR)/utils/hp2ps/
+BINDIST_EXTRAS += $(C_PROG)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index 9c00c09..432c898 100644 (file)
@@ -18,4 +18,7 @@ all::
        cat $(PROG).prl                                >> $(PROG)
        $(EXECUTABLE_FILE) $(PROG)
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
index 9dbbb9b..0e32bbb 100644 (file)
@@ -11,9 +11,7 @@ all::
        cat $(PROG).sh                                 >> $(PROG)
        $(EXECUTABLE_FILE) $(PROG)
 
-binary-dist:
-       $(INSTALL_DIR)             $(BIN_DIST_DIR)/utils/mkdirhier
-       $(INSTALL_DATA)   Makefile $(BIN_DIST_DIR)/utils/mkdirhier/
-       $(INSTALL_SCRIPT) $(PROG)  $(BIN_DIST_DIR)/utils/mkdirhier/
+BINDIST_EXTRAS += $(PROG)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index 78bf6f0..50909c6 100644 (file)
@@ -48,12 +48,8 @@ $(BASH_INSTALLERS): install.bash.%:
        cat $*.bash      >> $(bindir)/$*
        $(EXECUTABLE_FILE)  $(bindir)/$*
 
-binary-dist:
-       $(INSTALL_DIR)                                   $(BIN_DIST_DIR)/utils/parallel
-       $(INSTALL_DATA) Makefile                         $(BIN_DIST_DIR)/utils/parallel/
-ifeq "$(INSTALL_PARALLEL_SCRIPTS)" "YES"
-       $(INSTALL_DATA) $(addsuffix .pl,$(PERL_PROGS))   $(BIN_DIST_DIR)/utils/parallel/
-       $(INSTALL_DATA) $(addsuffix .bash,$(BASH_PROGS)) $(BIN_DIST_DIR)/utils/parallel/
-endif
+BINDIST_EXTRAS += $(addsuffix .pl,$(PERL_PROGS))
+BINDIST_EXTRAS += $(addsuffix .bash,$(BASH_PROGS))
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk
index 5003bf7..e9cb751 100644 (file)
@@ -12,4 +12,7 @@ all::
        cat $(PROG).prl                                >> $(PROG)
        $(EXECUTABLE_FILE) $(PROG)
 
+binary-dist:
+       @:
+
 include $(TOP)/mk/target.mk
index 6323129..1723a08 100644 (file)
@@ -19,9 +19,7 @@ boot :: all
 #
 INSTALL_LIBEXECS += $(C_PROG)
 
-binary-dist:
-       $(INSTALL_DIR)               $(BIN_DIST_DIR)/utils/unlit
-       $(INSTALL_DATA)    Makefile  $(BIN_DIST_DIR)/utils/unlit/
-       $(INSTALL_PROGRAM) $(C_PROG) $(BIN_DIST_DIR)/utils/unlit/
+BINDIST_EXTRAS += $(C_PROG)
+include $(TOP)/mk/bindist.mk
 
 include $(TOP)/mk/target.mk