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