diff --git a/configure b/configure
index c409e20..270564b 100755
--- a/configure
+++ b/configure
@@ -9495,6 +9495,11 @@
 fi
 
         fi
+        if test "$ac_cv_lib_Xext_XShmQueryExtension" != "yes"; then
+  wine_notices="$wine_notices|XShm development files not found.
+Wine will be built without XShm support. (winex11.drv)"
+fi
+
 
                 if test "$ac_cv_header_X11_extensions_shape_h" = "yes"
         then
@@ -9568,6 +9573,11 @@
 fi
 
         fi
+        if test "$ac_cv_lib_Xext_XShapeQueryExtension" != "yes"; then
+  wine_notices="$wine_notices|XShape development files not found.
+Wine will be built without XShape support. (winex11.drv)"
+fi
+
 
                 if test "$ac_cv_header_X11_extensions_xf86vmode_h" = "yes"
         then
@@ -9643,6 +9653,11 @@
 fi
 
         fi
+        if test "$ac_cv_lib_Xxf86vm_XF86VidModeQueryExtension" != "yes"; then
+  wine_notices="$wine_notices|Xxf86vm development files not found.
+Wine will be built without XF86 Vidmode support. (winex11.drv)"
+fi
+
 
                 if test "$ac_cv_header_X11_extensions_Xrender_h" = "yes" -a "x$ac_cv_lib_soname_X11" != "x" -a "x$ac_cv_lib_soname_Xext" != "x"
         then
@@ -9794,6 +9809,11 @@
 
 
         fi
+        if test "x$ac_cv_lib_soname_Xrender" = "x"; then
+  wine_notices="$wine_notices|XRender development files not found.
+Wine will be built without XRender support. (winex11.drv)"
+fi
+
 
                 if test "$ac_cv_header_X11_extensions_Xrandr_h" = "yes" -a "x$ac_cv_lib_soname_Xrender" != "x"
         then
@@ -9917,6 +9937,11 @@
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         fi
+        if test "x$ac_cv_lib_soname_Xrandr" = "x"; then
+  wine_notices="$wine_notices|XRandr development files not found.
+Wine will be built without XRandr support. (winex11.drv)"
+fi
+
 
                 if test "$ac_cv_header_X11_extensions_Xinerama_h" = "yes"
         then
@@ -10040,6 +10065,11 @@
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         fi
+        if test "x$ac_cv_lib_soname_Xinerama" = "x"; then
+  wine_notices="$wine_notices|Xinerama development files not found.
+Wine will be built without Xinerama support. (winex11.drv)"
+fi
+
 
 
         if test "x$with_opengl" != "xno"
@@ -10227,7 +10257,14 @@
 if test "x$ac_cv_lib_soname_GL" = "x"; then
   { echo "$as_me:$LINENO: result: not found" >&5
 echo "${ECHO_T}not found" >&6; }
-
+       if test -f /usr/X11R6/lib/libGL.a
+                              then
+                                  wine_warnings="$wine_warnings|/usr/X11R6/lib/libGL.a is present on your system.
+This probably prevents linking to OpenGL. Try deleting the file and restarting configure."
+                              else
+                                  wine_warnings="$wine_warnings|No OpenGL library found on this system.
+Wine will be build without OpenGL or Direct3D support."
+                              fi
 else
   { echo "$as_me:$LINENO: result: $ac_cv_lib_soname_GL" >&5
 echo "${ECHO_T}$ac_cv_lib_soname_GL" >&6; }
@@ -10243,7 +10280,6 @@
 #define HAVE_OPENGL 1
 _ACEOF
 
-
 fi
 
 
@@ -10253,8 +10289,7 @@
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lGLU $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
-		 $LIBS"
+LIBS="-lGLU $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -10315,11 +10350,16 @@
 
 fi
 
+             else
+                 wine_warnings="$wine_warnings|Old Mesa headers detected. Consider upgrading your Mesa libraries (http://www.mesa3d.org/).
+Wine will be build without OpenGL or Direct3D support."
 	     fi
          else
-             wine_cv_opengl_headers_found="no"
+             wine_warnings="$wine_warnings|OpenGL development headers not found.
+Wine will be build without OpenGL or Direct3D support."
 	 fi
     fi
+
         NASLIBS=""
 
 
@@ -10668,6 +10708,9 @@
     XLIB=""
     X_CFLAGS=""
     X_LIBS=""
+    wine_warnings="$wine_warnings|X development files not found. Wine will be built
+without X support, which probably isn't what you want. You will need to install
+development packages of Xlib/Xfree86 at the very least."
 fi
 
 
@@ -11044,6 +11087,12 @@
 done
 
 CPPFLAGS="$ac_save_CPPFLAGS"
+if test "$ac_cv_lib_xml2_xmlParseMemory" != "yes"; then
+  wine_notices="$wine_notices|libxml2 development files not found.
+Wine will be built without XML support. (msxml.dll)"
+fi
+
+
 if test "$PKG_CONFIG" != "false"
 then
     ac_xslt_libs="`$PKG_CONFIG --libs libxslt 2>/dev/null`"
@@ -11186,6 +11235,11 @@
 done
 
 CPPFLAGS="$ac_save_CPPFLAGS"
+if test "$ac_cv_lib_xslt_xsltCompilePattern" != "yes"; then
+  wine_notices="$wine_notices|libxslt development files not found.
+Wine will be built without xslt support. (msxml.dll)"
+fi
+
 
 HALINCL=""
 
@@ -11488,6 +11542,11 @@
     fi
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+if test "x$ac_cv_lib_soname_hal" = "x"; then
+  wine_notices="$wine_notices|libhal development files not found.
+Wine will be built without dynamic device support. (explorer.exe)"
+fi
+
 
 CURSESLIBS=""
 if test "$ac_cv_header_ncurses_h" = "yes"
@@ -11748,6 +11807,11 @@
 done
 
 LIBS="$ac_save_LIBS"
