summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/configure.in36
1 files changed, 29 insertions, 7 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 67cec38109..ce3a430f15 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -702,6 +702,10 @@ UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
AC_MSG_CHECKING(uname -p)
AC_MSG_RESULT(${UNAME_P})
+UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
+AC_MSG_CHECKING(uname -i)
+AC_MSG_RESULT(${UNAME_I})
+
dnl Add #include for broken IRIX header files
case "$host_os" in
*irix6*)
@@ -1401,15 +1405,33 @@ LIBS="$save_LIBS"
# any of them.
AC_MSG_CHECKING([for libunwind])
save_LIBS=$LIBS
-if test x"$UNAME_P" = xunknown ; then
- # This probably won't link without the platform-specific libunwind.
- LIBS="$LIBS -lunwind"
-else
- # Add the platform-specific libunwind module. uname -p seems the most
- # plausible option and works for ia64, where libunwind is most useful.
- LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
+
+UNWIND_ARCH="unknown"
+if test x"$UNAME_I" != x"unknown"; then
+ UNWIND_ARCH="$UNAME_I"
+elif test x"$UNAME_M" != x"unknown"; then
+ UNWIND_ARCH="$UNAME_M"
+elif test x"$UNAME_P" != x"unknown"; then
+ UNWIND_ARCH="$UNAME_P"
fi
+case "$UNWIND_ARCH" in
+ unknown)
+ # This probably won't link without
+ # the platform-specific libunwind.
+ LIBS="$LIBS -lunwind"
+ ;;
+ i386|i586|i686)
+ # Add the platform-specific libunwind module.
+ LIBS="$LIBS -lunwind -lunwind-x86"
+ ;;
+ *)
+ # Add the platform-specific libunwind module.
+ # based on uname -i, uname -m or uname -p
+ LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
+ ;;
+esac
+
AC_TRY_LINK(
[
#ifdef HAVE_LIBUNWIND_H