[commit: ghc] wip/angerman/llvmng: Build utilities with the bootstrap compiler when cross compiling (ec2b433)
git at git.haskell.org
git at git.haskell.org
Fri Oct 20 02:57:48 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/angerman/llvmng
Link : http://ghc.haskell.org/trac/ghc/changeset/ec2b433f05fea556989930848bf5290e88983e20/ghc
>---------------------------------------------------------------
commit ec2b433f05fea556989930848bf5290e88983e20
Author: Moritz Angermann <moritz.angermann at gmail.com>
Date: Fri Sep 29 14:45:44 2017 +0800
Build utilities with the bootstrap compiler when cross compiling
Summary:
This should fix Trac #14297. When building a cross compiler, we have rather little use
of utilities that do not run on the host, where the compiler runs. As such we should
build the utilities with the bootstrap (stage 0) compiler rather than witht he
in-tree (stage 1) compiler when CrossCompiling.
This used to results in the utilities we ship in the binary distribution to be built for
the wrong host. This diff tries to rectify the situation and allow the binary distribution
to contain the utilities for the host when CrossCompiling.
Reviewers: bgamari, trofi, hvr, austin
Subscribers: rwbarton, thomie
GHC Trac Issues: #14297
Differential Revision: https://phabricator.haskell.org/D4048
>---------------------------------------------------------------
ec2b433f05fea556989930848bf5290e88983e20
ghc.mk | 15 +++++++++++++--
utils/compare_sizes/ghc.mk | 4 +++-
utils/hpc/ghc.mk | 18 +++++++++++++++++-
utils/hsc2hs | 2 +-
4 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/ghc.mk b/ghc.mk
index c3edc5e..f397f7c 100644
--- a/ghc.mk
+++ b/ghc.mk
@@ -1056,6 +1056,17 @@ ifneq "$(CLEANING)" "YES"
# This rule seems to hold some files open on Windows which prevents
# cleaning, perhaps due to the $(wildcard).
+# when building stage1only (a cross-compiler), we need to put the
+# stage0 compiled ghc-cabal into the binary distribution. As the
+# stage1 compiled ghc-cabal is built for the target, however
+# ghc-cabal is used during 'make install' on the host, when
+# installing the binary distribution.
+ifeq "$(Stage1Only)" "YES"
+DIST_GHC_CABAL=utils/ghc-cabal/dist/build/tmp/ghc-cabal
+else
+DIST_GHC_CABAL=utils/ghc-cabal/dist-install/build/tmp/ghc-cabal
+endif
+
$(eval $(call bindist-list,.,\
LICENSE \
README \
@@ -1067,7 +1078,7 @@ $(eval $(call bindist-list,.,\
Makefile \
mk/config.mk.in \
$(INPLACE_BIN)/mkdirhier \
- utils/ghc-cabal/dist-install/build/tmp/ghc-cabal \
+ $(DIST_GHC_CABAL) \
$(BINDIST_WRAPPERS) \
$(BINDIST_PERL_SOURCES) \
$(BINDIST_LIBS) \
@@ -1127,7 +1138,7 @@ unix-binary-dist-prep:
echo "BUILD_SPHINX_HTML = $(BUILD_SPHINX_HTML)" >> $(BIN_DIST_MK)
echo "BUILD_SPHINX_PDF = $(BUILD_SPHINX_PDF)" >> $(BIN_DIST_MK)
echo "BUILD_MAN = $(BUILD_MAN)" >> $(BIN_DIST_MK)
- echo "override ghc-cabal_INPLACE = utils/ghc-cabal/dist-install/build/tmp/ghc-cabal-bindist" >> $(BIN_DIST_MK)
+ echo "override ghc-cabal_INPLACE = $(DIST_GHC_CABAL)" >> $(BIN_DIST_MK)
echo "UseSystemLibFFI = $(UseSystemLibFFI)" >> $(BIN_DIST_MK)
# See Note [Persist CrossCompiling in binary distributions]
echo "CrossCompiling = $(CrossCompiling)" >> $(BIN_DIST_MK)
diff --git a/utils/compare_sizes/ghc.mk b/utils/compare_sizes/ghc.mk
index d659a5e..1e601a3 100644
--- a/utils/compare_sizes/ghc.mk
+++ b/utils/compare_sizes/ghc.mk
@@ -5,5 +5,7 @@ utils/compare_sizes_MODULES = Main
utils/compare_sizes_dist-install_PROGNAME = compareSizes
utils/compare_sizes_dist-install_INSTALL_INPLACE = NO
+# build compare_sizes only if not Stage1Only or not CrossCompiling.
+ifeq "$(Stage1Only) $(CrossCompiling)" "NO NO"
$(eval $(call build-prog,utils/compare_sizes,dist-install,1))
-
+endif
diff --git a/utils/hpc/ghc.mk b/utils/hpc/ghc.mk
index f70be94..697e795 100644
--- a/utils/hpc/ghc.mk
+++ b/utils/hpc/ghc.mk
@@ -12,10 +12,26 @@
utils/hpc_USES_CABAL = YES
utils/hpc_PACKAGE = hpc-bin
-utils/hpc_dist-install_INSTALL = YES
+
+# built by ghc-stage0
+utils/hpc_dist_INSTALL_INPLACE = NO
+utils/hpc_dist_PROGNAME = hpc
+utils/hpc_dist_SHELL_WRAPPER = YES
+utils/hpc_dist_INSTALL_SHELL_WRAPPER_NAME = hpc
+
+# built by ghc-stage1
utils/hpc_dist-install_INSTALL_INPLACE = YES
utils/hpc_dist-install_PROGNAME = hpc
utils/hpc_dist-install_SHELL_WRAPPER = YES
utils/hpc_dist-install_INSTALL_SHELL_WRAPPER_NAME = hpc
+ifeq "$(Stage1Only)" "YES"
+utils/hpc_dist_INSTALL = YES
+utils/hpc_dist-install_INSTALL = NO
+else
+utils/hpc_dist_INSTALL = NO
+utils/hpc_dist-install_INSTALL = YES
+endif
+
+$(eval $(call build-prog,utils/hpc,dist,0))
$(eval $(call build-prog,utils/hpc,dist-install,1))
diff --git a/utils/hsc2hs b/utils/hsc2hs
index 936b088..94af7d9 160000
--- a/utils/hsc2hs
+++ b/utils/hsc2hs
@@ -1 +1 @@
-Subproject commit 936b0885ee794db83dc8473e17e153936e56d62f
+Subproject commit 94af7d9a27307f40a8b18da0f8e0fd9e9d77e818
More information about the ghc-commits
mailing list