+if test "x$ac_cv_lib_soname_curses$ac_cv_lib_soname_ncurses" = "x"; then
+  wine_notices="$wine_notices|lib(n)curses development files not found.
+Wine will be built without (n)curses support. (wineconsole.exe)"
+fi
+
 
 # Extract the first word of "sane-config", so it can be a program name with args.
 set dummy sane-config; ac_word=$2
@@ -12007,6 +12071,11 @@
 
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+if test "x$ac_cv_lib_soname_sane" = "x"; then
+  wine_notices="$wine_notices|libsane development files not found.
+Wine will be built without scanner support. (sane.ds/twain_32.dll)"
+fi
+
 
 # Extract the first word of "gphoto2-config", so it can be a program name with args.
 set dummy gphoto2-config; ac_word=$2
@@ -12084,25 +12153,19 @@
 fi
 
 
-GPHOTO2LIBS=""
-
-GPHOTO2INCL=""
-
 if test "$gphoto2_devel" != "no" -a "$gphoto2port_devel" != "no"
 then
-    GPHOTO2INCL="`$gphoto2_devel --cflags` `$gphoto2port_devel --cflags`"
-    GPHOTO2LIBS=""
+    ac_gphoto2_incl="`$gphoto2_devel --cflags` `$gphoto2port_devel --cflags`"
+    ac_gphoto2_libs=""
     for i in `$gphoto2_devel --libs` `$gphoto2port_devel --libs`
     do
       case "$i" in
         -L/usr/lib|-L/usr/lib64) ;;
-        -L*|-l*) GPHOTO2LIBS="$GPHOTO2LIBS $i";;
+        -L*|-l*) ac_gphoto2_libs="$ac_gphoto2_libs $i";;
       esac
     done
     ac_save_CPPFLAGS="$CPPFLAGS"
-    ac_save_LIBS="$LIBS"
-    CPPFLAGS="$CPPFLAGS $GPHOTO2INCL"
-    LIBS="$LIBS $GPHOTO2LIBS"
+    CPPFLAGS="$CPPFLAGS $ac_gphoto2_incl"
     if test "${ac_cv_header_gphoto2_camera_h+set}" = set; then
   { echo "$as_me:$LINENO: checking for gphoto2-camera.h" >&5
 echo $ECHO_N "checking for gphoto2-camera.h... $ECHO_C" >&6; }
@@ -12240,7 +12303,7 @@
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgphoto2  $LIBS"
+LIBS="-lgphoto2 $GPHOTO2LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -12301,20 +12364,23 @@
 #define HAVE_GPHOTO2 1
 _ACEOF
 
-else
-  GPHOTO2LIBS=""
-                                  GPHOTO2INCL=""
+                                   GPHOTO2LIBS="$ac_gphoto2_libs"
+
+                                   GPHOTO2INCL="$ac_gphoto2_incl"
+
 fi
 
-else
-  GPHOTO2LIBS=""
-                    GPHOTO2INCL=""
 fi
 
 
-    LIBS="$ac_save_LIBS"
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+if test "$ac_cv_lib_gphoto2_gp_camera_new" != "yes"; then
+  wine_notices="$wine_notices|libgphoto2 development files not found.
+Wine will be built without Digital Camera support. (gphoto2.ds/twain_32.dll)"
+fi
+
+
 
 if test "$ac_cv_header_unicode_ubidi_h" = "yes"
 then
@@ -12390,6 +12456,11 @@
 
     LIBS="$saved_libs"
 fi
+if test "x$ICULIBS" = "x"; then
+  wine_notices="$wine_notices|libicu development files not found.
+Wine will be built without bidi (Right to Left) support. (gdi32.dll)"
+fi
+
 
 RESOLVLIBS=""
 
@@ -12542,6 +12613,11 @@
 fi
 
 fi
+if test "$ac_cv_lib_lcms_cmsOpenProfileFromFile" = "yes"; then
+  wine_notices="$wine_notices|liblcms development files not found.
+Wine will be built without Color Management support. (mscms.dll)"
+fi
+
 
 LDAPLIBS=""
 
@@ -12786,8 +12862,12 @@
 
 LIBS="$ac_wine_check_funcs_save_LIBS"
 fi
+if test "x$LDAPLIBS" = "x"; then
+  wine_notices="$wine_notices|libldap (OpenLDAP) development files not found.
+Wine will be built without LDAP support. (wldap32.dll)"
+fi
 
-wine_cv_msg_freetype=yes
+
 for ac_prog in freetype-config freetype2-config
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -13208,13 +13288,19 @@
 
             FREETYPEINCL="$ac_freetype_incl"
 
-	    wine_cv_msg_freetype=no
 	fi
     fi
 fi
 
-if test "$FONTFORGE" != "false" -a -n "$FREETYPELIBS"
+if test "$FONTFORGE" = "false"
 then
+    wine_warnings="$wine_warnings|FontForge is missing.
+Fonts will not be built. Dialog text may be invisible or unaligned."
+elif test "x$FREETYPELIBS" = "x"
+then
+    wine_warnings="$wine_warnings|FreeType development files not found.
+Fonts will not be built. Dialog text may be invisible or unaligned."
+else
   FONTSSUBDIRS="fonts"
 
 fi
@@ -13942,7 +14028,6 @@
 
 fi
 
-
 AUDIOIOLIBS=""
 
 if test "$ac_cv_header_libaudioio_h" = "yes"
@@ -14101,6 +14186,11 @@
 fi
 
 fi
+if test "x$ac_cv_lib_soname_capi20" = "x"; then
+  wine_notices="$wine_notices|libcapi20 development files not found.
+Wine will be built without ISDN support. (capi2032.dll)"
+fi
+
 
 if test "$ac_cv_header_cups_cups_h" = "yes"
 then
@@ -14183,6 +14273,11 @@
 fi
 
 fi
+if test "x$ac_cv_lib_soname_cups" = "x"; then
+  wine_notices="$wine_notices|libcups development files not found.
+Wine will be built without CUPS support."
+fi
+
 
 if test "$ac_cv_header_jack_jack_h" = "yes"
 then
@@ -14672,6 +14767,14 @@
 
 fi
 
