diff --git a/MagickCore/version.h b/MagickCore/version.h
index 4be08e7..afa8525 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,7 +27,7 @@
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2013 ImageMagick Studio LLC"
-#define MagickSVNRevision  "12786:12797M"
+#define MagickSVNRevision  "12801:12802M"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  1,0,0
@@ -39,7 +39,7 @@
 #define MagickppLibAddendum  "-0"
 #define MagickppLibInterface  2
 #define MagickppLibMinInterface  2
-#define MagickReleaseDate  "2013-07-29"
+#define MagickReleaseDate  "2013-07-30"
 #define MagickChangeDate   "20120427"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #define MagickFeatures "DPC HDRI OpenMP"
diff --git a/Makefile.in b/Makefile.in
index 7597bbe..90083c1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -343,9 +343,8 @@
 	$(top_srcdir)/m4/ld-version-script.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/m4/magick_check_pthread_lib.m4 \
-	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
diff --git a/aclocal.m4 b/aclocal.m4
index bbfffa3..9ae8dce 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1266,5 +1266,4 @@
 m4_include([m4/ltsugar.m4])
 m4_include([m4/ltversion.m4])
 m4_include([m4/lt~obsolete.m4])
-m4_include([m4/magick_check_pthread_lib.m4])
 m4_include([m4/pkg.m4])
diff --git a/configure b/configure
index 1f1fe06..a2e29e9 100755
--- a/configure
+++ b/configure
@@ -865,7 +865,6 @@
 UMEM_LIBS
 HasUMEM_FALSE
 HasUMEM_TRUE
-THREAD_LIBS
 GOMP_LIBS
 WITH_MAGICK_PLUS_PLUS_FALSE
 WITH_MAGICK_PLUS_PLUS_TRUE
@@ -928,6 +927,7 @@
 CL_LIBS
 CL_CFLAGS
 OPENMP_CFLAGS
+THREAD_LIBS
 PTHREAD_CFLAGS
 PTHREAD_LIBS
 PTHREAD_CC
@@ -3686,7 +3686,7 @@
 
 MAGICK_VERSION=7.0.0-0
 
-MAGICK_SVN_REVISION=12786:12797M
+MAGICK_SVN_REVISION=12801:12802M
 
 
 # Substitute library versioning
@@ -9119,6 +9119,9 @@
 
 #
 # Enable support for threads
+#
+# Find Posix threads library
+#
 
 # Check whether --with-threads was given.
 if test "${with_threads+set}" = set; then :
@@ -9128,6 +9131,7 @@
 fi
 
 
+THREAD_LIBS=''
 have_threads=no
 if test "$with_threads" != 'no'; then
 
@@ -9546,6 +9550,7 @@
         DEF_THREAD="$PTHREAD_CFLAGS"
         CFLAGS="$CFLAGS $DEF_THREAD"
         CXXFLAGS="$CXXFLAGS $DEF_THREAD"
+	THREAD_LIBS="$PTHREAD_LIBS"
         if test "$CC" != "$PTHREAD_CC"; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Replacing compiler $CC with compiler $PTHREAD_CC to support pthreads." >&5
 $as_echo "$as_me: WARNING: Replacing compiler $CC with compiler $PTHREAD_CC to support pthreads." >&2;}
@@ -9556,6 +9561,8 @@
 
     fi
 fi
+LIBS="$LIBS $THREAD_LIBS"
+
 
 # Enable support for OpenMP
 if test "$have_threads" != 'yes'; then
@@ -26279,144 +26286,6 @@
 fi
 
 
