diff --git a/unix/configure b/unix/configure
index 564099a..a9796d2 100755
--- a/unix/configure
+++ b/unix/configure
@@ -271,7 +271,7 @@
 PACKAGE_STRING=
 PACKAGE_BUGREPORT=
 
-ac_unique_file="vncviewer_unix/vncviewer.cxx"
+ac_unique_file="vncviewer/vncviewer.cxx"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
@@ -309,7 +309,7 @@
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS PACKAGE VERSION CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB SET_MAKE MITSHM_DEFINE CXXCPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS ZLIB_DIR ZLIB_INCLUDE ZLIB_LIB JPEG_DIR JPEG_INCLUDE JPEG_LIB VNCCONFIG_DIR XTEST_DEFINE XTEST_LIB READDISPLAY_DEFINE VSNPRINTF_DEFINE STRCASECMP_DEFINE STRNCASECMP_DEFINE INET_LIB SOCKLEN_T_DEFINE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS PACKAGE VERSION CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB SET_MAKE MITSHM_DEFINE CXXCPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS ZLIB_DIR ZLIB_INCLUDE ZLIB_LIB JPEG_DIR JPEG_INCLUDE JPEG_LIB VNCCONFIG_DIR XTEST_DEFINE XTEST_LIB READDISPLAY_DEFINE INET_LIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1339,6 +1339,10 @@
 
 
 
+echo "configuring common..."
+(cd ../common; ./configure $*)
+echo "...done configuring common"
+
 ac_cv_prog_cc_g=no
 ac_cv_prog_cxx_g=no
 
@@ -4416,12 +4420,9 @@
   echo "using installed zlib"
   ZLIB_LIB=-lz
 else
-  ZLIB_DIR=zlib
-  ZLIB_INCLUDE='-I$(top_srcdir)/zlib'
-  ZLIB_LIB='$(top_srcdir)/zlib/libz.a'
-  echo "configuring zlib..."
-  (cd zlib; ./configure)
-  echo "...done configuring zlib"
+  ZLIB_DIR='$(COMMON)/zlib'
+  ZLIB_INCLUDE='-I$(COMMON)/zlib'
+  ZLIB_LIB='$(COMMON)/zlib/libz.a'
 fi
 
 
@@ -4439,12 +4440,9 @@
   echo "using installed jpeg"
   JPEG_LIB=-ljpeg
 else
-  JPEG_DIR=jpeg/build
-  JPEG_INCLUDE='-I$(top_srcdir)/jpeg'
-  JPEG_LIB='$(top_srcdir)/jpeg/build/libjpeg.a'
-  echo "configuring jpeg..."
-  (mkdir jpeg/build; cd jpeg/build; ../configure)
-  echo "...done configuring jpeg"
+  JPEG_DIR='$(COMMON)/jpeg/build'
+  JPEG_INCLUDE='-I$(COMMON)/jpeg'
+  JPEG_LIB='$(COMMON)/jpeg/build/libjpeg.a'
 fi
 
 
@@ -4460,7 +4458,7 @@
   echo "vncconfig utility will not be built"
   VNCCONFIG_DIR=
 else
-  VNCCONFIG_DIR='vncconfig_unix'
+  VNCCONFIG_DIR='vncconfig'
 fi
 
 
@@ -4554,300 +4552,6 @@
 fi
 
 
