aboutsummaryrefslogtreecommitdiffstats
path: root/release/BUILDING.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release/BUILDING.txt')
-rw-r--r--release/BUILDING.txt93
1 files changed, 57 insertions, 36 deletions
diff --git a/release/BUILDING.txt b/release/BUILDING.txt
index 6c08bc31..3f580815 100644
--- a/release/BUILDING.txt
+++ b/release/BUILDING.txt
@@ -37,6 +37,9 @@ Build Requirements
* zlib v1.2 or later
* OpenSSL v0.9.7 or later
+-- If building VeNCrypt support:
+ * GnuTLS and its dependencies (libgcrypt, libtasn1, libgpg-error)
+
==================
Out-of-Tree Builds
@@ -58,8 +61,8 @@ Building TigerVNC
The following procedure will build the TigerVNC viewer on Linux and Unix
systems. On 64-bit systems, this may build a 32-bit version of TigerVNC,
-depending on the default compiler configuration for your system. See below for
-specific build instructions for 64-bit systems.
+depending on the default autotools configuration for your system. See below
+for specific build instructions for 64-bit systems.
cd {source_directory}
autoreconf -fiv
@@ -110,9 +113,9 @@ will clean both the Xvnc and vncviewer builds without destroying any of the
build configuration or module dependencies.
-==================================
-Build Recipes for Specific Systems
-==================================
+==================
+Unix Build Recipes
+==================
32-bit Build on 64-bit Linux
@@ -178,27 +181,39 @@ Add
to the configure command line. The OS X 10.4 SDK must be installed.
-Building VeNCrypt support on OS X
----------------------------------
-
-VeNCrypt requires GnuTLS, which is not available on OS X systems by default.
-However, it can be obtained from MacPorts (http://www.macports.org/). The
-easiest way to build TigerVNC using this version of GnuTLS is simply to
-modify the CPATH and LIBRARY_PATH environment variables to include /opt/local,
-i.e.:
-
-export CPATH=/opt/local/include
-export LIBRARY_PATH=/opt/local/lib
-
-and then build TigerVNC as you would normally. However, this produces run-time
-dependencies on the .dylib files in /opt/local/lib. To statically link with
-GnuTLS, add the following monstrosity to the configure command line:
+Building VeNCrypt support
+-------------------------
- GNUTLS_CFLAGS=-I/opt/local/include \
- GNUTLS_LDFLAGS='/opt/local/lib/libgnutls.a /opt/local/lib/libgcrypt.a \
- /opt/local/lib/libgpg-error.a /opt/local/lib/libz.a \
- /opt/local/lib/libtasn1.a /opt/local/lib/libiconv.a \
- /opt/local/lib/libintl.a -framework CoreFoundation'
+Building VeNCrypt (the TigerVNC security and authentication extensions)
+requires GnuTLS, which is not pre-installed on all platforms. In general, if
+you are building on a Unix-ish platform that has the GnuTLS libraries and
+include files installed in the standard system locations, then the TigerVNC
+build system should detect the system version of GnuTLS automatically and link
+against it. However, this produces a version of TigerVNC that depends on the
+GnuTLS dynamic libraries, and thus the binaries are not portable.
+
+To build a fully portable, cross-compatible version of TigerVNC with VeNCrypt
+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, your
+O/S distribution may include pre-packaged versions of both the static and
+dynamic libraries for GnuTLS and its dependencies. Otherwise, it will probably
+be necessary to build GnuTLS, libgcrypt, libtasn1, and libgpg-error from
+source.
+
+You can manipulate the GNUTLS_CFLAGS and GNUTLS_LDFLAGS configure variables to
+accommodate a custom build of GnuTLS that is installed in a non-system
+directory. For instance, adding
+
+ GNUTLS_CFLAGS=-I/opt/gnutls/include \
+ GNUTLS_LDFLAGS='/opt/gnutls/lib/libgnutls.a /opt/gnutls/lib/libgcrypt.a \
+ /opt/gnutls/lib/libgpg-error.a /opt/gnutls/lib/libtasn1.a' \
+ --with-included-zlib
+
+to the configure or build-xorg 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
+satisfy that depency using TigerVNC's in-source version of zlib, which
+eliminates another dynamic library dependency.
*******************************************************************************
@@ -251,6 +266,9 @@ Build Requirements
C:\Program Files\Inno Setup 5) to the system or user PATH environment
variable prior to building TigerVNC.
+-- If building VeNCrypt support:
+ * GnuTLS and its dependencies (libgcrypt, libtasn1, libgpg-error)
+
==================
Out-of-Tree Builds
@@ -337,9 +355,9 @@ If you don't specify CMAKE_INSTALL_PREFIX, then the default is
c:\Program Files\TigerVNC.
-=============
-Build Recipes
-=============
+=====================
+Windows Build Recipes
+=====================
64-bit MinGW Build on Cygwin
@@ -420,14 +438,17 @@ make dmg
Create Macintosh package/disk image. This requires the PackageMaker
application, which must be installed in /Developer/Applications/Utilities.
-make udmg
-
- On 64-bit OS X (10.5 "Leopard") and later, this creates a version of the
- Macintosh package/disk image which contains universal i386/x86-64 binaries.
- The 32-bit fork of these binaries is backward compatible with OS X 10.4 and
- later (OS X 10.4 compatibility SDK required.) If building on OS X 10.6
- ("Snow Leopard") or later, the 64-bit fork can be made backward compatible
- with 10.5 by using the instructions in the "Build Recipes" section.
+make udmg [BUILDDIR32={32-bit build directory}]
+
+ On 64-bit OS X systems, this creates a version of the Macintosh package and
+ disk image which contains universal i386/x86-64 binaries. You should first
+ configure a 32-bit out-of-tree build of TigerVNC, then configure a 64-bit
+ out-of-tree build, then run 'make udmg' from the 64-bit build directory. The
+ build system will look for the 32-bit build under {source_directory}/osxx86
+ by default, but you can override this by setting the BUILDDIR32 variable on
+ the make command line as shown above. Either the 64-bit or 32-bit build can
+ be configured to be backward-compatible by using the instructions in the
+ "Unix Build Recipes" section.
Windows