+if test "x$ALSALIBS$AUDIOIOLIBS$COREAUDIO$NASLIBS$ESD_LIBS$ac_cv_lib_soname_jack" = "x" -a \
+                 "$ac_cv_header_sys_soundcard_h" != "yes" -a \
+                 "$ac_cv_header_machine_soundcard_h" != "yes" -a \
+                 "$ac_cv_header_soundcard_h" != "yes"; then
+  wine_warnings="$wine_warnings|No sound system was found. Windows applications will be silent."
+fi
+
+
 
 EXTRACFLAGS=""
 
@@ -22331,250 +22434,30 @@
 fi
 
 
-
 if test "$no_create" = "yes"
 then
   exit 0
 fi
 
-if test "$verbose" = "yes"
-then
-    if test "$ac_cv_header_capi20_h" != "yes" -o "$ac_cv_header_linux_capi_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libcapi20 development files not found." >&5
-echo "$as_me: libcapi20 development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without ISDN support. (capi2032.dll)" >&5
-echo "$as_me: Wine will be built without ISDN support. (capi2032.dll)" >&6;}
-  fi
-
-    if test "$ac_cv_header_cups_cups_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libcups development files not found." >&5
-echo "$as_me: libcups development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without CUPS support." >&5
-echo "$as_me: Wine will be built without CUPS support." >&6;}
-  fi
-
-
-    if test "$ac_cv_header_gphoto2_camera_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libgphoto2 development files not found." >&5
-echo "$as_me: libgphoto2 development files not found." >&6;}
-    if test "$ac_cv_header_sane_sane_h" = "yes"
-    then
-      { echo "$as_me:$LINENO: Wine will be built with limited Digital Camera support. (twain_32.dll)" >&5
-echo "$as_me: Wine will be built with limited Digital Camera support. (twain_32.dll)" >&6;}
-    else
-      { echo "$as_me:$LINENO: Wine will be built without Digital Camera support. (gphoto2.ds/twain_32.dll)" >&5
-echo "$as_me: Wine will be built without Digital Camera support. (gphoto2.ds/twain_32.dll)" >&6;}
+ac_save_IFS="$IFS"
+IFS="|"
+if test "$verbose" = "yes"; then
+    for msg in $wine_notices; do
+        if test -n "$msg"; then
+            echo >&2
+            { echo "$as_me:$LINENO: $msg" >&5
+echo "$as_me: $msg" >&6;}
+        fi
+    done
+fi
+for msg in $wine_warnings; do
+    if test -n "$msg"; then
+        echo >&2
+        { echo "$as_me:$LINENO: WARNING: $msg" >&5
+echo "$as_me: WARNING: $msg" >&2;}
     fi
