summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <bgamari.foss@gmail.com>2017-07-03 19:09:39 -0400
committerBen Gamari <ben@smart-cactus.org>2017-07-03 19:42:21 -0400
commit960918bd1f7e3811845a525ba85bbd390ddf28c8 (patch)
treec2bb07e510e35c883e0987249cade2e56dd7e20a
parenta6f3d1b00e9c37a56cd4db9e519309e94a65d181 (diff)
downloadhaskell-960918bd1f7e3811845a525ba85bbd390ddf28c8.tar.gz
Add -fuse-ld flag to CFLAGS during configure
The decisions made by configure later in the script may depend upon the linker used. Consequently, it is important that configure uses the same linker as GHC will eventually use. For instance, on Nix I found that a program requiring `libpthread` would link fine with only `-lrt` when linked with BFD ld. However, with gold we needed to explicitly provide the `-lpthread` dependency. Presumably the former would happily loaded any `NEEDED` libraries whereas the latter wants them explicitly given. Regardless, since `configure`'s `NEED_PTHREAD_LIB` check didn't use the `-fuse-ld` flag that GHC would eventually use, we inferred the wrong value, resulting in link errors later in the build. Test Plan: Validate Reviewers: austin, hvr Subscribers: rwbarton, thomie, erikd GHC Trac Issues: #13541 Differential Revision: https://phabricator.haskell.org/D3694
-rw-r--r--configure.ac1
-rw-r--r--distrib/configure.ac.in1
2 files changed, 2 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 92d37141ff..c31deba833 100644
--- a/configure.ac
+++ b/configure.ac
@@ -535,6 +535,7 @@ FIND_LD([$target],[GccUseLdOpt])
CONF_GCC_LINKER_OPTS_STAGE1="$CONF_GCC_LINKER_OPTS_STAGE1 $GccUseLdOpt"
CONF_GCC_LINKER_OPTS_STAGE2="$CONF_GCC_LINKER_OPTS_STAGE2 $GccUseLdOpt"
LdCmd="$LD"
+CFLAGS="$CFLAGS $GccUseLdOpt"
AC_SUBST([LdCmd])
dnl ** Which nm to use?
diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
index 53c79e1a2d..ac6af24b94 100644
--- a/distrib/configure.ac.in
+++ b/distrib/configure.ac.in
@@ -121,6 +121,7 @@ FIND_LD([$target],[GccUseLdOpt])
CONF_GCC_LINKER_OPTS_STAGE1="$CONF_GCC_LINKER_OPTS_STAGE1 $GccUseLdOpt"
CONF_GCC_LINKER_OPTS_STAGE2="$CONF_GCC_LINKER_OPTS_STAGE2 $GccUseLdOpt"
LdCmd="$LD"
+CFLAGS="$CFLAGS $GccUseLdOpt"
AC_SUBST([LdCmd])
FP_PROG_LD_IS_GNU