From eba93774c3ce2f151e7c72f6d068b753f24dbcfa Mon Sep 17 00:00:00 2001
From: Thomas Miedema <thomasmiedema@gmail.com>
Date: Wed, 15 Jun 2016 14:56:46 +0200
Subject: [PATCH] Build system: build unlit twice

See Note [Why build certain utils twice?] in utils/ghc-pkg/ghc.mk
---
 utils/ghc-pkg/ghc.mk |  7 ++++++-
 utils/unlit/ghc.mk   | 10 +++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/utils/ghc-pkg/ghc.mk b/utils/ghc-pkg/ghc.mk
index f7d97de..410de72 100644
--- a/utils/ghc-pkg/ghc.mk
+++ b/utils/ghc-pkg/ghc.mk
@@ -27,7 +27,7 @@ utils/ghc-pkg_PACKAGE = ghc-pkg
 # Note [Why build certain utils twice?]
 #
 # We build certain utils twice: once with stage0, and once with stage1.
-# Examples are ghc-pkg and hsc2hs.
+# Examples are ghc-pkg, hsc2hs and unlit.
 #
 # These tools are needed during the bootstrapping process, so we have to use
 # stage0 to build them at first (stage1 doesn't exist yet). (side note: they're
@@ -38,6 +38,11 @@ utils/ghc-pkg_PACKAGE = ghc-pkg
 # dynamically linked. But the stage0 copies are either statically linked, or
 # linked against libraries on the build machine.
 #
+# Another reason why we can't install the stage0 copies is that they are
+# built to run on the build(=host) platform, but when installing a
+# "cross-compiled stage2 compiler" we need copies that run on the target
+# platform.
+#
 # Therefore we build fresh copies, using the stage1 compiler, and install them
 # when you run 'make install'. They are not used for any other purpose.
 
diff --git a/utils/unlit/ghc.mk b/utils/unlit/ghc.mk
index e947989..6805c4e 100644
--- a/utils/unlit/ghc.mk
+++ b/utils/unlit/ghc.mk
@@ -13,8 +13,16 @@
 utils/unlit_dist_C_SRCS  = unlit.c
 utils/unlit_dist_PROGNAME = unlit
 utils/unlit_dist_TOPDIR  = YES
-utils/unlit_dist_INSTALL = YES
+utils/unlit_dist_INSTALL = NO
 utils/unlit_dist_INSTALL_INPLACE = YES
 
 $(eval $(call build-prog,utils/unlit,dist,0))
 
+utils/unlit_dist-install_C_SRCS  = unlit.c
+utils/unlit_dist-install_PROGNAME = unlit
+utils/unlit_dist-install_TOPDIR  = YES
+utils/unlit_dist-install_INSTALL = YES
+utils/unlit_dist-install_INSTALL_INPLACE = NO
+
+# See Note [Why build certain utils twice?].
+$(eval $(call build-prog,utils/unlit,dist-install,1))