-  fi
-
-      if test "$ac_cv_header_hal_libhal_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libhal development files not found." >&5
-echo "$as_me: libhal development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without dynamic device support. (explorer.exe)" >&5
-echo "$as_me: Wine will be built without dynamic device support. (explorer.exe)" >&6;}
-  fi
-
-    if test "$ac_cv_header_unicode_ubidi_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libicu development files not found." >&5
-echo "$as_me: libicu development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without bidi (Right to Left) support. (gdi32.dll)" >&5
-echo "$as_me: Wine will be built without bidi (Right to Left) support. (gdi32.dll)" >&6;}
-  fi
-
-    if test "$ac_cv_header_lcms_h" != "yes" -a "$ac_cv_header_lcms_lcms_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: liblcms development files not found." >&5
-echo "$as_me: liblcms development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without Color Management support. (mscms.dll)" >&5
-echo "$as_me: Wine will be built without Color Management support. (mscms.dll)" >&6;}
-  fi
-
-    if test "$ac_cv_header_ldap_h" != "yes" -o "$ac_cv_header_lber_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libldap (OpenLDAP) development files not found." >&5
-echo "$as_me: libldap (OpenLDAP) development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without LDAP support. (wldap32.dll)" >&5
-echo "$as_me: Wine will be built without LDAP support. (wldap32.dll)" >&6;}
-  fi
-
-    if test "x$with_curses" != "xno" -a "$ac_cv_header_ncurses_h" != "yes" -a "$ac_cv_header_curses_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: lib(n)curses development files not found." >&5
-echo "$as_me: lib(n)curses development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without (n)curses support. (wineconsole.exe)" >&5
-echo "$as_me: Wine will be built without (n)curses support. (wineconsole.exe)" >&6;}
-  fi
-
-    if test "$ac_cv_header_sane_sane_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libsane development files not found." >&5
-echo "$as_me: libsane development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without Scanner support. (sane.ds/twain_32.dll)" >&5
-echo "$as_me: Wine will be built without Scanner support. (sane.ds/twain_32.dll)" >&6;}
-  fi
-
-      if test "$have_x" = "yes"
-  then
-        if test "$ac_cv_header_X11_extensions_shape_h" != "yes" -o "$ac_cv_header_X11_extensions_XShm_h" != "yes"
-    then
-      echo >&2
-      { echo "$as_me:$LINENO: libxext development files not found." >&5
-echo "$as_me: libxext development files not found." >&6;}
-      { echo "$as_me:$LINENO: Wine will be built without Shm / Shape support. (winex11.drv)" >&5
-echo "$as_me: Wine will be built without Shm / Shape support. (winex11.drv)" >&6;}
-    fi
-
-        if test "$ac_cv_header_X11_extensions_Xrandr_h" != "yes"
-    then
-      echo >&2
-      { echo "$as_me:$LINENO: libXrandr development files not found." >&5
-echo "$as_me: libXrandr development files not found." >&6;}
-      { echo "$as_me:$LINENO: Wine will be built without Xrandr support. (winex11.drv)" >&5
-echo "$as_me: Wine will be built without Xrandr support. (winex11.drv)" >&6;}
-    fi
-
-        if test "$ac_cv_header_X11_extensions_Xrender_h" != "yes"
-    then
-      echo >&2
-      { echo "$as_me:$LINENO: libXrender development files not found." >&5
-echo "$as_me: libXrender development files not found." >&6;}
-      { echo "$as_me:$LINENO: Wine will be built without Xrender support. (winex11.drv)" >&5
-echo "$as_me: Wine will be built without Xrender support. (winex11.drv)" >&6;}
-    fi
-
-        if test "$ac_cv_header_X11_extensions_xf86vmode_h" != "yes"
-    then
-      echo >&2
-      { echo "$as_me:$LINENO: libXxf86vm development files not found." >&5
-echo "$as_me: libXxf86vm development files not found." >&6;}
-      { echo "$as_me:$LINENO: Wine will be built without XFree86-VidMode support. (winex11.drv)" >&5
-echo "$as_me: Wine will be built without XFree86-VidMode support. (winex11.drv)" >&6;}
-    fi
-  fi
-
-    if test "$ac_cv_header_libxml_parser_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libxml2 development files not found." >&5
-echo "$as_me: libxml2 development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without XML support. (msxml.dll)" >&5
-echo "$as_me: Wine will be built without XML support. (msxml.dll)" >&6;}
-  fi
-
-    if test "$ac_cv_header_libxslt_pattern_h" != "yes" -o "$ac_cv_header_libxslt_transform_h" != "yes"
-  then
-    echo >&2
-    { echo "$as_me:$LINENO: libxslt development files not found." >&5
-echo "$as_me: libxslt development files not found." >&6;}
-    { echo "$as_me:$LINENO: Wine will be built without xslt support. (msxml.dll)" >&5
-echo "$as_me: Wine will be built without xslt support. (msxml.dll)" >&6;}
-  fi
-fi
-
-
-if test "$have_x" = "no"
-then
-  echo >&2
-  { echo "$as_me:$LINENO: WARNING: X development files not found. Wine will be built without" >&5
-echo "$as_me: WARNING: X development files not found. Wine will be built without" >&2;}
-  { echo "$as_me:$LINENO: WARNING: X support, which currently does not work, and probably" >&5
-echo "$as_me: WARNING: X support, which currently does not work, and probably" >&2;}
-  { echo "$as_me:$LINENO: WARNING: isn't what you want anyway. You will need to install devel" >&5
-echo "$as_me: WARNING: isn't what you want anyway. You will need to install devel" >&2;}
-  { echo "$as_me:$LINENO: WARNING:  packages of Xlib/Xfree86 at the very least." >&5
-echo "$as_me: WARNING:  packages of Xlib/Xfree86 at the very least." >&2;}
-fi
-
-if test -z "$OPENGLFILES"
-then
-  echo >&2
-  { echo "$as_me:$LINENO: WARNING: Wine will be build without OpenGL or Direct3D support" >&5
-echo "$as_me: WARNING: Wine will be build without OpenGL or Direct3D support" >&2;}
-  { echo "$as_me:$LINENO: WARNING: because something is wrong with the OpenGL setup:" >&5
-echo "$as_me: WARNING: because something is wrong with the OpenGL setup:" >&2;}
-  if test "$wine_cv_opengl_headers_found" = "no"
-  then
-    { echo "$as_me:$LINENO: WARNING: No OpenGL development headers were found" >&5
-echo "$as_me: WARNING: No OpenGL development headers were found" >&2;}
-  fi
-  if test "$wine_cv_opengl_header_version_OK" = "no"
-  then
-    { echo "$as_me:$LINENO: WARNING: Old Mesa headers detected. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)." >&5
-echo "$as_me: WARNING: Old Mesa headers detected. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)." >&2;}
-  elif test "$ac_cv_lib_GL_glXCreateContext" = "no"
-  then
-     if test -f /usr/X11R6/lib/libGL.a
-     then
-        { echo "$as_me:$LINENO: WARNING: /usr/X11R6/lib/libGL.a is present on your system.
-This probably prevents linking to OpenGL. Try deleting the file and restarting configure." >&5
-echo "$as_me: WARNING: /usr/X11R6/lib/libGL.a is present on your system.
-This probably prevents linking to OpenGL. Try deleting the file and restarting configure." >&2;}
-     else
-        { echo "$as_me:$LINENO: WARNING: No OpenGL library found on this system." >&5
-echo "$as_me: WARNING: No OpenGL library found on this system." >&2;}
-     fi
-  fi
-fi
-
-if test "$wine_cv_msg_freetype" = "yes"
-then
-  echo >&2
-  { echo "$as_me:$LINENO: WARNING: Your system appears to have the FreeType 2 runtime libraries" >&5
-echo "$as_me: WARNING: Your system appears to have the FreeType 2 runtime libraries" >&2;}
-  { echo "$as_me:$LINENO: WARNING: installed, but 'freetype-config' is not in your PATH. Install" >&5
-echo "$as_me: WARNING: installed, but 'freetype-config' is not in your PATH. Install" >&2;}
-  { echo "$as_me:$LINENO: WARNING: the freetype-devel package (or its equivalent on your distribution)" >&5
-echo "$as_me: WARNING: the freetype-devel package (or its equivalent on your distribution)" >&2;}
-  { echo "$as_me:$LINENO: WARNING: to enable Wine to use TrueType fonts." >&5
-echo "$as_me: WARNING: to enable Wine to use TrueType fonts." >&2;}
-fi
-
-if test -z "$FONTSSUBDIRS"
-then
-  echo >&2
-  if test "$FONTFORGE" = "false"
-  then
-    { echo "$as_me:$LINENO: WARNING: FontForge is missing." >&5
-echo "$as_me: WARNING: FontForge is missing." >&2;}
-  else
-    { echo "$as_me:$LINENO: WARNING: FreeType is missing." >&5
-echo "$as_me: WARNING: FreeType is missing." >&2;}
-  fi
-  { echo "$as_me:$LINENO: WARNING: Fonts will not be built. Dialog text may be invisible or unaligned." >&5
-echo "$as_me: WARNING: Fonts will not be built. Dialog text may be invisible or unaligned." >&2;}
-fi
-
-if test -z "$ALSALIBS" -a \
-        -z "$AUDIOIOLIBS" -a \
-        -z "$NASLIBS" -a \
-        -z "$ESD_LIBS" -a \
-        -z "$ac_cv_lib_soname_jack" -a \
-        "$ac_cv_header_sys_soundcard_h" != "yes" -a \
-        "$ac_cv_header_machine_soundcard_h" != "yes" -a \
-        "$ac_cv_header_soundcard_h" != "yes"
-then
-  echo >&2
-  { echo "$as_me:$LINENO: WARNING: No sound system was found. Windows applications will be silent." >&5
-echo "$as_me: WARNING: No sound system was found. Windows applications will be silent." >&2;}
-  { echo "$as_me:$LINENO: WARNING: The currently supported sound systems are:" >&5
-echo "$as_me: WARNING: The currently supported sound systems are:" >&2;}
-  { echo "$as_me:$LINENO: WARNING: ALSA, EsounD, AudioIO, Jack, NAS and OSS" >&5
-echo "$as_me: WARNING: ALSA, EsounD, AudioIO, Jack, NAS and OSS" >&2;}
-fi
+done
+IFS="$ac_save_IFS"
 
 echo
 echo "Configure finished.  Do '${ac_make} depend && ${ac_make}' to compile Wine."
diff --git a/configure.ac b/configure.ac
index 394d671..a5010c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -530,6 +530,8 @@
               AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
         fi
+        WINE_NOTICE_IF([test "$ac_cv_lib_Xext_XShmQueryExtension" != "yes"],[XShm development files not found.
+Wine will be built without XShm support. (winex11.drv)])
 
         dnl *** Check for X shape extension
         if test "$ac_cv_header_X11_extensions_shape_h" = "yes"
@@ -538,6 +540,8 @@
 	      AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
 	      $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
         fi
+        WINE_NOTICE_IF([test "$ac_cv_lib_Xext_XShapeQueryExtension" != "yes"],[XShape development files not found.
+Wine will be built without XShape support. (winex11.drv)])
 
         dnl *** Check for XFree86 VMODE extension
         if test "$ac_cv_header_X11_extensions_xf86vmode_h" = "yes"
@@ -548,6 +552,8 @@
                   ],,
                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
         fi
