diff --git a/Makefile b/Makefile
index 6f38c13cf77936998506272044f460eab8cf2b8f..a5936f488feabd2a6236be5ebd59931fd0559c27 100644
--- a/Makefile
+++ b/Makefile
@@ -238,8 +238,6 @@ install-docs ::
 #	binary-dist is a GHC addition for binary distributions
 # 
 
-BIN_DIST_TARBALL=ghc-$(ProjectVersion)-$(TARGETPLATFORM).tar.bz2
-
 binary-dist::
 	-rm -rf $(BIN_DIST_DIR)
 	-$(RM) $(BIN_DIST_DIR).tar.gz
@@ -564,6 +562,9 @@ MAINTAINER_CLEAN_FILES += VERSION
 extraclean::
 	$(RM) -rf autom4te.cache
 
+clean distclean ::
+	$(MAKE) -C bindisttest $@
+
 # -----------------------------------------------------------------------------
 
 # Turn off target.mk's rules for 'all', 'boot' and 'install'.
diff --git a/bindisttest/HelloWorld.hs b/bindisttest/HelloWorld.hs
new file mode 100644
index 0000000000000000000000000000000000000000..56e1e89994cdad42dd37b7a5f73dfafcab75fbc5
--- /dev/null
+++ b/bindisttest/HelloWorld.hs
@@ -0,0 +1,5 @@
+
+module Main (main) where
+
+main :: IO ()
+main = putStr "Hello world!"
diff --git a/bindisttest/Makefile b/bindisttest/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..d29c3d8b7ae67c89486c7cd01057ebf38a931a82
--- /dev/null
+++ b/bindisttest/Makefile
@@ -0,0 +1,32 @@
+
+.PHONY: default_target
+
+default_target: all
+
+# Ideally we'd just include something to give us variables
+# for paths and arguments to tools etc, and those set in mk/build.mk.
+TOP=..
+include $(TOP)/mk/boilerplate.mk
+
+INST_DIR = $(FPTOOLS_TOP_ABS)/bindisttest/installed
+
+all:
+	$(RM) -rf installed
+	$(RM) -rf ghc*
+	$(RM) HelloWorld HelloWorld.o HelloWorld.hi output
+	$(TAR) -jxf $(BIN_DIST_TARBALL)
+	cd $(BIN_DIST_NAME) && ./configure --prefix=$(INST_DIR)
+	cd $(BIN_DIST_NAME) && make install
+	$(INST_DIR)/bin/ghc --make HelloWorld
+	./HelloWorld > output
+	$(CONTEXT_DIFF) output expected_output
+
+clean distclean:
+	$(RM) -rf installed
+	$(RM) -rf ghc*
+	$(RM) HelloWorld HelloWorld.o HelloWorld.hi output
+
+# Ignore a load of other standard targets
+install install-docs doc:
+	@:
+
diff --git a/bindisttest/expected_output b/bindisttest/expected_output
new file mode 100644
index 0000000000000000000000000000000000000000..6769dd60bdf536a83c9353272157893043e9f7d0
--- /dev/null
+++ b/bindisttest/expected_output
@@ -0,0 +1 @@
+Hello world!
\ No newline at end of file
diff --git a/mk/config.mk.in b/mk/config.mk.in
index 0feecbd7f76c23796379a2596309a7c5204372b8..741abd3c9cce1e28eba217773b63fe52bfae2ff3 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -507,6 +507,7 @@ FPTOOLS_TOP_ABS_PLATFORM = @hardtop_plat@
 BIN_DIST_NAME=ghc-$(ProjectVersion)
 BIN_DIST_TOPDIR=$(FPTOOLS_TOP_ABS)
 BIN_DIST_DIR=$(BIN_DIST_TOPDIR)/$(BIN_DIST_NAME)
+BIN_DIST_TARBALL=$(BIN_DIST_TOPDIR)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
 
 #
 # Installation directories, we don't use half of these,