-#
-# Find Posix threads library
-#
-THREAD_LIBS=''
-if test "$with_threads" != 'no' && test "$have_threads" = 'yes'; then
-
-    if test "x$PTHREAD_LIBS" = "x"; then
-    case "${host_cpu}-${host_os}" in
-      *-freebsd*)
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-magick_pthread_lib_ok=no
-
-LIB=-lc_r
-save_LIBS="$LIBS"
-LIBS="$LIBS $LIB"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library $LIB" >&5
-$as_echo_n "checking for the pthreads library $LIB... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-int
-main ()
-{
-  pthread_t th;
-  pthread_join(th, 0);
-  pthread_attr_init(0);
-  pthread_cleanup_push(0, 0);
-  pthread_create(0,0,0,0);
-  pthread_cleanup_pop(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  magick_pthread_lib_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${magick_pthread_lib_ok}" >&5
-$as_echo "${magick_pthread_lib_ok}" >&6; }
-if test "$magick_pthread_lib_ok" = yes
-then
-  PTHREAD_LIBS=-lc_r
-  :
-else
-
-  :
-fi
-
-LIBS="$save_LIBS"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- ;;
-    esac
-    fi
-
-    for lib in pthread pthreads; do
-        if test "x$PTHREAD_LIBS" = "x"; then
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-magick_pthread_lib_ok=no
-
-LIB=-l$lib
-save_LIBS="$LIBS"
-LIBS="$LIBS $LIB"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library $LIB" >&5
-$as_echo_n "checking for the pthreads library $LIB... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <pthread.h>
-int
-main ()
-{
-  pthread_t th;
-  pthread_join(th, 0);
-  pthread_attr_init(0);
-  pthread_cleanup_push(0, 0);
-  pthread_create(0,0,0,0);
-  pthread_cleanup_pop(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  magick_pthread_lib_ok=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${magick_pthread_lib_ok}" >&5
-$as_echo "${magick_pthread_lib_ok}" >&6; }
-if test "$magick_pthread_lib_ok" = yes
-then
-  PTHREAD_LIBS=-l$lib
-  :
-else
-
-  :
-fi
-
-LIBS="$save_LIBS"
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-        fi
-    done
-
-    THREAD_LIBS="$PTHREAD_LIBS"
-    LIBS="$LIBS $THREAD_LIBS"
-fi
 
 
 #
diff --git a/configure.ac b/configure.ac
index fdf1abc..18ccbbe 100755
--- a/configure.ac
+++ b/configure.ac
@@ -472,11 +472,15 @@
 
 #
 # Enable support for threads
+#
+# Find Posix threads library
+#
 AC_ARG_WITH([threads],
     [AC_HELP_STRING([--without-threads], [disable threads support])],
     [with_threads=$withval],
     [with_threads='yes'])
 
+THREAD_LIBS=''
 have_threads=no
 if test "$with_threads" != 'no'; then
     AX_PTHREAD()
@@ -485,6 +489,7 @@
         DEF_THREAD="$PTHREAD_CFLAGS"
         CFLAGS="$CFLAGS $DEF_THREAD"
         CXXFLAGS="$CXXFLAGS $DEF_THREAD"
+	THREAD_LIBS="$PTHREAD_LIBS"
         if test "$CC" != "$PTHREAD_CC"; then
             AC_MSG_WARN([Replacing compiler $CC with compiler $PTHREAD_CC to support pthreads.])
             CC="$PTHREAD_CC"
@@ -492,6 +497,8 @@
         AC_DEFINE(THREAD_SUPPORT,1,[Define if you have POSIX threads libraries and header files.])
     fi
 fi
+LIBS="$LIBS $THREAD_LIBS"
+AC_SUBST(THREAD_LIBS)
 
 # Enable support for OpenMP
 if test "$have_threads" != 'yes'; then
@@ -1400,29 +1407,7 @@
 fi
 AC_SUBST(GOMP_LIBS)
 
-#
-# Find Posix threads library
-#
-THREAD_LIBS=''
-if test "$with_threads" != 'no' && test "$have_threads" = 'yes'; then
 
-    if test "x$PTHREAD_LIBS" = "x"; then
-    case "${host_cpu}-${host_os}" in
-      *-freebsd*)
-        MAGICK_CHECK_PTHREAD_LIB(c_r,PTHREAD_LIBS=-lc_r) ;;
-    esac
-    fi
-
-    for lib in pthread pthreads; do
-        if test "x$PTHREAD_LIBS" = "x"; then
-            MAGICK_CHECK_PTHREAD_LIB([$lib],[PTHREAD_LIBS=-l$lib])
-        fi
-    done
-
-    THREAD_LIBS="$PTHREAD_LIBS"
-    LIBS="$LIBS $THREAD_LIBS"
-fi
-AC_SUBST(THREAD_LIBS)
 
 #
 # Check for umem.