+        WINE_NOTICE_IF([test "$ac_cv_lib_Xxf86vm_XF86VidModeQueryExtension" != "yes"],[Xxf86vm development files not found.
+Wine will be built without XF86 Vidmode support. (winex11.drv)])
 
         dnl *** Check for Transform functions in Xrender
         if test "$ac_cv_header_X11_extensions_Xrender_h" = "yes" -a "x$ac_cv_lib_soname_X11" != "x" -a "x$ac_cv_lib_soname_Xext" != "x"
@@ -559,6 +565,8 @@
                 [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])],,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])
 
         fi
+        WINE_NOTICE_IF([test "x$ac_cv_lib_soname_Xrender" = "x"],[XRender development files not found.
+Wine will be built without XRender support. (winex11.drv)])
 
         dnl *** Check for X RandR extension
         if test "$ac_cv_header_X11_extensions_Xrandr_h" = "yes" -a "x$ac_cv_lib_soname_Xrender" != "x"
@@ -567,6 +575,8 @@
 #include <X11/extensions/Xrandr.h>]], [[static typeof(XRRSetScreenConfigAndRate) * func;]])],
                   [WINE_CHECK_SONAME(Xrandr,XRRQueryExtension,,,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])])
         fi
+        WINE_NOTICE_IF([test "x$ac_cv_lib_soname_Xrandr" = "x"],[XRandr development files not found.
+Wine will be built without XRandr support. (winex11.drv)])
 
         dnl *** Check for Xinerama extension
         if test "$ac_cv_header_X11_extensions_Xinerama_h" = "yes"
@@ -575,6 +585,8 @@
 #include <X11/extensions/Xinerama.h>]], [[static typeof(XineramaQueryScreens) * func;]])],
                   [WINE_CHECK_SONAME(Xinerama,XineramaQueryScreens,,,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])])
         fi
+        WINE_NOTICE_IF([test "x$ac_cv_lib_soname_Xinerama" = "x"],[Xinerama development files not found.
+Wine will be built without Xinerama support. (winex11.drv)])
 
     dnl *** End of X11/Xlib.h check
 
@@ -599,22 +611,33 @@
 		WINE_CHECK_SONAME(GL,glXCreateContext,
 			     [OPENGL_LIBS="-lGL"
                              OPENGLFILES='$(OPENGLFILES)'
-                             AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])]
-			     ,,
-			     [$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS])
+                             AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])],
+                             [if test -f /usr/X11R6/lib/libGL.a
+                              then
+                                  WINE_WARNING([/usr/X11R6/lib/libGL.a is present on your system.
+This probably prevents linking to OpenGL. Try deleting the file and restarting configure.])
+                              else
+                                  WINE_WARNING([No OpenGL library found on this system.
+Wine will be build without OpenGL or Direct3D support.])
+                              fi],
+			     $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
 
 	        dnl Check for GLU32 library.
 		AC_CHECK_LIB(GLU,gluLookAt,
 			     [OPENGL_LIBS="$OPENGL_LIBS -lGLU"
 			     GLU32FILES='$(GLU32FILES)']
 			     ,,
-			     $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
-		)
+			     $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
+             else
+                 WINE_WARNING([Old Mesa headers detected. Consider upgrading your Mesa libraries (http://www.mesa3d.org/).
+Wine will be build without OpenGL or Direct3D support.])
 	     fi
          else
-             wine_cv_opengl_headers_found="no"
+             WINE_WARNING([OpenGL development headers not found.
+Wine will be build without OpenGL or Direct3D support.])
 	 fi
     fi
+
     dnl **** Check for NAS ****
     AC_SUBST(NASLIBS,"")
     AC_CHECK_HEADERS(audio/audiolib.h,
@@ -634,6 +657,9 @@
     XLIB=""
     X_CFLAGS=""
     X_LIBS=""
+    WINE_WARNING([X development files not found. Wine will be built
+without X support, which probably isn't what you want. You will need to install
+development packages of Xlib/Xfree86 at the very least.])
 fi
 
 dnl **** Check for libxml2 ****
@@ -663,6 +689,9 @@
             [AC_DEFINE(HAVE_XMLNEWDOCPI,1,[Define if libxml2 has the xmlNewDocPI function])],,$ac_xml_libs)
     ])
 CPPFLAGS="$ac_save_CPPFLAGS"
