-- CMake (http://www.cmake.org) v2.8 or later
-- FLTK 1.3.0
- * Must be patched using fltk/extensions.patch to get full functionality
+ * Must be patched using fltk/extensions.patch (in the TigerVNC source
+ directory) to get full functionality
* See "Building FLTK" below.
-- If building TLS support:
* GnuTLS and its dependencies (libgcrypt, libtasn1, libgpg-error)
+-- If building native language support (NLS):
+ * Gnu gettext 0.14.4 or later
+ * See "Building Native Language Support" below.
+
-- libjpeg-turbo SDK
- * If your system does not include libjpeg-turbo, you can download the SDK
- from http://sourceforge.net/projects/libjpeg-turbo/files/
+ * If your system does not include libjpeg-turbo, then you can download the
+ SDK from http://sourceforge.net/projects/libjpeg-turbo/files/
=========================
to the CMake command line.
-====================
-Building TLS support
-====================
+======================================
+Building Native Language Support (NLS)
+======================================
+
+NLS requires gettext, which is supplied with most Linux distributions but not
+with most other operating systems. Building gettext from source is
+straightforward on Mac and other Unix variants, but on Windows it requires
+MinGW. Thus, it is not possible to enable NLS when building TigerVNC with
+Visual C++.
+
+You can override the ICONV_LIBRARIES and LIBINTL_LIBRARY CMake variables to
+specify the locations of libiconv and libintl, respectively. For instance,
+adding
+
+ -DLIBINTL_LIBRARY=/opt/gettext/lib/libintl.a
+
+to the CMake command line would link TigerVNC against a static version of
+libintl located under /opt/gettext. Adding
+
+ -DICONV_INCLUDE_DIR=/mingw/include \
+ -DICONV_LIBRARIES=/mingw/lib/libiconv.a \
+ -DGETTEXT_INCLUDE_DIR=/mingw/include \
+ -DLIBINTL_LIBRARY=/mingw/lib/libintl.a
+
+to the CMake command line would link TigerVNC against the static versions of
+libiconv and libintl included in the MinGW Developer Toolkit.
+
+
+===============================================
+Building Transport Layer Security (TLS) support
+===============================================
VeNCrypt (the TigerVNC security and authentication extensions) can be built
with TLS support, which provides built-in encryption for VNC sessions. This
-requires GnuTLS, which is not pre-installed on all platforms. This section
+requires GnuTLS, which is readily available in many Linux distributions but not
+as readily available in binary form on other types of systems. This section
describes the issues associated with building a version of TigerVNC with TLS
support and how to work around those issues.
TigerVNC that depends on the GnuTLS dynamic libraries, and thus the TigerVNC
binaries are not portable.
-To build a fully portable, cross-compatible version of TigerVNC with VeNCrypt
+To build a fully portable, cross-compatible version of TigerVNC with TLS
support, it is necessary to link against the GnuTLS static library (as well
as the static libraries of its dependencies.) If you are lucky enough, then
your O/S distribution may include pre-packaged versions of these static
libtasn1, and libgpg-error from source.
You can manipulate the GNUTLS_INCLUDE_DIR and GNUTLS_LIBRARY CMake variables to
-accommodate a custom build of GnuTLS that is installed in a non-system
-directory. For instance, adding
+build TigerVNC against a custom build of GnuTLS that is installed in a
+non-system directory. For instance, adding
-DGNUTLS_INCLUDE_DIR=/opt/gnutls/include \
-DGNUTLS_LIBRARY='/opt/gnutls/lib/libgnutls.a;/opt/gnutls/lib/libgcrypt.a;/opt/gnutls/lib/libgpg-error.a;/opt/gnutls/lib/libtasn1.a' \
to the CMake or 'build-xorg build' command line will cause TigerVNC to be
statically linked against a custom installation of GnuTLS that resides under
-/opt/gnutls. GnuTLS depends on zlib, so specifying --with-included-zlib will
+/opt/gnutls. GnuTLS depends on zlib, so specifying -DUSE_INCLUDED_ZLIB=1 will
satisfy that dependency using TigerVNC's in-tree version of zlib, which
prevents TigerVNC from depending on the libz dynamic library.