diff --git a/configure b/configure
index 68ac7952297e4e91d7923b4b094d86ca87a384a9..1087fe07b539552e4cbbb0c45f859ed333abed53 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 160062 .
+# From configure.ac Revision: 160097 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for asterisk 1.6.
 #
@@ -48655,7 +48655,75 @@ _ACEOF
 fi
 
 
-if test "${host_os}" != "linux-gnu" ; then
+{ echo "$as_me:$LINENO: checking for tone_zone_find_by_num in -ltonezone" >&5
+echo $ECHO_N "checking for tone_zone_find_by_num in -ltonezone... $ECHO_C" >&6; }
+if test "${ac_cv_lib_tonezone_tone_zone_find_by_num+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ltonezone  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tone_zone_find_by_num ();
+int
+main ()
+{
+return tone_zone_find_by_num ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_tonezone_tone_zone_find_by_num=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_tonezone_tone_zone_find_by_num=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_tonezone_tone_zone_find_by_num" >&5
+echo "${ECHO_T}$ac_cv_lib_tonezone_tone_zone_find_by_num" >&6; }
+if test $ac_cv_lib_tonezone_tone_zone_find_by_num = yes; then
+  tonezone_does_not_need_lm=yes
+else
+  tonezone_does_not_need_lm=no
+fi
+
+
+if test "${tonezone_does_not_need_lm}" = "no" ; then
   tonezone_extra="-lm"
 fi
 
diff --git a/configure.ac b/configure.ac
index bf4ed43e736c2db27debf0686e337c1105f16ea5..986443023d21e2363281e8887f23a4562151bc10 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1521,7 +1521,9 @@ AST_EXT_LIB_CHECK([TERMCAP], [termcap], [tgetent], [])
 
 AST_EXT_LIB_CHECK([TINFO], [tinfo], [tgetent], [])
 
-if test "${host_os}" != "linux-gnu" ; then
+AC_CHECK_LIB([tonezone], [tone_zone_find_by_num], tonezone_does_not_need_lm=yes, tonezone_does_not_need_lm=no)
+
+if test "${tonezone_does_not_need_lm}" = "no" ; then
   tonezone_extra="-lm"
 fi