+WINE_NOTICE_IF([test "$ac_cv_lib_xml2_xmlParseMemory" != "yes"],[libxml2 development files not found.
+Wine will be built without XML support. (msxml.dll)])
+
 if test "$PKG_CONFIG" != "false"
 then
     ac_xslt_libs="`$PKG_CONFIG --libs libxslt 2>/dev/null`"
@@ -682,6 +711,8 @@
 # include <libxslt/pattern.h>
 #endif])
 CPPFLAGS="$ac_save_CPPFLAGS"
+WINE_NOTICE_IF([test "$ac_cv_lib_xslt_xsltCompilePattern" != "yes"],[libxslt development files not found.
+Wine will be built without xslt support. (msxml.dll)])
 
 dnl **** Check for libhal ****
 AC_SUBST(HALINCL,"")
@@ -700,6 +731,8 @@
     fi
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+WINE_NOTICE_IF([test "x$ac_cv_lib_soname_hal" = "x"],[libhal development files not found.
+Wine will be built without dynamic device support. (explorer.exe)])
 
 dnl **** Check which curses lib to use ***
 CURSESLIBS=""
@@ -714,6 +747,8 @@
 LIBS="$LIBS $CURSESLIBS"
 AC_CHECK_FUNCS(mousemask)
 LIBS="$ac_save_LIBS"
+WINE_NOTICE_IF([test "x$ac_cv_lib_soname_curses$ac_cv_lib_soname_ncurses" = "x"],[lib(n)curses development files not found.
+Wine will be built without (n)curses support. (wineconsole.exe)])
 
 dnl **** Check for SANE ****
 AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
@@ -726,37 +761,36 @@
         [WINE_CHECK_SONAME(sane,sane_init,[AC_SUBST(SANEINCL,"$ac_sane_incl")])])
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+WINE_NOTICE_IF([test "x$ac_cv_lib_soname_sane" = "x"],[libsane development files not found.
+Wine will be built without scanner support. (sane.ds/twain_32.dll)])
 
 dnl **** Check for libgphoto2 ****
 AC_CHECK_PROG(gphoto2_devel,gphoto2-config,gphoto2-config,no)
 AC_CHECK_PROG(gphoto2port_devel,gphoto2-port-config,gphoto2-port-config,no)
-AC_SUBST(GPHOTO2LIBS,"")
-AC_SUBST(GPHOTO2INCL,"")
 if test "$gphoto2_devel" != "no" -a "$gphoto2port_devel" != "no"
 then
-    GPHOTO2INCL="`$gphoto2_devel --cflags` `$gphoto2port_devel --cflags`"
-    GPHOTO2LIBS=""
+    ac_gphoto2_incl="`$gphoto2_devel --cflags` `$gphoto2port_devel --cflags`"
+    ac_gphoto2_libs=""
     for i in `$gphoto2_devel --libs` `$gphoto2port_devel --libs`
     do
       case "$i" in
         -L/usr/lib|-L/usr/lib64) ;;
-        -L*|-l*) GPHOTO2LIBS="$GPHOTO2LIBS $i";;
+        -L*|-l*) ac_gphoto2_libs="$ac_gphoto2_libs $i";;
       esac
     done
     ac_save_CPPFLAGS="$CPPFLAGS"
-    ac_save_LIBS="$LIBS"
-    CPPFLAGS="$CPPFLAGS $GPHOTO2INCL"
-    LIBS="$LIBS $GPHOTO2LIBS"
+    CPPFLAGS="$CPPFLAGS $ac_gphoto2_incl"
     AC_CHECK_HEADER(gphoto2-camera.h,
                     [AC_CHECK_LIB(gphoto2,gp_camera_new,
-                                  [AC_DEFINE(HAVE_GPHOTO2, 1, [Define if we have libgphoto2 development environment])],
-                                  [GPHOTO2LIBS=""
-                                  GPHOTO2INCL=""])],
-                    [GPHOTO2LIBS=""
-                    GPHOTO2INCL=""])
-    LIBS="$ac_save_LIBS"
+                                  [AC_DEFINE(HAVE_GPHOTO2, 1, [Define if we have libgphoto2 development environment])
+                                   AC_SUBST(GPHOTO2LIBS,"$ac_gphoto2_libs")
+                                   AC_SUBST(GPHOTO2INCL,"$ac_gphoto2_incl")],,
+                                  [$GPHOTO2LIBS])])
     CPPFLAGS="$ac_save_CPPFLAGS"
 fi
+WINE_NOTICE_IF([test "$ac_cv_lib_gphoto2_gp_camera_new" != "yes"],[libgphoto2 development files not found.
+Wine will be built without Digital Camera support. (gphoto2.ds/twain_32.dll)])
+
 
 dnl **** Check for the ICU library ****
 if test "$ac_cv_header_unicode_ubidi_h" = "yes"
@@ -775,6 +809,8 @@
                  AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
     LIBS="$saved_libs"
 fi
+WINE_NOTICE_IF([test "x$ICULIBS" = "x"],[libicu development files not found.
+Wine will be built without bidi (Right to Left) support. (gdi32.dll)])
 
 dnl **** Check for resolver library ***
 AC_SUBST(RESOLVLIBS,"")
@@ -793,6 +829,8 @@
         [AC_DEFINE(HAVE_LCMS, 1, [Define if you have the LittleCMS development environment])
          LCMSLIBS="-llcms"])
 fi
+WINE_NOTICE_IF([test "$ac_cv_lib_lcms_cmsOpenProfileFromFile" = "yes"],[liblcms development files not found.
+Wine will be built without Color Management support. (mscms.dll)])
 
 dnl **** Check for OpenLDAP ***
 AC_SUBST(LDAPLIBS,"")
@@ -811,9 +849,10 @@
 	ldap_parse_reference,
         [$LDAPLIBS $LIBPTHREAD])
 fi
