diff options
author | Ben Gamari <ben@smart-cactus.org> | 2022-06-08 19:22:02 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-06-15 20:34:16 -0400 |
commit | bde65ea90ed61696eefc93c83efddf7af68d413e (patch) | |
tree | 14a02511335b0979434655e6d8577284d60985c0 | |
parent | e128b7b8a139a1b952aa409811f181572f5b607b (diff) | |
download | haskell-bde65ea90ed61696eefc93c83efddf7af68d413e.tar.gz |
configure: Don't attempt to override linker on Darwin
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.m4 | 9 |
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]) |