diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h
index 7c6d7c9..4a558ea 100644
--- a/MagickCore/magick-config.h
+++ b/MagickCore/magick-config.h
@@ -1260,6 +1260,11 @@
 /* Define if you have OPENEXR library */
 /* #undef OPENEXR_DELEGATE */
 
+/* Name of package */
+#ifndef MAGICKCORE_PACKAGE
+#define MAGICKCORE_PACKAGE "ImageMagick-7.0.0"
+#endif
+
 /* Define to the address where bug reports for this package should be sent. */
 #ifndef MAGICKCORE_PACKAGE_BUGREPORT
 #define MAGICKCORE_PACKAGE_BUGREPORT "http://www.imagemagick.org"
@@ -1454,6 +1459,11 @@
 #endif
 
 
+/* Version number of package */
+#ifndef MAGICKCORE_VERSION
+#define MAGICKCORE_VERSION "7.0.0"
+#endif
+
 /* Define if you have WEBP library */
 /* #undef WEBP_DELEGATE */
 
diff --git a/MagickCore/version.h b/MagickCore/version.h
index 557c38c..8b6f19e 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,14 +27,14 @@
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2011 ImageMagick Studio LLC"
-#define MagickSVNRevision  "5636"
+#define MagickSVNRevision  "5645"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  7,0,0
 #define MagickLibAddendum  "-0"
 #define MagickLibInterface  7
 #define MagickLibMinInterface  7
-#define MagickReleaseDate  "2011-10-13"
+#define MagickReleaseDate  "2011-10-14"
 #define MagickChangeDate   "20110801"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
diff --git a/Makefile.am b/Makefile.am
index 8843b36..4a0a17d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,8 +17,6 @@
 #  Top-Level Makefile for building ImageMagick.
 #
 
-AUTOMAKE_OPTIONS = 1.11 subdir-objects parallel-tests color-tests dist-zip dist-bzip2 dist-xz foreign
-
 topincludedir = @includedir@/ImageMagick
 
 AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
diff --git a/Makefile.in b/Makefile.in
index 891966a..bade535 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2643,7 +2643,6 @@
 type_include_files = @type_include_files@
 windows_font_dir = @windows_font_dir@
 xml2_config = @xml2_config@
-AUTOMAKE_OPTIONS = 1.11 subdir-objects parallel-tests color-tests dist-zip dist-bzip2 dist-xz foreign
 topincludedir = @includedir@/ImageMagick
 
 # -I$(srcdir) is needed for user that built libltdl with a sub-Automake
diff --git a/config/config.h.in b/config/config.h.in
index bb4f6ee..327362a 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -833,6 +833,9 @@
 /* Define if you have OPENEXR library */
 #undef OPENEXR_DELEGATE
 
+/* Name of package */
+#undef PACKAGE
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
@@ -965,6 +968,9 @@
 #endif
 
 
+/* Version number of package */
+#undef VERSION
+
 /* Define if you have WEBP library */
 #undef WEBP_DELEGATE
 
diff --git a/config/configure.xml b/config/configure.xml
index 849531d..8fa5937 100644
--- a/config/configure.xml
+++ b/config/configure.xml
@@ -10,8 +10,8 @@
   <configure name="VERSION" value="7.0.0"/>
   <configure name="LIB_VERSION" value="0x700"/>
   <configure name="LIB_VERSION_NUMBER" value="7,0,0,0"/>
-  <configure name="SVN_REVISION" value="5636" />
-  <configure name="RELEASE_DATE" value="2011-10-13"/>
+  <configure name="SVN_REVISION" value="5645" />
+  <configure name="RELEASE_DATE" value="2011-10-14"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
diff --git a/configure b/configure
index 8bb64ab..4f30b10 100755
--- a/configure
+++ b/configure
@@ -3584,7 +3584,7 @@
 
 MAGICK_LIBRARY_VERSION_INFO=$MAGICK_LIBRARY_CURRENT:$MAGICK_LIBRARY_REVISION:$MAGICK_LIBRARY_AGE
 
-MAGICK_SVN_REVISION=5636
+MAGICK_SVN_REVISION=5645
 
 
 
@@ -4007,6 +4007,18 @@
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=1;;
+esac
+AM_BACKSLASH='\'
+
 if test "`cd $srcdir && pwd`" != "`pwd`"; then
   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
   # is not polluted with repeated "-I."
@@ -4028,10 +4040,19 @@
 
 
 # Define the identity of the package.
- PACKAGE=$PACKAGE_NAME
- VERSION="${PACKAGE_VERSION}${PACKAGE_VERSION_ADDENDUM}"
+ PACKAGE='ImageMagick-7.0.0'
+ VERSION='7.0.0'
 
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
 # Some tools Automake needs.
 
 ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
@@ -21096,9 +21117,7 @@
 
 fi
 
-# Add configure option --enable-maintainer-mode which enables dependency
-# checking and generation useful to package maintainers.  This is made an
-# option to avoid confusing end users.
+# Don't emit "rebuild rules" for configure, Makefile.ins, etc.
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
@@ -21123,7 +21142,6 @@
 
 
 
-
 # Enable ccmalloc memory debugging support
 # Check whether --enable-ccmalloc was given.
 if test "${enable_ccmalloc+set}" = set; then :