+WINE_NOTICE_IF([test "x$LDAPLIBS" = "x"],[libldap (OpenLDAP) development files not found.
+Wine will be built without LDAP support. (wldap32.dll)])
 
 dnl **** Check for FreeType 2 ****
-wine_cv_msg_freetype=yes
 AC_CHECK_PROGS(ft_devel,[freetype-config freetype2-config],false)
 if test "$ft_devel" != "false"
 then
@@ -854,14 +893,20 @@
 	    AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
             AC_SUBST(FREETYPELIBS,"$ac_freetype_libs")
             AC_SUBST(FREETYPEINCL,"$ac_freetype_incl")
-	    wine_cv_msg_freetype=no
 	fi
     fi
 fi
 
 dnl Only build the fonts dir if we have both freetype and fontforge
-if test "$FONTFORGE" != "false" -a -n "$FREETYPELIBS"
+if test "$FONTFORGE" = "false"
 then
+    WINE_WARNING([FontForge is missing.
+Fonts will not be built. Dialog text may be invisible or unaligned.])
+elif test "x$FREETYPELIBS" = "x"
+then
+    WINE_WARNING([FreeType development files not found.
+Fonts will not be built. Dialog text may be invisible or unaligned.])
+else
   AC_SUBST(FONTSSUBDIRS,"fonts")
 fi
 
@@ -951,7 +996,6 @@
 fi
 
 dnl **** Check for libaudioio (which can be used to get solaris audio support) ****
-
 AC_SUBST(AUDIOIOLIBS,"")
 if test "$ac_cv_header_libaudioio_h" = "yes"
 then
@@ -966,12 +1010,16 @@
 then
     WINE_CHECK_SONAME(capi20,capi20_register)
 fi
+WINE_NOTICE_IF([test "x$ac_cv_lib_soname_capi20" = "x"],[libcapi20 development files not found.
+Wine will be built without ISDN support. (capi2032.dll)])
 
 dnl **** Check for cups ****
 if test "$ac_cv_header_cups_cups_h" = "yes"
 then
     WINE_CHECK_SONAME(cups,cupsGetDefault)
 fi
+WINE_NOTICE_IF([test "x$ac_cv_lib_soname_cups" = "x"],[libcups development files not found.
+Wine will be built without CUPS support.])
 
 dnl **** Check for jack ****
 if test "$ac_cv_header_jack_jack_h" = "yes"
@@ -1004,6 +1052,13 @@
     WINE_CHECK_SONAME(png,png_create_read_struct,,,,[[libpng[[0-9]]*]])
 fi
 
+dnl **** Check for any sound system ****
+WINE_WARNING_IF([test "x$ALSALIBS$AUDIOIOLIBS$COREAUDIO$NASLIBS$ESD_LIBS$ac_cv_lib_soname_jack" = "x" -a \
+                 "$ac_cv_header_sys_soundcard_h" != "yes" -a \
+                 "$ac_cv_header_machine_soundcard_h" != "yes" -a \
+                 "$ac_cv_header_soundcard_h" != "yes"],
+[No sound system was found. Windows applications will be silent.])
+
 dnl **** Check for gcc specific options ****
 
 AC_SUBST(EXTRACFLAGS,"")
@@ -1816,221 +1871,12 @@
 
 AC_OUTPUT
 
-dnl **** Display messages about additional packages ***
-
 if test "$no_create" = "yes"
 then
   exit 0
 fi
 