-echo "$as_me:$LINENO: checking for vsnprintf" >&5
-echo $ECHO_N "checking for vsnprintf... $ECHO_C" >&6
-if test "${ac_cv_func_vsnprintf+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define vsnprintf to an innocuous variant, in case <limits.h> declares vsnprintf.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define vsnprintf innocuous_vsnprintf
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vsnprintf (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef vsnprintf
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char vsnprintf ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_vsnprintf) || defined (__stub___vsnprintf)
-choke me
-#else
-char (*f) () = vsnprintf;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != vsnprintf;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_vsnprintf=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_vsnprintf=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_vsnprintf" >&5
-echo "${ECHO_T}$ac_cv_func_vsnprintf" >&6
-if test $ac_cv_func_vsnprintf = yes; then
-  VSNPRINTF_DEFINE='-DHAVE_VSNPRINTF'
-else
-  VSNPRINTF_DEFINE=
-fi
-
-
-
-echo "$as_me:$LINENO: checking for strcasecmp" >&5
-echo $ECHO_N "checking for strcasecmp... $ECHO_C" >&6
-if test "${ac_cv_func_strcasecmp+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define strcasecmp to an innocuous variant, in case <limits.h> declares strcasecmp.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define strcasecmp innocuous_strcasecmp
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char strcasecmp (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef strcasecmp
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strcasecmp ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_strcasecmp) || defined (__stub___strcasecmp)
-choke me
-#else
-char (*f) () = strcasecmp;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != strcasecmp;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_strcasecmp=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_strcasecmp=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_strcasecmp" >&5
-echo "${ECHO_T}$ac_cv_func_strcasecmp" >&6
-if test $ac_cv_func_strcasecmp = yes; then
-  STRCASECMP_DEFINE='-DHAVE_STRCASECMP'
-else
-  STRCASECMP_DEFINE=
-fi
-
-
-
-echo "$as_me:$LINENO: checking for strncasecmp" >&5
-echo $ECHO_N "checking for strncasecmp... $ECHO_C" >&6
-if test "${ac_cv_func_strncasecmp+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define strncasecmp to an innocuous variant, in case <limits.h> declares strncasecmp.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define strncasecmp innocuous_strncasecmp
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char strncasecmp (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef strncasecmp
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strncasecmp ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_strncasecmp) || defined (__stub___strncasecmp)
-choke me
-#else
-char (*f) () = strncasecmp;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != strncasecmp;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_strncasecmp=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_strncasecmp=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_strncasecmp" >&5
-echo "${ECHO_T}$ac_cv_func_strncasecmp" >&6
-if test $ac_cv_func_strncasecmp = yes; then
-  STRNCASECMP_DEFINE='-DHAVE_STRNCASECMP'
-else
-  STRNCASECMP_DEFINE=
-fi
-
-
-
 
 
 ac_ext=c
@@ -5033,61 +4737,6 @@
 
 
 
-echo "$as_me:$LINENO: checking for socklen_t" >&5
-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
- #include <sys/socket.h>
-int
-main ()
-{
-socklen_t x;
-accept(0, 0, &x);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=socklen_t'
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-echo "$as_me:$LINENO: result: using int" >&5
-echo "${ECHO_T}using int" >&6
-SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=int'
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
 ac_aux_dir=
 for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   if test -f $ac_dir/install-sh; then
@@ -11816,7 +11465,7 @@
   fi
 fi
 
-                                                                                                                        ac_config_files="$ac_config_files Makefile:Makefile.in:$BOILERPLATE intl/Makefile po/Makefile.in rdr/Makefile:rdr/Makefile.in:$BOILERPLATE network/Makefile:network/Makefile.in:$BOILERPLATE Xregion/Makefile:Xregion/Makefile.in:$BOILERPLATE rfb/Makefile:rfb/Makefile.in:$BOILERPLATE tx/Makefile:tx/Makefile.in:$BOILERPLATE x0vncserver/Makefile:x0vncserver/Makefile.in:$BOILERPLATE vncviewer_unix/Makefile:vncviewer_unix/Makefile.in:$BOILERPLATE vncconfig_unix/Makefile:vncconfig_unix/Makefile.in:$BOILERPLATE vncpasswd/Makefile:vncpasswd/Makefile.in:$BOILERPLATE"
+                                                                                ac_config_files="$ac_config_files Makefile:common.mk:Makefile.in:$BOILERPLATE tx/Makefile:common.mk:tx/Makefile.in:$BOILERPLATE x0vncserver/Makefile:common.mk:x0vncserver/Makefile.in:$BOILERPLATE vncviewer/Makefile:common.mk:vncviewer/Makefile.in:$BOILERPLATE vncconfig/Makefile:common.mk:vncconfig/Makefile.in:$BOILERPLATE vncpasswd/Makefile:common.mk:vncpasswd/Makefile.in:$BOILERPLATE intl/Makefile po/Makefile.in"
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -12384,18 +12033,14 @@
 do
   case "$ac_config_target" in
   # Handling of arguments.
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile:Makefile.in:$BOILERPLATE" ;;
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile:common.mk:Makefile.in:$BOILERPLATE" ;;
+  "tx/Makefile" ) CONFIG_FILES="$CONFIG_FILES tx/Makefile:common.mk:tx/Makefile.in:$BOILERPLATE" ;;
+  "x0vncserver/Makefile" ) CONFIG_FILES="$CONFIG_FILES x0vncserver/Makefile:common.mk:x0vncserver/Makefile.in:$BOILERPLATE" ;;
+  "vncviewer/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncviewer/Makefile:common.mk:vncviewer/Makefile.in:$BOILERPLATE" ;;
+  "vncconfig/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncconfig/Makefile:common.mk:vncconfig/Makefile.in:$BOILERPLATE" ;;
+  "vncpasswd/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncpasswd/Makefile:common.mk:vncpasswd/Makefile.in:$BOILERPLATE" ;;
   "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;;
   "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
