b032d48
On ARM, we want to make sure that GHC uses the gold linker.
b032d48
b032d48
In order to achieve that, we need to get `-fuse-ld=gold` into
b032d48
SettingsCCompilerLinkFlags in the settings.
b032d48
b032d48
This field is filled with only CONF_GCC_LINKER_OPTS_STAGE2. So we want that
b032d48
flag to show up there.
b032d48
b032d48
But this variable is used in a few other cases (LDFLAGS, options to hsc2hs)
b032d48
where -fuse-ld=gold caused problems.
b032d48
(These problems were not investigated. Maybe _they_ could be solved?)
b032d48
b032d48
So as a work-around we remove any other use of CONF_GCC_LINKER_OPTS_STAGE2.
b032d48
b032d48
b032d48
Index: ghc-7.8.3.20141119/libffi/ghc.mk
b032d48
===================================================================
b032d48
--- ghc-7.8.3.20141119.orig/libffi/ghc.mk	2014-04-07 20:26:08.000000000 +0200
b032d48
+++ ghc-7.8.3.20141119/libffi/ghc.mk	2014-12-08 18:57:03.392339809 +0100
b032d48
@@ -88,7 +88,7 @@
b032d48
 	    NM=$(NM) \
b032d48
 	    RANLIB=$(REAL_RANLIB_CMD) \
b032d48
         CFLAGS="$(SRC_CC_OPTS) $(CONF_CC_OPTS_STAGE1) -w" \
b032d48
-        LDFLAGS="$(SRC_LD_OPTS) $(CONF_GCC_LINKER_OPTS_STAGE1) -w" \
b032d48
+        LDFLAGS="$(SRC_LD_OPTS) -w" \
b032d48
         "$(SHELL)" ./configure \
b032d48
 	          --prefix=$(TOP)/libffi/build/inst \
b032d48
 	          --libdir=$(TOP)/libffi/build/inst/lib \
b032d48
Index: ghc-7.8.3.20141119/mk/config.mk.in
b032d48
===================================================================
b032d48
--- ghc-7.8.3.20141119.orig/mk/config.mk.in	2014-12-08 18:49:28.215171926 +0100
b032d48
+++ ghc-7.8.3.20141119/mk/config.mk.in	2014-12-08 18:57:20.637055726 +0100
b032d48
@@ -570,7 +570,6 @@
b032d48
 # $1 = stage
b032d48
 SRC_HSC2HS_OPTS_STAGE$1 += $$(addprefix --cflag=,$$(filter-out -O,$$(SRC_CC_OPTS) $$(CONF_CC_OPTS_STAGE$1)))
b032d48
 SRC_HSC2HS_OPTS_STAGE$1 += $$(addprefix --cflag=,$$(CONF_CPP_OPTS_STAGE$1))
b032d48
-SRC_HSC2HS_OPTS_STAGE$1 += $$(addprefix --lflag=,$$(CONF_GCC_LINKER_OPTS_STAGE$1))
b032d48
 endef
b032d48
 $(eval $(call set_stage_HSC2HS_OPTS,0))
b032d48
 $(eval $(call set_stage_HSC2HS_OPTS,1))
b032d48
Index: ghc-7.8.3.20141119/rules/build-package-data.mk
b032d48
===================================================================
b032d48
--- ghc-7.8.3.20141119.orig/rules/build-package-data.mk	2014-04-14 14:38:12.000000000 +0200
b032d48
+++ ghc-7.8.3.20141119/rules/build-package-data.mk	2014-12-08 18:57:49.366250332 +0100
b032d48
@@ -50,7 +50,7 @@
b032d48
 # for a feature it may not generate warning-free C code, and thus may
b032d48
 # think that the feature doesn't exist if -Werror is on.
b032d48
 $1_$2_CONFIGURE_CFLAGS = $$(filter-out -Werror,$$(SRC_CC_OPTS)) $$(CONF_CC_OPTS_STAGE$3) $$($1_CC_OPTS) $$($1_$2_CC_OPTS) $$(SRC_CC_WARNING_OPTS)
b032d48
-$1_$2_CONFIGURE_LDFLAGS = $$(SRC_LD_OPTS) $$(CONF_GCC_LINKER_OPTS_STAGE$3) $$($1_LD_OPTS) $$($1_$2_LD_OPTS)
b032d48
+$1_$2_CONFIGURE_LDFLAGS = $$(SRC_LD_OPTS) $$($1_LD_OPTS) $$($1_$2_LD_OPTS)
b032d48
 $1_$2_CONFIGURE_CPPFLAGS = $$(SRC_CPP_OPTS) $$(CONF_CPP_OPTS_STAGE$3) $$($1_CPP_OPTS) $$($1_$2_CPP_OPTS)
b032d48
 
b032d48
 $1_$2_CONFIGURE_OPTS += --configure-option=CFLAGS="$$($1_$2_CONFIGURE_CFLAGS)"
b032d48
Index: ghc-7.8.3.20141119/rules/distdir-opts.mk
b032d48
===================================================================
b032d48
--- ghc-7.8.3.20141119.orig/rules/distdir-opts.mk	2014-04-07 20:26:08.000000000 +0200
b032d48
+++ ghc-7.8.3.20141119/rules/distdir-opts.mk	2014-12-08 18:58:18.435461083 +0100
b032d48
@@ -64,7 +64,6 @@
b032d48
 endif
b032d48
 
b032d48
 $1_$2_DIST_LD_OPTS = \
b032d48
- $$(CONF_GCC_LINKER_OPTS_STAGE$3) \
b032d48
  $$(SRC_LD_OPTS) \
b032d48
  $$($1_LD_OPTS) \
b032d48
  $$($1_$2_LD_OPTS) \
b032d48
Index: ghc-7.8.3.20141119/utils/hsc2hs/ghc.mk
b032d48
===================================================================
b032d48
--- ghc-7.8.3.20141119.orig/utils/hsc2hs/ghc.mk	2014-04-07 20:26:15.000000000 +0200
b032d48
+++ ghc-7.8.3.20141119/utils/hsc2hs/ghc.mk	2014-12-08 18:57:07.848524715 +0100
b032d48
@@ -27,7 +27,7 @@
b032d48
 # system uses it for all stages and passes the right options for each stage
b032d48
 # on the command line
b032d48
 define utils/hsc2hs_dist-install_SHELL_WRAPPER_EXTRA
b032d48
-echo 'HSC2HS_EXTRA="$(addprefix --cflag=,$(CONF_CC_OPTS_STAGE1)) $(addprefix --lflag=,$(CONF_GCC_LINKER_OPTS_STAGE1))"' >> "$(WRAPPER)"
b032d48
+echo 'HSC2HS_EXTRA="$(addprefix --cflag=,$(CONF_CC_OPTS_STAGE1))"' >> "$(WRAPPER)"
b032d48
 endef
b032d48
 
b032d48
 ifneq "$(BINDIST)" "YES"