-if test "$verbose" = "yes"
-then
-  dnl **** libcapi20-dev devel package ***
-  if test "$ac_cv_header_capi20_h" != "yes" -o "$ac_cv_header_linux_capi_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libcapi20 development files not found.])
-    AC_MSG_NOTICE([Wine will be built without ISDN support. (capi2032.dll)])
-  fi
-
-  dnl **** libcupsys-dev devel package ***
-  if test "$ac_cv_header_cups_cups_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libcups development files not found.])
-    AC_MSG_NOTICE([Wine will be built without CUPS support.])
-  fi
-
-  dnl **** libcurses devel package: see libncurses ***
-  dnl **** libdbus-1 devel package ***
-  dnl **** libdbus-1-dev is required for libhal-dev ***
-
-  dnl **** libgphoto2 devel package ***
-  if test "$ac_cv_header_gphoto2_camera_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libgphoto2 development files not found.])
-    if test "$ac_cv_header_sane_sane_h" = "yes"
-    then
-      AC_MSG_NOTICE([Wine will be built with limited Digital Camera support. (twain_32.dll)])
-    else
-      AC_MSG_NOTICE([Wine will be built without Digital Camera support. (gphoto2.ds/twain_32.dll)])
-    fi
-  fi
-
-  dnl **** libhal devel package ***
-  dnl **** libhal-dev depends on libdbus-1-dev ***
-  if test "$ac_cv_header_hal_libhal_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libhal development files not found.])
-    AC_MSG_NOTICE([Wine will be built without dynamic device support. (explorer.exe)])
-  fi
-
-  dnl **** libicu devel package ****
-  if test "$ac_cv_header_unicode_ubidi_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libicu development files not found.])
-    AC_MSG_NOTICE([Wine will be built without bidi (Right to Left) support. (gdi32.dll)])
-  fi
-
-  dnl **** liblcms devel package ****
-  if test "$ac_cv_header_lcms_h" != "yes" -a "$ac_cv_header_lcms_lcms_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([liblcms development files not found.])
-    AC_MSG_NOTICE([Wine will be built without Color Management support. (mscms.dll)])
-  fi
-
-  dnl **** libldap devel package ****
-  if test "$ac_cv_header_ldap_h" != "yes" -o "$ac_cv_header_lber_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libldap (OpenLDAP) development files not found.])
-    AC_MSG_NOTICE([Wine will be built without LDAP support. (wldap32.dll)])
-  fi
-
-  dnl **** libncurses / libcurses devel package ***
-  if test "x$with_curses" != "xno" -a "$ac_cv_header_ncurses_h" != "yes" -a "$ac_cv_header_curses_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([lib(n)curses development files not found.])
-    AC_MSG_NOTICE([Wine will be built without (n)curses support. (wineconsole.exe)])
-  fi
-
-  dnl **** libsane devel package ***
-  if test "$ac_cv_header_sane_sane_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libsane development files not found.])
-    AC_MSG_NOTICE([Wine will be built without Scanner support. (sane.ds/twain_32.dll)])
-  fi
-
-  dnl **** libX11-dev includes Xlib.h and Xutil.h and depends on ***
-  dnl **** x11proto-input-dev (extensions/XInput.h) and x11proto-kb-dev (XKBlib.h) ***
-  if test "$have_x" = "yes"
-  then
-    dnl **** libX11 - extension: Xext ***
-    if test "$ac_cv_header_X11_extensions_shape_h" != "yes" -o "$ac_cv_header_X11_extensions_XShm_h" != "yes"
-    then
-      echo >&2
-      AC_MSG_NOTICE([libxext development files not found.])
-      AC_MSG_NOTICE([Wine will be built without Shm / Shape support. (winex11.drv)])
-    fi
-
-    dnl **** libX11 - extension: Xrandr ***
-    if test "$ac_cv_header_X11_extensions_Xrandr_h" != "yes"
-    then
-      echo >&2
-      AC_MSG_NOTICE([libXrandr development files not found.])
-      AC_MSG_NOTICE([Wine will be built without Xrandr support. (winex11.drv)])
-    fi
-
-    dnl **** libX11 - extension: Xrender ***
-    if test "$ac_cv_header_X11_extensions_Xrender_h" != "yes"
-    then
-      echo >&2
-      AC_MSG_NOTICE([libXrender development files not found.])
-      AC_MSG_NOTICE([Wine will be built without Xrender support. (winex11.drv)])
-    fi
-
-    dnl **** libX11 - extension: Xxf86vm ***
-    if test "$ac_cv_header_X11_extensions_xf86vmode_h" != "yes"
-    then
-      echo >&2
-      AC_MSG_NOTICE([libXxf86vm development files not found.])
-      AC_MSG_NOTICE([Wine will be built without XFree86-VidMode support. (winex11.drv)])
-    fi
-  fi
-
-  dnl **** libxml2 devel package ***
-  if test "$ac_cv_header_libxml_parser_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libxml2 development files not found.])
-    AC_MSG_NOTICE([Wine will be built without XML support. (msxml.dll)])
-  fi
-
-  dnl **** libxslt devel package ***
-  if test "$ac_cv_header_libxslt_pattern_h" != "yes" -o "$ac_cv_header_libxslt_transform_h" != "yes"
-  then
-    echo >&2
-    AC_MSG_NOTICE([libxslt development files not found.])
-    AC_MSG_NOTICE([Wine will be built without xslt support. (msxml.dll)])
-  fi
-fi
-
-
-dnl **** Display warnings about important packages ***
-if test "$have_x" = "no"
-then
-  echo >&2
-  AC_MSG_WARN([X development files not found. Wine will be built without])
-  AC_MSG_WARN([X support, which currently does not work, and probably])
-  AC_MSG_WARN([isn't what you want anyway. You will need to install devel])
-  AC_MSG_WARN([ packages of Xlib/Xfree86 at the very least.])
-fi
-
-if test -z "$OPENGLFILES"
-then
-  echo >&2
-  AC_MSG_WARN([Wine will be build without OpenGL or Direct3D support])
-  AC_MSG_WARN([because something is wrong with the OpenGL setup:])
-  if test "$wine_cv_opengl_headers_found" = "no"
-  then
-    AC_MSG_WARN([No OpenGL development headers were found])
-  fi
-  if test "$wine_cv_opengl_header_version_OK" = "no"
-  then
-    AC_MSG_WARN([Old Mesa headers detected. Consider upgrading your Mesa libraries (http://www.mesa3d.org/).])
-  elif test "$ac_cv_lib_GL_glXCreateContext" = "no"
-  then
-     if test -f /usr/X11R6/lib/libGL.a
-     then 
-        AC_MSG_WARN([/usr/X11R6/lib/libGL.a is present on your system.
-This probably prevents linking to OpenGL. Try deleting the file and restarting configure.])
-     else
-        AC_MSG_WARN([No OpenGL library found on this system.])
-     fi
-  fi
-fi
-
-if test "$wine_cv_msg_freetype" = "yes"
-then
-  echo >&2
-  AC_MSG_WARN([Your system appears to have the FreeType 2 runtime libraries])
-  AC_MSG_WARN([installed, but 'freetype-config' is not in your PATH. Install])
-  AC_MSG_WARN([the freetype-devel package (or its equivalent on your distribution)])
-  AC_MSG_WARN([to enable Wine to use TrueType fonts.])
-fi
-
-if test -z "$FONTSSUBDIRS"
-then
-  echo >&2
-  if test "$FONTFORGE" = "false"
-  then
-    AC_MSG_WARN([FontForge is missing.])
-  else
-    AC_MSG_WARN([FreeType is missing.])
-  fi
-  AC_MSG_WARN([Fonts will not be built. Dialog text may be invisible or unaligned.])
-fi
-
-if test -z "$ALSALIBS" -a \
-        -z "$AUDIOIOLIBS" -a \
-        -z "$NASLIBS" -a \
-        -z "$ESD_LIBS" -a \
-        -z "$ac_cv_lib_soname_jack" -a \
-        "$ac_cv_header_sys_soundcard_h" != "yes" -a \
-        "$ac_cv_header_machine_soundcard_h" != "yes" -a \
-        "$ac_cv_header_soundcard_h" != "yes"
-then
-  echo >&2
-  AC_MSG_WARN([No sound system was found. Windows applications will be silent.])
-  AC_MSG_WARN([The currently supported sound systems are:])
-  AC_MSG_WARN([ALSA, EsounD, AudioIO, Jack, NAS and OSS])
-fi
+WINE_PRINT_MESSAGES
 
 echo
 echo "Configure finished.  Do '${ac_make} depend && ${ac_make}' to compile Wine."