diff --git a/configure.ac b/configure.ac
index 1bfc08b..6b80459 100755
--- a/configure.ac
+++ b/configure.ac
@@ -14,7 +14,7 @@
 #
 #  Copyright (C) 2003 - 2008 GraphicsMagick Group
 
-AC_PREREQ(2.64)
+AC_PREREQ(2.67)
 
 m4_define([magick_major_version], [7])
 m4_define([magick_minor_version], [0])
@@ -124,7 +124,7 @@
 # Ensure that make can run correctly
 AM_SANITY_CHECK
 
-AM_INIT_AUTOMAKE($PACKAGE_NAME,"${PACKAGE_VERSION}${PACKAGE_VERSION_ADDENDUM}", ' ')
+AM_INIT_AUTOMAKE([1.11 color-tests foreign parallel-tests silent-rules subdir-objects dist-zip dist-bzip2 dist-xz])
 
 # Enable support for silent build rules
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
@@ -442,8 +442,8 @@
           exit(!(sizeof(off_t) == 8));
         }])],
         [ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64)
-         AC_MSG_RESULT([yes])],
-        [AC_MSG_RESULT([no])])
+         AC_MSG_NOTICE([yes])],
+        [AC_MSG_NOTICE([no])])
         ;;
     *)
         LFS_CPPFLAGS="$LFS_CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
@@ -606,12 +606,9 @@
     AC_DEFINE(NDEBUG,1,[Turn off assert statements])
 fi
 
-# Add configure option --enable-maintainer-mode which enables dependency
-# checking and generation useful to package maintainers.  This is made an
-# option to avoid confusing end users.
+# Don't emit "rebuild rules" for configure, Makefile.ins, etc.
 AM_MAINTAINER_MODE
 
