aboutsummaryrefslogtreecommitdiffstats
path: root/release
diff options
context:
space:
mode:
authorDRC <dcommander@users.sourceforge.net>2011-02-09 03:10:44 +0000
committerDRC <dcommander@users.sourceforge.net>2011-02-09 03:10:44 +0000
commit2b0b194c0474019cb220c1273a23fc163cbf1f48 (patch)
tree12c4c5cf60baeedab671c1b1e32a9201d7fbe29d /release
parentff1e1ff941a103a54a0d16682b4cadcc08e7642c (diff)
downloadtigervnc-2b0b194c0474019cb220c1273a23fc163cbf1f48.tar.gz
tigervnc-2b0b194c0474019cb220c1273a23fc163cbf1f48.zip
Modify Mac packaging to accommodate VeNCrypt-enabled builds or other customizations; Change build documentation accordingly
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4265 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'release')
-rw-r--r--release/BUILDING.txt93
-rw-r--r--release/makemacpkg.in (renamed from release/makemacpkg)37
2 files changed, 77 insertions, 53 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
diff --git a/release/makemacpkg b/release/makemacpkg.in
index da6a21c2..7b806f26 100644
--- a/release/makemacpkg
+++ b/release/makemacpkg.in
@@ -17,19 +17,22 @@ onexit()
usage()
{
- echo "$0 <package name> <version> <build> <source dir.> [universal]"
+ echo "$0 [universal [32-bit build dir]]"
exit 1
}
UNIVERSAL=0
-if [ $# -lt 4 ]; then usage $0; fi
-PACKAGE_NAME=$1
-VERSION=$2
-BUILD=$3
-SRCDIR=$4
-if [ $# -gt 4 ]; then
- if [ "$5" = "universal" ]; then UNIVERSAL=1; fi
+PACKAGE_NAME=@PACKAGE_NAME@
+VERSION=@VERSION@
+BUILD=@BUILD@
+SRCDIR=@srcdir@
+BUILDDIR32=@srcdir@/osxx86
+if [ $# -gt 0 ]; then
+ if [ "$1" = "universal" ]; then
+ UNIVERSAL=1
+ if [ $# -gt 1 ]; then BUILDDIR32=$2; fi
+ fi
fi
PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
@@ -46,18 +49,18 @@ mkdir -p $PKGROOT/opt/$PACKAGE_NAME/man/man1
install -m 755 unix/vncviewer/vncviewer $PKGROOT/opt/$PACKAGE_NAME/bin/
if [ $UNIVERSAL = 1 ]; then
- if [ ! -d $SRCDIR/osxx86 ]; then
- mkdir -p $SRCDIR/osxx86
+ if [ ! -d $BUILDDIR32 ]; then
+ echo ERROR: 32-bit build directory $BUILDDIR32 does not exist
+ exit 1
+ fi
+ if [ ! -f $BUILDDIR32/Makefile ]; then
+ echo ERROR: 32-bit build directory $BUILDDIR32 is not configured
+ exit 1
fi
- pushd $SRCDIR/osxx86
- sh $SRCDIR/configure \
- CC=gcc-4.0 CXX=g++-4.0 \
- CFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -O3 -m32' \
- CXXFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -O3 -m32' \
- LDFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -m32'
+ pushd $BUILDDIR32
make
popd
- lipo -create -arch i386 $SRCDIR/osxx86/unix/vncviewer/vncviewer -arch x86_64 \
+ lipo -create -arch i386 $BUILDDIR32/unix/vncviewer/vncviewer -arch x86_64 \
$PKGROOT/opt/$PACKAGE_NAME/bin/vncviewer \
-output $PKGROOT/opt/$PACKAGE_NAME/bin/vncviewer
fi