summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2021-07-25 16:44:35 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-09-23 16:00:17 -0400
commitf48d747dd647111b2e78679eaf572006908a7a5a (patch)
tree3e3d611d32cd23422890b05c3d96936eea91f5c6 /m4
parentbe11120f56ebe7fa28bc362056733b35ae932e1e (diff)
downloadhaskell-f48d747dd647111b2e78679eaf572006908a7a5a.tar.gz
configure: Move nm search logic to new file
Diffstat (limited to 'm4')
-rw-r--r--m4/fp_find_nm.m440
1 files changed, 40 insertions, 0 deletions
diff --git a/m4/fp_find_nm.m4 b/m4/fp_find_nm.m4
new file mode 100644
index 0000000000..f3a75440eb
--- /dev/null
+++ b/m4/fp_find_nm.m4
@@ -0,0 +1,40 @@
+# FP_FIND_NM
+# ---------------------
+# Find nm and verify that it works.
+AC_DEFUN([FP_FIND_NM],
+[
+ if test "$HostOS" != "mingw32"; then
+ AC_CHECK_TARGET_TOOL([NM], [nm])
+ if test "$NM" = ":"; then
+ AC_MSG_ERROR([cannot find nm in your PATH])
+ fi
+ fi
+ NmCmd="$NM"
+ AC_SUBST([NmCmd])
+
+ if test "$TargetOS_CPP" = "darwin"
+ then
+ AC_MSG_CHECKING(whether nm program is broken)
+ # Some versions of Xcode ship a broken version of `nm`. Detect and work
+ # around this issue. See : https://gitlab.haskell.org/ghc/ghc/issues/11744
+ nmver=$(${NM} --version | grep version | sed 's/ //g')
+ case "$nmver" in
+ LLVMversion7.3.0|LLVMversion7.3.1)
+ AC_MSG_RESULT(yes)
+ echo "The detected nm program is broken."
+ echo
+ echo "See: https://gitlab.haskell.org/ghc/ghc/issues/11744"
+ echo
+ echo "Try re-running configure with:"
+ echo
+ echo ' NM=$(xcrun --find nm-classic) ./configure'
+ echo
+ exit 1
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ ;;
+ esac
+ fi
+])
+