diff options
author | Sergei Trofimovich <siarheit@google.com> | 2016-12-17 20:25:19 +0000 |
---|---|---|
committer | Sergei Trofimovich <siarheit@google.com> | 2016-12-17 22:49:25 +0000 |
commit | 87c3b1d4395c3d4fc7a5272717c48f3f525da959 (patch) | |
tree | b514db2dce2ac164e449428d2b038d48f96ab391 /rules | |
parent | 0af959b1999b48f3b8e6c47184b6f8c80b4c452d (diff) | |
download | haskell-87c3b1d4395c3d4fc7a5272717c48f3f525da959.tar.gz |
fix OpenBSD linkage (wxneeded)
There is two types of options passed directly to 'ld'
(and not to 'gcc' driver):
- CONF_LD_LINKER_OPTS_STAGE$4
- EXTRA_LD_OPTS
This changedoes two things:
- split 'EXTRA_LD_OPTS' into two variables:
- EXTRA_LD_OPTS (accepts 'gcc' wrapper options)
- EXTRA_LD_LINKER_OPTS (accepts raw 'ld' options)
- wraps all LD_LINKER options as '-Wl,' when passed
to 'gcc' driver.
Fixes https://phabricator.haskell.org/D2776
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Diffstat (limited to 'rules')
-rw-r--r-- | rules/build-package-way.mk | 2 | ||||
-rw-r--r-- | rules/distdir-way-opts.mk | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index 905b7f09df..8f61a355eb 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -155,7 +155,7 @@ BINDIST_LIBS += $$($1_$2_GHCI_LIB) endif endif $$($1_$2_GHCI_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) $$($1_$2_LD_SCRIPT) - $$(call cmd,LD) $$(CONF_LD_LINKER_OPTS_STAGE$4) -r $$(if $$($1_$2_LD_SCRIPT),-T $$($1_$2_LD_SCRIPT)) -o $$@ $$(EXTRA_LD_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) + $$(call cmd,LD) $$(CONF_LD_LINKER_OPTS_STAGE$4) -r $$(if $$($1_$2_LD_SCRIPT),-T $$($1_$2_LD_SCRIPT)) -o $$@ $$(EXTRA_LD_LINKER_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES" # Don't bother making ghci libs for bootstrapping packages diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk index 6ae9807944..62a145162e 100644 --- a/rules/distdir-way-opts.mk +++ b/rules/distdir-way-opts.mk @@ -196,14 +196,15 @@ $1_$2_$3_GHC_CC_OPTS = \ $$(addprefix -optc, $$($1_$2_$3_ALL_CC_OPTS)) \ $$($1_$2_$3_MOST_HC_OPTS) -# Options for passing to plain ld +# Options for passing to gcc for linking $1_$2_$3_ALL_LD_OPTS = \ $$(WAY_$3_LD_OPTS) \ $$($1_$2_DIST_LD_OPTS) \ $$($1_$2_$3_LD_OPTS) \ $$($1_$2_EXTRA_LD_OPTS) \ $$(EXTRA_LD_OPTS) \ - $$(CONF_LD_LINKER_OPTS_STAGE$4) + $$(foreach o,$$(EXTRA_LD_LINKER_OPTS),-optl-Wl$$(comma)$$o) \ + $$(foreach o,$$(CONF_LD_LINKER_OPTS_STAGE$4),-optl-Wl$$(comma)$$o) # Options for passing to GHC when we use it for linking $1_$2_$3_GHC_LD_OPTS = \ |