diff --git a/unix/configure.in b/unix/configure.in
new file mode 100644
index 0000000..9b58f27
--- /dev/null
+++ b/unix/configure.in
@@ -0,0 +1,198 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(vncviewer_unix/vncviewer.cxx)
+
+PACKAGE=tightvnc
+VERSION=1.5.0
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
+
+dnl dirty hack to prevent use of -g in CFLAGS and CXXFLAGS
+ac_cv_prog_cc_g=no
+ac_cv_prog_cxx_g=no
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_RANLIB
+AC_PROG_MAKE_SET
+AC_LANG_CPLUSPLUS
+
+case "`(uname -sr) 2>/dev/null`" in
+"SunOS 5"*)
+  SOLARIS=yes
+  USE_MITSHM=yes
+  USE_SUN_OVL=yes
+  ;;
+"Linux"*)
+  LINUX=yes
+  USE_MITSHM=yes
+  ;;
+"IRIX 6"*)
+  X_LIBS="-L/usr/lib32"
+  USE_MITSHM=yes
+  USE_READDISPLAY=yes
+  ;;
+"LynxOS 2"*)
+  SJLJ_EXCEPTIONS=yes
+  ;;
+esac
+
+dnl FIXME: Check for MIT-SHM properly, add a corresponding --with option.
+if test "$USE_MITSHM" = yes; then
+  MITSHM_DEFINE="-DHAVE_MITSHM"
+fi
+AC_SUBST(MITSHM_DEFINE)
+
+if test "$GCC" = yes; then
+  CFLAGS="$CFLAGS -Wall"
+  if test "$SOLARIS" = yes; then
+    CFLAGS="$CFLAGS -Wno-unknown-pragmas -Wno-implicit-int"
+  fi
+fi
+if test "$GXX" = yes; then
+  CXXFLAGS="$CXXFLAGS -Wall"
+  if test "$SOLARIS" = yes; then
+    CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -fpermissive"
+  fi
+  if test "$SJLJ_EXCEPTIONS" = yes; then
+    CXXFLAGS="$CXXFLAGS -fsjlj-exceptions"
+  fi
+fi
+
+AC_PATH_XTRA
+
+AC_ARG_WITH(installed-zlib,
+[  --with-installed-zlib   use the version of zlib which is installed on the
+                          system instead of the one distributed with VNC])
+
+if test "$with_installed_zlib" = yes; then
+  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"
+fi
+
+AC_SUBST(ZLIB_DIR)
+AC_SUBST(ZLIB_INCLUDE)
+AC_SUBST(ZLIB_LIB)
+
+AC_ARG_WITH(installed-jpeg,
+[  --with-installed-jpeg   use the version of jpeg which is installed on the
+                          system instead of the one distributed with VNC])
+
+if test "$with_installed_jpeg" = yes; then
+  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"
+fi
+
+AC_SUBST(JPEG_DIR)
+AC_SUBST(JPEG_INCLUDE)
+AC_SUBST(JPEG_LIB)
+
+AC_ARG_ENABLE(vncconfig,
+[  --enable-vncconfig      build the vncconfig utility (assumed by default),
+                          use --disable-vncconfig to skip building vncconfig])
+if test "$enable_vncconfig" = no; then
+  echo "vncconfig utility will not be built"
+  VNCCONFIG_DIR=
+else
+  VNCCONFIG_DIR='vncconfig_unix'
+fi
+AC_SUBST(VNCCONFIG_DIR)
+
+dnl Check for the XTest X11 extension library.
+AC_CHECK_LIB(Xtst,XTestGrabControl,USE_XTEST=yes,USE_XTEST=,
+["$X_LIBS" -lXext -lX11])
+if test "$USE_XTEST" = yes; then
+  XTEST_DEFINE='-DHAVE_XTEST'
+  XTEST_LIB=-lXtst
+else
+  echo Warning: No XTest extension, building x0vncserver view-only
+  XTEST_DEFINE=
+  XTEST_LIB=
+fi
+AC_SUBST(XTEST_DEFINE)
+AC_SUBST(XTEST_LIB)
+
+dnl Support for READDISPLAY (Irix) and SUN_OVL (Solaris) extensions
+dnl FIXME: Implement corresponding --with options.
+if test "$USE_READDISPLAY" = yes; then
+  READDISPLAY_DEFINE='-DHAVE_READDISPLAY'
+elif test "$USE_SUN_OVL" = yes; then
+  READDISPLAY_DEFINE='-DHAVE_SUN_OVL'
+else
+  READDISPLAY_DEFINE=
+fi
+AC_SUBST(READDISPLAY_DEFINE)
+
+AC_CHECK_FUNC(vsnprintf,VSNPRINTF_DEFINE='-DHAVE_VSNPRINTF',VSNPRINTF_DEFINE=)
+AC_SUBST(VSNPRINTF_DEFINE)
+
+AC_CHECK_FUNC(strcasecmp,STRCASECMP_DEFINE='-DHAVE_STRCASECMP',
+  STRCASECMP_DEFINE=)
+AC_SUBST(STRCASECMP_DEFINE)
+
+AC_CHECK_FUNC(strncasecmp,STRNCASECMP_DEFINE='-DHAVE_STRNCASECMP',
+  STRNCASECMP_DEFINE=)
+AC_SUBST(STRNCASECMP_DEFINE)
+
+dnl Under Lynx/OS 2.3, we have to link with -lbsd to resolve
+dnl gethostbyname, inet_addr, htons etc. Check if it's necessary.
+dnl NOTE: Did not want to use AC_SEARCH_LIBS which would add
+dnl   -lbsd to LIBS. We set INET_LIB instead.
+AC_LANG_SAVE
+AC_LANG_C
+AC_CHECK_FUNC(gethostbyname,INET_LIB_REQ=,INET_LIB_REQ=yes)
+if test "$INET_LIB_REQ" = yes; then
+  AC_CHECK_LIB(bsd,gethostbyname,INET_LIB=-lbsd,INET_LIB=)
+fi
+AC_LANG_RESTORE
+AC_SUBST(INET_LIB)
+
+AC_MSG_CHECKING(for socklen_t)
+AC_TRY_COMPILE(
+[#include <sys/types.h>
+ #include <sys/socket.h>],
+[socklen_t x;
+accept(0, 0, &x);],
+AC_MSG_RESULT(yes)
+SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=socklen_t',
+AC_MSG_RESULT(using int)
+SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=int')
+AC_SUBST(SOCKLEN_T_DEFINE)
+
+AM_GNU_GETTEXT
+
+BOILERPLATE=boilerplate.mk
+
+if (sh -c "make --version" 2>/dev/null | grep GNU 2>&1 >/dev/null); then
+  if sh -c "vncmkdepend" >/dev/null 2>&1; then
+    BOILERPLATE="$BOILERPLATE:depend.mk"
+  fi
+fi
+
+AC_OUTPUT(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 \
+)