-
 # Enable ccmalloc memory debugging support
 AC_ARG_ENABLE([ccmalloc],
     [AC_HELP_STRING([--enable-ccmalloc],
@@ -908,22 +905,22 @@
 
 AC_MSG_CHECKING(for signed 8-bit type)
 INT8_T='signed char'
-AC_MSG_RESULT($INT8_T)
+AC_MSG_NOTICE($INT8_T)
 AC_SUBST(INT8_T)
 
 AC_MSG_CHECKING(for unsigned 8-bit type)
 UINT8_T='unsigned char'
-AC_MSG_RESULT($UINT8_T)
+AC_MSG_NOTICE($UINT8_T)
 AC_SUBST(UINT8_T)
 
 AC_MSG_CHECKING(for signed 16-bit type)
 INT16_T='signed short'
-AC_MSG_RESULT($INT16_T)
+AC_MSG_NOTICE($INT16_T)
 AC_SUBST(INT16_T)
 
 AC_MSG_CHECKING(for unsigned 16-bit type)
 UINT16_T='unsigned short'
-AC_MSG_RESULT($UINT16_T)
+AC_MSG_NOTICE($UINT16_T)
 AC_SUBST(UINT16_T)
 
 AC_MSG_CHECKING(for signed 32-bit type)
@@ -936,7 +933,7 @@
   INT32_T='signed long'
   INT32_F='"l"'
 fi
-AC_MSG_RESULT($INT32_T)
+AC_MSG_NOTICE($INT32_T)
 AC_SUBST(INT32_T)
 AC_SUBST(INT32_F)
 
@@ -950,7 +947,7 @@
   UINT32_T='unsigned long'
   UINT32_F='"l"'
 fi
-AC_MSG_RESULT($UINT32_T)
+AC_MSG_NOTICE($UINT32_T)
 AC_SUBST(UINT32_T)
 AC_SUBST(UINT32_F)
 
@@ -969,7 +966,7 @@
     INT64_F='"I64"'
     ;;
 esac
-AC_MSG_RESULT($INT64_T)
+AC_MSG_NOTICE($INT64_T)
 AC_SUBST(INT64_T)
 AC_SUBST(INT64_F)
 
@@ -988,7 +985,7 @@
     UINT64_F='"I64"'
     ;;
 esac
-AC_MSG_RESULT($UINT64_T)
+AC_MSG_NOTICE($UINT64_T)
 AC_SUBST(UINT64_T)
 AC_SUBST(UINT64_F)
 
@@ -1002,7 +999,7 @@
   UINTMAX_T=$UINT32_T
   UINTMAX_F=$UINT32_F
 fi
-AC_MSG_RESULT($UINTMAX_T)
+AC_MSG_NOTICE($UINTMAX_T)
 AC_SUBST(UINTMAX_T)
 AC_SUBST(UINTMAX_F)
 
@@ -1016,22 +1013,22 @@
   UINTPTR_T='unsigned long long'
   UINTPTR_F='"ll"'
 fi
-AC_MSG_RESULT($UINTPTR_T)
+AC_MSG_NOTICE($UINTPTR_T)
 AC_SUBST(UINTPTR_T)
 AC_SUBST(UINTPTR_F)
 
 AC_MSG_CHECKING([whether our compiler supports __func__])
 AC_TRY_COMPILE([],
  [{ const char *func = __func__; return(func != 0 ? 0 : 1); }],
- AC_MSG_RESULT([yes]),
- AC_MSG_RESULT([no])
+ AC_MSG_NOTICE([yes]),
+ AC_MSG_NOTICE([no])
  AC_MSG_CHECKING([whether our compiler supports __FUNCTION__])
  AC_TRY_COMPILE([],
    [{ const char *func = __FUNCTION__; return(func != 0 ? 0 : 1); }],
-   AC_MSG_RESULT([yes])
+   AC_MSG_NOTICE([yes])
    AC_DEFINE(__func__, __FUNCTION__,
      [Define to appropriate substitue if compiler does not have __func__]),
-   AC_MSG_RESULT([no])
+   AC_MSG_NOTICE([no])
    AC_DEFINE(__func__, __FILE__,
      [Define to appropriate substitue if compiler does not have __func__])))
 
@@ -1074,11 +1071,11 @@
       [[#include <time.h>]],
        [[clockid_t clockType = CLOCK_REALTIME;]])],
       [
-        AC_MSG_RESULT(yes)
+        AC_MSG_NOTICE(yes)
       	AC_DEFINE([HAVE_CLOCK_REALTIME],[1],
           [Define to 1 if clock_gettime supports CLOCK_REALTIME.])
       ],
-      AC_MSG_RESULT(no)
+      AC_MSG_NOTICE(no)
     )
   ],
   [
@@ -1135,7 +1132,7 @@
     else
         have_magick_plus_plus='no (failed tests)'
     fi
-    AC_MSG_RESULT([$have_magick_plus_plus])
+    AC_MSG_NOTICE([$have_magick_plus_plus])
     LIBS="$OLIBS"
 fi
 AM_CONDITIONAL(WITH_MAGICK_PLUS_PLUS, test "$have_magick_plus_plus" = 'yes')
@@ -1288,7 +1285,7 @@
 UMEM_LIBS=''
 if test "$with_umem" != 'no'; then
   AC_MSG_CHECKING(for UMEM support )
-  AC_MSG_RESULT()
+  AC_MSG_NOTICE()
   failed=0
   passed=0
   AC_CHECK_HEADER(umem.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -1297,17 +1294,17 @@
   AC_MSG_CHECKING(if umem memory allocation library is complete)
   if test $passed -gt 0; then
     if test $failed -gt 0; then
-      AC_MSG_RESULT(no -- some components failed test)
+      AC_MSG_NOTICE(no -- some components failed test)
       have_umem='no (failed tests)'
     else
       UMEM_LIBS='-lumem'
       LIBS="$UMEM_LIBS $LIBS"
       AC_DEFINE(HasUMEM,1,Define if you have umem memory allocation library)
-      AC_MSG_RESULT(yes)
+      AC_MSG_NOTICE(yes)
       have_umem='yes'
     fi
   else
-    AC_MSG_RESULT(no)
+    AC_MSG_NOTICE(no)
   fi
 fi
 AM_CONDITIONAL(HasUMEM, test "$have_umem" = 'yes')
@@ -1363,9 +1360,9 @@
 have_bzlib='no'
 if test "$with_bzlib" != 'no'; then
     BZLIB_LIBS=''
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for BZLIB])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     found_libbz=0
@@ -1382,17 +1379,17 @@
     AC_MSG_CHECKING(if BZLIB package is complete)
     if test $passed -gt 0; then
       if test $failed -gt 0; then
-        AC_MSG_RESULT(no -- some components failed test)
+        AC_MSG_NOTICE(no -- some components failed test)
         have_bzlib='no (failed tests)'
       else
         BZLIB_LIBS='-lbz2'
         LIBS="$BZLIB_LIBS $LIBS"
         AC_DEFINE(BZLIB_DELEGATE,1,Define if you have the bzip2 library)
-        AC_MSG_RESULT(yes)
+        AC_MSG_NOTICE(yes)
         have_bzlib='yes'
       fi
     else
-      AC_MSG_RESULT(no)
+      AC_MSG_NOTICE(no)
     fi
 fi
 AM_CONDITIONAL(BZLIB_DELEGATE, test "$have_bzlib" = 'yes')
@@ -1407,9 +1404,9 @@
 XT_LIBS=''
 AC_PATH_XTRA
 if test "$no_x" != 'yes'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for X11])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     LDFLAGS="$LDFLAGS $X_LIBS"
     X11_LIBS="$X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
     LIBS="$X11_LIBS $LIBS"
@@ -1468,9 +1465,9 @@
 ZLIB_LIBS=''
 dnl PNG requires zlib so enable zlib check if PNG is requested
 if test "$with_zlib" != 'no' || test "$with_png" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for ZLIB])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     ZLIB_LIBS=''
     failed=0
     passed=0