-  "rdr/Makefile" ) CONFIG_FILES="$CONFIG_FILES rdr/Makefile:rdr/Makefile.in:$BOILERPLATE" ;;
-  "network/Makefile" ) CONFIG_FILES="$CONFIG_FILES network/Makefile:network/Makefile.in:$BOILERPLATE" ;;
-  "Xregion/Makefile" ) CONFIG_FILES="$CONFIG_FILES Xregion/Makefile:Xregion/Makefile.in:$BOILERPLATE" ;;
-  "rfb/Makefile" ) CONFIG_FILES="$CONFIG_FILES rfb/Makefile:rfb/Makefile.in:$BOILERPLATE" ;;
-  "tx/Makefile" ) CONFIG_FILES="$CONFIG_FILES tx/Makefile:tx/Makefile.in:$BOILERPLATE" ;;
-  "x0vncserver/Makefile" ) CONFIG_FILES="$CONFIG_FILES x0vncserver/Makefile:x0vncserver/Makefile.in:$BOILERPLATE" ;;
-  "vncviewer_unix/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncviewer_unix/Makefile:vncviewer_unix/Makefile.in:$BOILERPLATE" ;;
-  "vncconfig_unix/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncconfig_unix/Makefile:vncconfig_unix/Makefile.in:$BOILERPLATE" ;;
-  "vncpasswd/Makefile" ) CONFIG_FILES="$CONFIG_FILES vncpasswd/Makefile:vncpasswd/Makefile.in:$BOILERPLATE" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -12512,11 +12157,7 @@
 s,@XTEST_DEFINE@,$XTEST_DEFINE,;t t
 s,@XTEST_LIB@,$XTEST_LIB,;t t
 s,@READDISPLAY_DEFINE@,$READDISPLAY_DEFINE,;t t
-s,@VSNPRINTF_DEFINE@,$VSNPRINTF_DEFINE,;t t
-s,@STRCASECMP_DEFINE@,$STRCASECMP_DEFINE,;t t
-s,@STRNCASECMP_DEFINE@,$STRNCASECMP_DEFINE,;t t
 s,@INET_LIB@,$INET_LIB,;t t
-s,@SOCKLEN_T_DEFINE@,$SOCKLEN_T_DEFINE,;t t
 s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
 s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
 s,@INSTALL_DATA@,$INSTALL_DATA,;t t
