summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2008-08-10 00:50:16 +0000
committerIan Lynagh <igloo@earth.li>2008-08-10 00:50:16 +0000
commit2de31b61d0a963803eb5632c9659c6093d74f345 (patch)
treef05ed698b42976a28f1db324033c4d9694e733bc
parent0f72a4c69215d1f81760aa0000ebbbfb2ac73303 (diff)
downloadhaskell-2de31b61d0a963803eb5632c9659c6093d74f345.tar.gz
bindists are now some way towards working
-rw-r--r--Makefile163
-rw-r--r--compiler/Makefile6
-rw-r--r--docs/Makefile15
-rw-r--r--docs/docbook-cheat-sheet/Makefile3
-rw-r--r--docs/ext-core/Makefile3
-rw-r--r--docs/man/Makefile8
-rw-r--r--docs/storage-mgt/Makefile3
-rw-r--r--docs/users_guide/Makefile3
-rw-r--r--driver/Makefile6
-rw-r--r--driver/ghc/Makefile4
-rw-r--r--driver/ghci/Makefile4
-rw-r--r--driver/mangler/Makefile6
-rw-r--r--driver/split/Makefile6
-rw-r--r--gmp/Makefile22
-rw-r--r--includes/Makefile6
-rw-r--r--libraries/Makefile29
-rw-r--r--libraries/Makefile.local3
-rw-r--r--mk/cabal.mk3
-rw-r--r--mk/config.mk.in9
-rw-r--r--mk/install.mk17
-rw-r--r--rts/Makefile15
-rw-r--r--utils/Makefile15
-rw-r--r--utils/genapply/Makefile3
-rw-r--r--utils/genprimopcode/Makefile3
-rw-r--r--utils/hp2ps/Makefile6
-rw-r--r--utils/mkdependC/Makefile3
-rw-r--r--utils/mkdirhier/Makefile6
-rw-r--r--utils/parallel/Makefile10
-rw-r--r--utils/runstdtest/Makefile3
-rw-r--r--utils/unlit/Makefile6
30 files changed, 181 insertions, 208 deletions
diff --git a/Makefile b/Makefile
index edad014a9d..1f9b653bac 100644
--- 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)
diff --git a/compiler/Makefile b/compiler/Makefile
index 5598be6590..1dbb2d343f 100644
--- a/compiler/Makefile
+++ b/compiler/Makefile
@@ -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)
diff --git a/docs/Makefile b/docs/Makefile
index fc6017381c..9b51adb20d 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -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
diff --git a/docs/docbook-cheat-sheet/Makefile b/docs/docbook-cheat-sheet/Makefile
index 95896d1f0c..14e0c3c2d2 100644
--- a/docs/docbook-cheat-sheet/Makefile
+++ b/docs/docbook-cheat-sheet/Makefile
@@ -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
diff --git a/docs/ext-core/Makefile b/docs/ext-core/Makefile
index 561b71bd04..10f3183731 100644
--- a/docs/ext-core/Makefile
+++ b/docs/ext-core/Makefile
@@ -28,6 +28,9 @@ distclean: clean
maintainer-clean: distclean
+binary-dist:
+ @:
+
# dummy targets
all:
boot:
diff --git a/docs/man/Makefile b/docs/man/Makefile
index 7fa112d82c..71644ca28c 100644
--- a/docs/man/Makefile
+++ b/docs/man/Makefile
@@ -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
diff --git a/docs/storage-mgt/Makefile b/docs/storage-mgt/Makefile
index 871766d4fc..9ef54adced 100644
--- a/docs/storage-mgt/Makefile
+++ b/docs/storage-mgt/Makefile
@@ -25,6 +25,9 @@ distclean: clean
maintainer-clean: distclean
+binary-dist:
+ @:
+
# dummy targets
all:
boot:
diff --git a/docs/users_guide/Makefile b/docs/users_guide/Makefile
index f0a31fb705..1a370d5331 100644
--- a/docs/users_guide/Makefile
+++ b/docs/users_guide/Makefile
@@ -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
diff --git a/driver/Makefile b/driver/Makefile
index e81b1ea1fa..5825356058 100644
--- a/driver/Makefile
+++ b/driver/Makefile
@@ -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
diff --git a/driver/ghc/Makefile b/driver/ghc/Makefile
index 66a8d2ba10..fc9bb4ad3a 100644
--- a/driver/ghc/Makefile
+++ b/driver/ghc/Makefile
@@ -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
diff --git a/driver/ghci/Makefile b/driver/ghci/Makefile
index 2c118faf2b..94fe452935 100644
--- a/driver/ghci/Makefile
+++ b/driver/ghci/Makefile
@@ -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
diff --git a/driver/mangler/Makefile b/driver/mangler/Makefile
index dfc7c396ba..1242d6c236 100644
--- a/driver/mangler/Makefile
+++ b/driver/mangler/Makefile
@@ -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
diff --git a/driver/split/Makefile b/driver/split/Makefile
index cce7618004..404cb97c4d 100644
--- a/driver/split/Makefile
+++ b/driver/split/Makefile
@@ -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
diff --git a/gmp/Makefile b/gmp/Makefile
index f194f6616b..2a9fdcf6c3 100644
--- a/gmp/Makefile
+++ b/gmp/Makefile
@@ -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
diff --git a/includes/Makefile b/includes/Makefile
index bebe2eb93f..bacf4bdec9 100644
--- a/includes/Makefile
+++ b/includes/Makefile
@@ -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:
diff --git a/libraries/Makefile b/libraries/Makefile
index 5c5d192ada..6cc349b423 100644
--- a/libraries/Makefile
+++ b/libraries/Makefile
@@ -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
diff --git a/libraries/Makefile.local b/libraries/Makefile.local
index 7ca6115db6..0caadcffdc 100644
--- a/libraries/Makefile.local
+++ b/libraries/Makefile.local
@@ -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
+
diff --git a/mk/cabal.mk b/mk/cabal.mk
index 98b985bb97..1ae6cba4b8 100644
--- a/mk/cabal.mk
+++ b/mk/cabal.mk
@@ -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
-
diff --git a/mk/config.mk.in b/mk/config.mk.in
index 839fe29c15..3812475aaf 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -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
diff --git a/mk/install.mk b/mk/install.mk
index dd8dfc4946..41b312c3c5 100644
--- a/mk/install.mk
+++ b/mk/install.mk
@@ -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
diff --git a/rts/Makefile b/rts/Makefile
index 8ca69efc4c..09f5766dd4 100644
--- a/rts/Makefile
+++ b/rts/Makefile
@@ -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
+
diff --git a/utils/Makefile b/utils/Makefile
index a6d39cca5d..6dc6838b34 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -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)/$*
+
diff --git a/utils/genapply/Makefile b/utils/genapply/Makefile
index 64489db1ac..a017547c70 100644
--- a/utils/genapply/Makefile
+++ b/utils/genapply/Makefile
@@ -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
diff --git a/utils/genprimopcode/Makefile b/utils/genprimopcode/Makefile
index 20c409a422..ed011eb0c2 100644
--- a/utils/genprimopcode/Makefile
+++ b/utils/genprimopcode/Makefile
@@ -3,5 +3,8 @@ include $(TOP)/mk/boilerplate.mk
HS_PROG = genprimopcode
+binary-dist:
+ @:
+
include $(TOP)/mk/target.mk
diff --git a/utils/hp2ps/Makefile b/utils/hp2ps/Makefile
index 09c193f1c1..93aa856ffc 100644
--- a/utils/hp2ps/Makefile
+++ b/utils/hp2ps/Makefile
@@ -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
diff --git a/utils/mkdependC/Makefile b/utils/mkdependC/Makefile
index 9c00c09018..432c8981e4 100644
--- a/utils/mkdependC/Makefile
+++ b/utils/mkdependC/Makefile
@@ -18,4 +18,7 @@ all::
cat $(PROG).prl >> $(PROG)
$(EXECUTABLE_FILE) $(PROG)
+binary-dist:
+ @:
+
include $(TOP)/mk/target.mk
diff --git a/utils/mkdirhier/Makefile b/utils/mkdirhier/Makefile
index 9dbbb9b6c1..0e32bbbde4 100644
--- a/utils/mkdirhier/Makefile
+++ b/utils/mkdirhier/Makefile
@@ -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
diff --git a/utils/parallel/Makefile b/utils/parallel/Makefile
index 78bf6f0637..50909c68e1 100644
--- a/utils/parallel/Makefile
+++ b/utils/parallel/Makefile
@@ -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
diff --git a/utils/runstdtest/Makefile b/utils/runstdtest/Makefile
index 5003bf79aa..e9cb75119d 100644
--- a/utils/runstdtest/Makefile
+++ b/utils/runstdtest/Makefile
@@ -12,4 +12,7 @@ all::
cat $(PROG).prl >> $(PROG)
$(EXECUTABLE_FILE) $(PROG)
+binary-dist:
+ @:
+
include $(TOP)/mk/target.mk
diff --git a/utils/unlit/Makefile b/utils/unlit/Makefile
index 6323129511..1723a08e26 100644
--- a/utils/unlit/Makefile
+++ b/utils/unlit/Makefile
@@ -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