@@ -1485,17 +1482,17 @@
     AC_MSG_CHECKING([if ZLIB package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_zlib='no (failed tests)'
         else
             ZLIB_LIBS='-lz'
             LIBS="$ZLIB_LIBS $LIBS"
             AC_DEFINE(ZLIB_DELEGATE,1,Define if you have zlib compression library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_zlib='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(ZLIB_DELEGATE, test "$have_zlib" = 'yes')
@@ -1531,9 +1528,9 @@
 AUTOTRACE_LIBS=""
 AUTOTRACE_PKG=""
 if test "x$with_autotrace" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(AUTOTRACE,[autotrace >= 0.31.1], have_autotrace=yes, have_autotrace=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_autotrace" = 'yes'; then
@@ -1566,9 +1563,9 @@
 have_dps='no'
 DPS_LIBS=''
 if test "$with_dps" != 'no' && test "$with_x" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for DPS])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     PERSIST_CPPFLAGS="$CPPFLAGS"
@@ -1599,18 +1596,18 @@
     AC_MSG_CHECKING([if DPS package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_dps='no (failed tests)'
             CPPFLAGS="$PERSIST_CPPFLAGS"
         else
             DPS_LIBS="-ldpstk -ldps ${LIBDPS_XT}"
             LIBS="$DPS_LIBS $LIBS"
             AC_DEFINE(DPS_DELEGATE,1,Define if you have Display Postscript)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_dps='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
         CPPFLAGS=$PERSIST_CPPFLAGS
     fi
 fi
@@ -1635,9 +1632,9 @@
 have_djvu='no'
 DJVU_LIBS=''
 if test "$with_djvu" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for DJVU])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(libdjvu/ddjvuapi.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
@@ -1645,17 +1642,17 @@
     AC_MSG_CHECKING([if DJVU package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_djvu='no (failed tests)'
         else
             DJVU_LIBS='-ldjvulibre'
             LIBS="$DJVU_LIBS $LIBS"
             AC_DEFINE(DJVU_DELEGATE,1,Define if you have DJVU library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_djvu='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(DJVU_DELEGATE, test "$have_djvu" = 'yes')
@@ -1694,9 +1691,9 @@
 have_fftw='no'
 FFTW_LIBS=''
 if test "$with_fftw" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for FFTW])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(fftw3.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
@@ -1704,17 +1701,17 @@
     AC_MSG_CHECKING([if FFTW package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_fftw='no (failed tests)'
         else
             FFTW_LIBS='-lfftw3'
             LIBS="$FFTW_LIBS $LIBS"
             AC_DEFINE(FFTW_DELEGATE,1,Define if you have FFTW library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_fftw='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(FFTW_DELEGATE, test "$have_fftw" = 'yes')
@@ -1738,9 +1735,9 @@
 have_fpx='no'
 FPX_LIBS=''
 if test "$with_fpx" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for FlashPIX])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_LANG_PUSH(C++)
@@ -1750,17 +1747,17 @@
     AC_MSG_CHECKING([if FlashPIX package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_fpx='no (failed tests)'
         else
             FPX_LIBS='-lfpx'
             AC_DEFINE(FPX_DELEGATE,1,Define if you have FlashPIX library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_fpx='yes'
             PERLMAINCC="$CXX"
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(FPX_DELEGATE, test "$have_fpx" = 'yes')
@@ -1786,9 +1783,9 @@
 FONTCONFIG_LIBS=""
 FONTCONFIG_PKG=""
 if test "x$with_fontconfig" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(FONTCONFIG,[fontconfig >= 2.1.0], have_fontconfig=yes, have_fontconfig=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_fontconfig" = 'yes'; then
@@ -1821,9 +1818,9 @@
 have_freetype='no'
 FREETYPE_LIBS=''
 if test "$with_freetype" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING(for FreeType 2.0 )
-    AC_MSG_RESULT()
+    AC_MSG_NOTICE()
     failed=0
     passed=0
     PERSIST_LDFLAGS="$LDFLAGS"
@@ -1872,7 +1869,7 @@
     if test $passed -gt 0; then
       if test $failed -gt 0; then
         FREETYPE_LIBS=''
-        AC_MSG_RESULT(no -- some components failed test)
+        AC_MSG_NOTICE(no -- some components failed test)
         have_freetype='no (failed tests)'
       else
         LIBS="$FREETYPE_LIBS $LIBS"
@@ -1880,11 +1877,11 @@
         if test "$ac_cv_header_ft2build_h" = 'yes'; then
           AC_DEFINE([HAVE_FT2BUILD_H],[1],[Define to 1 if you have the <ft2build.h> header file.])
         fi
-        AC_MSG_RESULT(yes)
+        AC_MSG_NOTICE(yes)
         have_freetype='yes'
       fi
     else
-      AC_MSG_RESULT(no)
+      AC_MSG_NOTICE(no)
     fi
 fi
 AM_CONDITIONAL(FREETYPE_DELEGATE, test "$have_freetype" = 'yes')
@@ -1912,9 +1909,9 @@
 have_gslib='no'
 GS_LIBS=''
 if test "$with_gslib" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for Ghostscript])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     framework=0
     failed=0
     passed=0
@@ -1927,15 +1924,15 @@
     AC_MSG_CHECKING([if Ghostscript package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_gslib='no (failed tests)'
         else
             if test $framework -gt 0; then
                 GS_LIBS='-framework Ghostscript'
                 gslib_framework='yes'
-                AC_MSG_RESULT([yes, using framework.])
+                AC_MSG_NOTICE([yes, using framework.])
             else
-                AC_MSG_RESULT([yes, using library.])
+                AC_MSG_NOTICE([yes, using library.])
                 GS_LIBS='-lgs'
             fi
             LIBS="$GS_LIBS $LIBS"
@@ -1943,7 +1940,7 @@
             have_gslib='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(GS_DELEGATE, test "$have_gslib" = 'yes')
@@ -1993,9 +1990,9 @@
 
 GVC_PKG=""
 if test "x$with_gvc" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(GVC,[libgvc >= 2.9.0], have_gvc=yes, have_gvc=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_gvc" = 'yes'; then
@@ -2024,9 +2021,9 @@
 have_jbig='no'
 JBIG_LIBS=''
 if test "$with_jbig" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for JBIG])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(jbig.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -2034,17 +2031,17 @@
     AC_MSG_CHECKING([if JBIG package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_jbig='no (failed tests)'
         else
             JBIG_LIBS='-ljbig'
             LIBS="$JBIG_LIBS $LIBS"
             AC_DEFINE(JBIG_DELEGATE,1,Define if you have JBIG library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_jbig='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(JBIG_DELEGATE, test "$have_jbig" = 'yes')
@@ -2068,9 +2065,9 @@
 have_jpeg='no'
 JPEG_LIBS=''
 if test "$with_jpeg" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for JPEG])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(jconfig.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -2101,17 +2098,17 @@
     AC_MSG_CHECKING([if JPEG package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_jpeg='no (failed tests)'
         else
             JPEG_LIBS='-ljpeg'
             LIBS="$JPEG_LIBS $LIBS"
             AC_DEFINE(JPEG_DELEGATE,1,Define if you have JPEG library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_jpeg='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(JPEG_DELEGATE, test "$have_jpeg" = 'yes')
@@ -2135,9 +2132,9 @@
 have_jp2='no'
 JP2_LIBS=''
 if test "$with_jp2" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for JPEG Version 2])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(jasper/jasper.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -2145,17 +2142,17 @@
     AC_MSG_CHECKING([if JPEG version 2 support package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_jp2='no (failed tests)'
         else
             JP2_LIBS='-ljasper'
             LIBS="$JP2_LIBS $LIBS"
             AC_DEFINE(JP2_DELEGATE,1,Define if you have JPEG version 2 "Jasper" library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_jp2='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(JP2_DELEGATE, test "$have_jp2" = 'yes')
@@ -2187,9 +2184,9 @@
 have_lcms2='no'
 LCMS_LIBS=''
 if test "$with_lcms2" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for LCMS v2])
-    AC_MSG_RESULT()
+    AC_MSG_NOTICE()
     failed=0
     passed=0
     have_lcms_header='no'
@@ -2219,16 +2216,16 @@
     AC_MSG_CHECKING(if LCMS v2 package is complete)
     if test $passed -gt 0; then
       if test $failed -gt 0; then
-        AC_MSG_RESULT(no -- some components failed test)
+        AC_MSG_NOTICE(no -- some components failed test)
         have_lcms2='no (failed tests)'
       else
         LCMS_LIBS='-llcms2'
         LIBS="$LCMS_LIBS $LIBS"
-        AC_MSG_RESULT(yes)
+        AC_MSG_NOTICE(yes)
         have_lcms2='yes'
       fi
     else
-      AC_MSG_RESULT(no)
+      AC_MSG_NOTICE(no)
     fi
 fi
 
@@ -2241,9 +2238,9 @@
 
 have_lcms='no'
 if test "$with_lcms" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for LCMS v1.1X])
-    AC_MSG_RESULT()
+    AC_MSG_NOTICE()
     failed=0
     passed=0
     have_lcms_header='no'
@@ -2275,16 +2272,16 @@
     AC_MSG_CHECKING(if LCMS package is complete)
     if test $passed -gt 0; then
       if test $failed -gt 0; then
-        AC_MSG_RESULT(no -- some components failed test)
+        AC_MSG_NOTICE(no -- some components failed test)
         have_lcms='no (failed tests)'
       else
         LCMS_LIBS='-llcms'
         LIBS="$LCMS_LIBS $LIBS"
-        AC_MSG_RESULT(yes)
+        AC_MSG_NOTICE(yes)
         have_lcms='yes'
       fi
     else
-      AC_MSG_RESULT(no)
+      AC_MSG_NOTICE(no)
     fi
 fi
 
@@ -2315,9 +2312,9 @@
 LQR_LIBS=""
 LQR_PKG=""
 if test "x$with_lqr" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(LQR,[lqr-1 >= 0.1.0], have_lqr=yes, have_lqr=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_lqr" = 'yes'; then
@@ -2346,9 +2343,9 @@
 have_lzma='no'
 LZMA_LIBS=''
 if test "$with_lzma" != 'no' || test "$with_tiff" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
   AC_MSG_CHECKING(for LZMA)
-  AC_MSG_RESULT()
+  AC_MSG_NOTICE()
   failed=0
   passed=0
   AC_CHECK_HEADER(lzma.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -2356,17 +2353,17 @@
   AC_MSG_CHECKING(if LZMA package is complete)
   if test $passed -gt 0; then
     if test $failed -gt 0; then
-      AC_MSG_RESULT(no -- some components failed test)
+      AC_MSG_NOTICE(no -- some components failed test)
       have_lzma='no (failed tests)'
     else
       LZMA_LIBS='-llzma'
       LIBS="$LZMA_LIBS $LIBS"
       AC_DEFINE(LZMA_DELEGATE,1,Define if you have lzma compression library)
-      AC_MSG_RESULT(yes)
+      AC_MSG_NOTICE(yes)
       have_lzma='yes'
     fi
   else
-    AC_MSG_RESULT(no)
+    AC_MSG_NOTICE(no)
   fi
 fi
 AM_CONDITIONAL(LZMA_DELEGATE, test "$have_lzma" = 'yes')
@@ -2392,9 +2389,9 @@
 OPENEXR_LIBS=""
 OPENEXR_PKG=""
 if test "x$with_openexr" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(OPENEXR,[OpenEXR >= 1.0.6], have_openexr=yes, have_openexr=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_openexr" = 'yes'; then
@@ -2427,9 +2424,9 @@
 PNG_LIBS=''
 
 if test "$with_png" != 'no' -a  "$have_zlib" != 'no' ; then
-  AC_MSG_RESULT([-------------------------------------------------------------])
+  AC_MSG_NOTICE([-------------------------------------------------------------])
   AC_MSG_CHECKING(for PNG support )
-  AC_MSG_RESULT()
+  AC_MSG_NOTICE()
   failed=0
   passed=0
   AC_CHECK_HEADER(png.h,passed=`expr $passed + 1`,
@@ -2468,14 +2465,14 @@
             ac_cv_libpng_ok='no')
             if test "$ac_cv_libpng_ok" = 'yes' ; then
               passed=`expr $passed + 1`
-              AC_MSG_RESULT(yes)
+              AC_MSG_NOTICE(yes)
             else
               failed=`expr $failed + 1`
-              AC_MSG_RESULT(no)
+              AC_MSG_NOTICE(no)
             fi
           else
             passed=`expr $passed + 1`
-            AC_MSG_RESULT(yes)
+            AC_MSG_NOTICE(yes)
           fi
         fi
 
@@ -2504,13 +2501,13 @@
             AC_MSG_CHECKING(if ${pnglib} package is complete)
             if test $passed -gt 0 ; then
               if test $failed -gt 0 ; then
-                  AC_MSG_RESULT(no -- some components failed test)
+                  AC_MSG_NOTICE(no -- some components failed test)
                   have_png='no (failed tests)'
               else
                   PNG_LIBS="-l${pnglib}"
                   LIBS="$PNG_LIBS $LIBS"
                   AC_DEFINE(PNG_DELEGATE,1,Define if you have PNG library)
-                  AC_MSG_RESULT(yes)
+                  AC_MSG_NOTICE(yes)
                   have_png='yes'
               fi
             fi
@@ -2546,11 +2543,11 @@
 RSVG_LIBS=""
 RSVG_PKG=""
 if test "x$with_rsvg" = "xyes"; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     PKG_CHECK_MODULES(RSVG,[librsvg-2.0 >= 2.9.0], have_rsvg=yes, have_rsvg=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     PKG_CHECK_MODULES(CAIRO_SVG, cairo-svg, have_cairo=yes, have_cairo=no)
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
 fi
 
 if test "$have_rsvg" = 'yes'; then
@@ -2590,9 +2587,9 @@
 have_tiff='no'
 TIFF_LIBS=''
 if test "$with_tiff" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for TIFF])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(tiff.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
@@ -2606,13 +2603,13 @@
     AC_MSG_CHECKING([if TIFF package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_tiff='no (failed tests)'
         else
             TIFF_LIBS='-ltiff'
             LIBS="$TIFF_LIBS $LIBS"
             AC_DEFINE(TIFF_DELEGATE,1,Define if you have TIFF library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_tiff='yes'
             AC_CHECK_HEADERS(tiffconf.h)
             AC_CHECK_FUNCS([TIFFIsCODECConfigured TIFFMergeFieldInfo \
@@ -2620,7 +2617,7 @@
               TIFFSetWarningHandlerExt TIFFSwabArrayOfTriples])
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(TIFF_DELEGATE, test "$have_tiff" = 'yes')
@@ -2644,9 +2641,9 @@
 have_webp='no'
 WEBP_LIBS=''
 if test "$with_webp" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for WEBP])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(webp/decode.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
@@ -2654,17 +2651,17 @@
     AC_MSG_CHECKING([if WEBP package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_webp='no (failed tests)'
         else
             WEBP_LIBS='-lwebp'
             LIBS="$WEBP_LIBS $LIBS"
             AC_DEFINE(WEBP_DELEGATE,1,Define if you have WEBP library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_webp='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(WEBP_DELEGATE,test "$have_webp" = 'yes')
@@ -2702,9 +2699,9 @@
 have_wmf='no'
 WMF_LIBS=''
 if test "$with_wmf" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for WMF])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     failed=0
     passed=0
     AC_CHECK_HEADER(libwmf/eps.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
@@ -2712,17 +2709,17 @@
     AC_MSG_CHECKING([if WMF package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_wmf='no (failed tests)'
         else
             WMF_LIBS='-lwmf -lwmflite'
             LIBS="$WMF_LIBS $LIBS"
             AC_DEFINE(WMF_DELEGATE,1,Define if you have WMF library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_wmf='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(WMF_DELEGATE,test "$have_wmf" = 'yes')
@@ -2749,9 +2746,9 @@
 have_xml='no'
 XML_LIBS=''
 if test "$with_xml" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for XML])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     PERSIST_LDFLAGS=$LDFLAGS
     PERSIST_CPPFLAGS=$CPPFLAGS
     xml2_config=''
@@ -2777,7 +2774,7 @@
     AC_MSG_CHECKING([if XML package is complete])
     if test $passed -gt 0; then
         if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
+            AC_MSG_NOTICE([no -- some components failed test])
             have_xml='no (failed tests)'
             LDFLAGS="$PERSIST_LDFLAGS"
             CPPFLAGS="$PERSIST_CPPFLAGS"
@@ -2785,11 +2782,11 @@
             XML_LIBS='-lxml2'
             LIBS="$XML_LIBS $LIBS"
             AC_DEFINE(XML_DELEGATE,1,Define if you have XML library)
-            AC_MSG_RESULT([yes])
+            AC_MSG_NOTICE([yes])
             have_xml='yes'
         fi
     else
-        AC_MSG_RESULT([no])
+        AC_MSG_NOTICE([no])
     fi
 fi
 AM_CONDITIONAL(XML_DELEGATE,test "$have_xml" = 'yes')
@@ -2904,9 +2901,9 @@
 configure_transform_name=`echo ${program_transform_name} | sed 's,\\$\\$,$,'`
 
 # Default delegate definitions
-AC_MSG_RESULT([-------------------------------------------------------------])
+AC_MSG_NOTICE([-------------------------------------------------------------])
 AC_MSG_CHECKING([for ImageMagick delegate programs])
-AC_MSG_RESULT([])
+AC_MSG_NOTICE([])
 AutotraceDecodeDelegateDefault='autotrace'
 BlenderDecodeDelegateDefault='blender'
 BZIPDelegateDefault='bzip2'
@@ -3049,9 +3046,9 @@
 fi
 if test "${dejavu_font_dir}x" != 'x'; then
   type_include_files="${type_include_files} "'<include file="type-dejavu.xml" />'
-  AC_MSG_RESULT([$dejavu_font_dir])
+  AC_MSG_NOTICE([$dejavu_font_dir])
 else
-  AC_MSG_RESULT([not found!]);
+  AC_MSG_NOTICE([not found!]);
 fi
 AC_SUBST(dejavu_font_dir)
 
@@ -3110,9 +3107,9 @@
 fi
 if test "${ghostscript_font_dir}x" != 'x'; then
   type_include_files="${type_include_files} "'<include file="type-ghostscript.xml" />'
-  AC_MSG_RESULT([$ghostscript_font_dir])
+  AC_MSG_NOTICE([$ghostscript_font_dir])
 else
-  AC_MSG_RESULT([not found!]);
+  AC_MSG_NOTICE([not found!]);
 fi
 AC_SUBST(ghostscript_font_dir)
 case "${build_os}" in
@@ -3255,9 +3252,9 @@
     PCLVersion='unknown'
 fi
 if test $have_pcl = 'yes'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for PCL])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     # PCLColorDevice
     AC_MSG_CHECKING([for pcl color device])
     if $PCLDelegate -dBATCH -sDEVICE=$PCLColorDevice -sOutputFile=/dev/null < /dev/null 2> /dev/null; then
@@ -3265,7 +3262,7 @@
     else
         PCLColorDevice=ppmraw
     fi
-    AC_MSG_RESULT([$PCLColorDevice])
+    AC_MSG_NOTICE([$PCLColorDevice])
 
     # PCLCMYKDevice
     AC_MSG_CHECKING([for pcl CMYK device])
@@ -3274,7 +3271,7 @@
     else
         PCLCMYKDevice=$PCLColorDevice
     fi
-    AC_MSG_RESULT([$PCLCMYKDevice])
+    AC_MSG_NOTICE([$PCLCMYKDevice])
 
     # PCLMonoDevice
     AC_MSG_CHECKING([for pcl mono device])
@@ -3283,7 +3280,7 @@
     else
         PCLMonoDevice=$PCLColorDevice
     fi
-    AC_MSG_RESULT([$PCLMonoDevice])
+    AC_MSG_NOTICE([$PCLMonoDevice])
 fi
 
 AC_SUBST(PCLMonoDevice)
@@ -3301,9 +3298,9 @@
     XPSVersion='unknown'
 fi
 if test $have_xps = 'yes'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for XPS])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     # XPSColorDevice
     AC_MSG_CHECKING([for xps color device])
     if $XPSDelegate -dBATCH -sDEVICE=$XPSColorDevice -sOutputFile=/dev/null < /dev/null 2> /dev/null; then
@@ -3311,7 +3308,7 @@
     else
         XPSColorDevice=ppmraw
     fi
-    AC_MSG_RESULT([$XPSColorDevice])
+    AC_MSG_NOTICE([$XPSColorDevice])
 
     # XPSCMYKDevice
     AC_MSG_CHECKING([for xps CMYK device])
@@ -3320,7 +3317,7 @@
     else
         XPSCMYKDevice=$XPSColorDevice
     fi
-    AC_MSG_RESULT([$XPSCMYKDevice])
+    AC_MSG_NOTICE([$XPSCMYKDevice])
 
     # XPSMonoDevice
     AC_MSG_CHECKING([for xps mono device])
@@ -3329,7 +3326,7 @@
     else
         XPSMonoDevice=$XPSColorDevice
     fi
-    AC_MSG_RESULT([$XPSMonoDevice])
+    AC_MSG_NOTICE([$XPSMonoDevice])
 fi
 
 AC_SUBST(XPSMonoDevice)
@@ -3349,16 +3346,16 @@
 GSEPSDevice=epswrite
 GSVersion='unknown'
 if test $have_gs = 'yes'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for Ghostscript])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     AC_MSG_CHECKING([for Ghostscript version])
     if GSVersion=`$PSDelegate --version`; then
         :
     else
         GSVersion=`$PSDelegate --help | sed -e '1q' | awk '{ print $3 }'`
     fi
-    AC_MSG_RESULT([$GSVersion])
+    AC_MSG_NOTICE([$GSVersion])
 
     # GSAlphaDevice
     AC_MSG_CHECKING([for gs alpha device])
@@ -3367,7 +3364,7 @@
     else
         GSAlphaDevice=pnmraw
     fi
-    AC_MSG_RESULT([$GSAlphaDevice])
+    AC_MSG_NOTICE([$GSAlphaDevice])
 
     # GSColorDevice
     AC_MSG_CHECKING([for gs color device])
@@ -3376,7 +3373,7 @@
     else
         GSColorDevice=pnmraw
     fi
-    AC_MSG_RESULT([$GSColorDevice])
+    AC_MSG_NOTICE([$GSColorDevice])
 
     # GSCMYKDevice
     AC_MSG_CHECKING([for gs CMYK device])
@@ -3385,7 +3382,7 @@
     else
         GSCMYKDevice=bmpsep8
     fi
-    AC_MSG_RESULT([$GSCMYKDevice])
+    AC_MSG_NOTICE([$GSCMYKDevice])
 
     # GSMonoDevice
     AC_MSG_CHECKING([for gs mono device])
@@ -3394,7 +3391,7 @@
     else
         GSMonoDevice=$GSColorDevice
     fi
-    AC_MSG_RESULT([$GSMonoDevice])
+    AC_MSG_NOTICE([$GSMonoDevice])
 
     # GSPDFDevice
     AC_MSG_CHECKING([for gs PDF writing device])
@@ -3403,7 +3400,7 @@
     else
         GSPDFDevice=nodevice
     fi
-        AC_MSG_RESULT([$GSPDFDevice])
+        AC_MSG_NOTICE([$GSPDFDevice])
 
     # GSPSDevice
     AC_MSG_CHECKING([for gs PS writing device])
@@ -3412,7 +3409,7 @@
     else
         GSPSDevice=nodevice
     fi
-    AC_MSG_RESULT([$GSPSDevice])
+    AC_MSG_NOTICE([$GSPSDevice])
 
     # GSEPSDevice
     AC_MSG_CHECKING([for gs EPS writing device])
@@ -3421,7 +3418,7 @@
     else
         GSEPSDevice=nodevice
     fi
-    AC_MSG_RESULT([$GSEPSDevice])
+    AC_MSG_NOTICE([$GSEPSDevice])
 fi
 
 AC_SUBST(GSAlphaDevice)
@@ -3441,9 +3438,9 @@
 # If name/path of desired PERL interpreter is specified, look for that one first
 have_perl='no'
 if test "$with_perl" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
+    AC_MSG_NOTICE([-------------------------------------------------------------])
     AC_MSG_CHECKING([for Perl])
-    AC_MSG_RESULT([])
+    AC_MSG_NOTICE([])
     if test "$with_perl" != 'yes'; then
         AC_CACHE_CHECK(for perl,ac_cv_path_PERL,ac_cv_path_PERL="$with_perl");
         PERL=$ac_cv_path_PERL
@@ -3638,8 +3635,8 @@
 AC_CONFIG_COMMANDS([Magick++-config.in],[chmod +x Magick++/bin/Magick++-config])
 AC_CONFIG_COMMANDS([PerlMagick/check.sh.in],[chmod +x PerlMagick/check.sh])
 
-AC_MSG_RESULT([-------------------------------------------------------------])
-AC_MSG_RESULT([Update ImageMagick configuration])
+AC_MSG_NOTICE([-------------------------------------------------------------])
+AC_MSG_NOTICE([Update ImageMagick configuration])
 AC_OUTPUT
 
 rm -f magick-version
@@ -3659,7 +3656,7 @@
     result_windows_font_dir=${windows_font_dir}
 fi
 
-AC_MSG_RESULT([
+AC_MSG_NOTICE([
 ImageMagick is configured as follows. Please verify that this configuration
 matches your expectations.
 
diff --git a/libtool b/libtool
index d1d8b4b..d10e6b3 100755
--- a/libtool
+++ b/libtool
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (ImageMagick) 7.0.0-0
+# Generated automatically by config.status (ImageMagick-7.0.0) 7.0.0
 # Libtool was configured on host magick.imagemagick.org:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
