summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-06-08 19:22:02 -0400
committerBen Gamari <ben@smart-cactus.org>2022-06-08 19:28:25 -0400
commit4737cb3a164c14e2c0287c2b7f02e16c12e6dce5 (patch)
tree4e153e7d1f4f67928e0f7c1927ebb414b72c9c3f
parenta1651a3afab9b195440436432385d839abb7d389 (diff)
downloadhaskell-wip/T21712.tar.gz
configure: Don't attempt to override linker on Darwinwip/T21712
Configure's --enable-ld-override functionality is intended to ensure that we don't rely on ld.bfd, which tends to be slow and buggy, on Linux and Windows. However, on Darwin the lack of sensible package management makes it extremely easy for users to have awkward mixtures of toolchain components from, e.g., XCode, the Apple Command-Line Tools package, and homebrew. This leads to extremely confusing problems like #21712. Here we avoid this by simply giving up on linker selection on Darwin altogether. This isn't so bad since the Apple ld64 linker has decent performance and AFAICT fairly reliable. Closes #21712.
-rw-r--r--m4/find_ld.m49
1 files changed, 8 insertions, 1 deletions
diff --git a/m4/find_ld.m4 b/m4/find_ld.m4
index 3d4443be54..396bd936f9 100644
--- a/m4/find_ld.m4
+++ b/m4/find_ld.m4
@@ -61,7 +61,14 @@ AC_DEFUN([FIND_LD],[
AC_CHECK_TARGET_TOOL([LD], [ld])
}
- if test "x$enable_ld_override" = "xyes"; then
+ if test "$ghc_host_os" = "darwin" ; then
+ dnl N.B. Don't even try to find a more efficient linker on Darwin where
+ dnl broken setups (e.g. unholy mixtures of Homebrew and the native
+ dnl toolchain) are far too easy to come across.
+ dnl
+ dnl See #21712.
+ AC_CHECK_TARGET_TOOL([LD], [ld])
+ elif test "x$enable_ld_override" = "xyes"; then
find_ld
else
AC_CHECK_TARGET_TOOL([LD], [ld])