123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- *******************************************************************************
- ** Building TigerVNC
- *******************************************************************************
-
-
- ================================
- Build Requirements (All Systems)
- ================================
-
- -- CMake (http://www.cmake.org) v2.8 or later
-
- -- zlib
-
- -- FLTK 1.3.3 or later
-
- -- If building TLS support:
- * GnuTLS 3.x
- * See "Building TLS Support" below.
-
- -- If building native language support (NLS):
- * Gnu gettext 0.14.4 or later
- * See "Building Native Language Support" below.
-
- -- libjpeg-turbo
- * "Normal" libjpegv6 is also supported, although it is not
- recommended as it is much slower.
-
-
- =========================
- Build Requirements (Unix)
- =========================
-
- -- Non-Mac platforms:
- * X11 development kit
-
- -- If building Xvnc/libvnc.so:
- * Xorg server source code, 1.7 or never
- * All build requirements Xorg imposes (see its documentation)
-
- ============================
- Build Requirements (Windows)
- ============================
-
- -- MinGW or MinGW-w64
-
- -- Inno Setup (needed to build the TigerVNC installer)
- Inno Setup can be downloaded from http://www.jrsoftware.org/isinfo.php.
- You also need the Inno Setup Preprocessor, which is available in the
- Inno Setup QuickStart Pack.
-
- Add the directory containing iscc.exe (for instance,
- C:\Program Files\Inno Setup 5) to the system or user PATH environment
- variable prior to building TigerVNC.
-
-
- =========================
- Build Requirements (Java)
- =========================
-
- -- Sun/Oracle JDK 1.7 or later or OpenJDK 7 or later
-
- -- See "Building Java Support" below.
-
-
- ==================
- Out-of-Tree Builds
- ==================
-
- Binary objects, libraries, and executables are generated in the same directory
- from which cmake was executed (the "binary directory"), and this directory need
- not necessarily be the same as the TigerVNC source directory. You can create
- multiple independent binary directories, in which different versions of
- TigerVNC can be built from the same source tree using different compilers or
- settings. In the sections below, {build_directory} refers to the binary
- directory, whereas {source_directory} refers to the TigerVNC source directory.
- For in-tree builds, these directories are the same.
-
-
- =================
- Building TigerVNC
- =================
-
-
- Building the TigerVNC Viewer on Unix/Mac Systems
- ------------------------------------------------
-
- The following procedure will build the TigerVNC Viewer on Linux and Unix
- systems. On 64-bit systems, this will build a 64-bit version of TigerVNC. See
- "Build Recipes" for specific build instructions for building a 32-bit version
- of TigerVNC on 64-bit systems.
-
- cd {build_directory}
- cmake -G "Unix Makefiles" [additional CMake flags] {source_directory}
- make
-
-
- Building the TigerVNC Server on Modern Unix/Linux Systems
- ---------------------------------------------------------
-
- Building the TigerVNC Server (Xvnc) is a bit trickier. On newer systems
- containing Xorg 7.4 or later (such as Fedora), Xvnc is typically built to use
- the X11 shared libraries provided with the system. The procedure for this is
- system-specific, since it requires specifying such things as font directories,
- but the general outline is as follows (this procedure assumes that the viewer
- has already been built, per above.)
-
- > cd {build_directory}
-
- If performing an out-of-tree build:
- > mkdir unix
- > cp -R {source_directory}/unix/xserver unix/
-
- > cp -R {xorg_source}/* unix/xserver/
- (NOTE: {xorg_source} is the directory containing the Xorg source for the
- machine on which you are building TigerVNC. The most recent versions of
- Red Hat/CentOS/Fedora, for instance, provide an RPM called
- "xorg-x11-server-source", which installs the Xorg source under
- /usr/share/xorg-x11-server-source.)
-
- > cd unix/xserver/
- > patch -p1 < {source_directory}/unix/xserver{version}.patch
- (where {version} matches the X server version you are building, such as
- "17" for version 1.7.x.)
- > autoreconf -fiv
-
- > ./configure --with-pic --without-dtrace --disable-static --disable-dri \
- --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
- --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
- --disable-config-dbus --disable-config-hal --disable-config-udev \
- --disable-dri2 --enable-install-libxf86config --enable-glx \
- --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
- --with-fontdir=/usr/share/X11/fonts \
- --with-xkb-path=/usr/share/X11/xkb \
- --with-xkb-output=/var/lib/xkb \
- --with-xkb-bin-directory=/usr/bin \
- --with-serverconfig-path=/usr/lib[64]/xorg \
- --with-dri-driver-path=/usr/lib[64]/dri \
- {additional configure options}
- (NOTE: This is merely an example that works with Red Hat Enterprise/CentOS
- 6 and recent Fedora releases. You should customize it for your particular
- system. In particular, it will be necessary to customize the font, XKB,
- and DRI directories.)
-
- > make TIGERVNC_SRCDIR={source_directory}
-
-
- Building the TigerVNC Server on Legacy Unix/Linux Systems
- ---------------------------------------------------------
-
- Those using systems with older versions of Xorg must build a "legacy-friendly"
- version of the TigerVNC Server. This is accomplished by downloading and
- building the more recent Xorg modules in a local directory and then building
- Xvnc such that it links against the local build of these libraries, not the X11
- libraries installed on the system. The "build-xorg" script in the TigerVNC
- source distribution (located under contrib/xorg/) automates this process.
-
- The following procedure will build both the TigerVNC Viewer and a
- "legacy-friendly" version of the TigerVNC Server:
-
- cd {build_directory}
- bash {source_directory}/contrib/xorg/build-xorg init
- bash {source_directory}/contrib/xorg/build-xorg build [additional CMake flags]
-
- build-xorg generates a version of Xvnc that has no external dependencies on the
- X11 shared libraries or any other distribution-specific shared libraries. This
- version of Xvnc should be transportable across multiple O/S distributions.
- build-xorg should work on Red Hat Enterprise 4, its contemporaries, and later
- systems. It probably will not work on older systems. It has not been tested
- on non-Linux systems (yet).
-
- build-xorg can also be used to rebuild just the TigerVNC Server and Viewer,
- once the X11 modules and other dependencies have been built for the first time.
- This is convenient for testing changes that just apply to the TigerVNC source
- code. To accomplish this, run:
-
- sh {source_directory}/contrib/xorg/build-xorg rebuild [additional make flags]
-
- For instance,
-
- sh {source_directory}/contrib/xorg/build-xorg rebuild clean
-
- will clean both the Xvnc and vncviewer builds without destroying any of the
- build configuration or module dependencies.
-
-
- Building the Windows TigerVNC Viewer with MinGW
- -----------------------------------------------
-
- If building the Windows version of TigerVNC on a Windows build system, use
- the following procedure.
-
- cd {build_directory}
- cmake -G "MSYS Makefiles" [additional CMake flags] {source_directory}
- make
-
- If cross-compiling on a Unix/Linux system, then see the "Build Recipes" section
- below.
-
-
- Debug Build
- -----------
-
- Add "-DCMAKE_BUILD_TYPE=Debug" to the CMake command line.
-
-
- Portable (semi-static) Build
- ----------------------------
-
- TigerVNC can under favourble circumstances be built in a way that allows
- the resulting binaries to run on any system without having to also install
- all the dynamic libraries it depends on. Enable this mode by adding:
-
- -DBUILD_STATIC=1
-
- to the CMake command line.
-
- Note that the method used to achieve this is very fragile and it may be
- necessary to tweak cmake/StaticBuild.cmake to make things work on your
- specific system.
-
-
- =====================
- Building Java Support
- =====================
-
- TigerVNC includes a Java version of the TigerVNC Viewer, which can be used on
- any platform that has a Java Runtime Environment (JRE) installed. The Java
- viewer works similarly to the native viewer, but with lower performance.
-
- To build the Java TigerVNC Viewer, add
-
- -DBUILD_JAVA=1
-
- to the CMake or build-xorg command line. The build system will attempt to find
- an installed Java Development Kit (JDK) and determine the appropriate paths for
- the Java compiler (javac) and the JAR creation utility (jar). You can override
- these paths by setting the Java_JAVAC_EXECUTABLE and Java_JAR_EXECUTABLE CMake
- variables. You can also override the default flags that are passed to javac
- by setting the JAVACFLAGS CMake variable. The build system will look for
- keytool and jarsigner in the same directory as Java_JAR_EXECUTABLE. These
- tools are needed to sign the JAR file, which is necessary to enable certain
- functionality (such as clipboard transfers) when the Java viewer is used as an
- applet.
-
- If the Java viewer is built along with the Windows TigerVNC Server (WinVNC),
- then the build system will embed the Java viewer into WinVNC4.exe so that it
- will automatically be served up using WinVNC's built-in HTTP server.
- Similarly, if the Java viewer is built along with the Unix TigerVNC Server
- (Xvnc), then the build system will include the Java viewer in the server
- tarball.
-
- By default, a self-signed certificate will be generated and used to sign the
- jar file. By specifying the following command line arguments to the CMake
- command line, an alternate certificate may be used for signing.
-
- -DJAVA_KEYSTORE=${keystore_location_or_url}
- -DJAVA_KEYSTORE_TYPE=${keystore_type} (Default: "jks")
- -DJAVA_KEY_ALIAS=${keytore_key_alias}
- -DJAVA_STOREPASS=${keystore_password}
- -DJAVA_KEYPASS=${keystore_entry_password}
- -DJAVA_TSA_URL=${url_of_timestamping_authority}
-
- The values of the JAVA_STOREPASS and JAVA_KEYPASS arguments may optionally be
- read from file or environment variables by prefixing the value with ":env "
- or ":file " (see the jarsigner documentation for more info):
-
- export StorePass=tigervnc
- export KeyPass=tigervnc
- cmake \
- ...
- -DJAVA_STOREPASS=":env StorePass"
- -DJAVA_KEYPASS=":env KeyPass"
-
-
- ======================================
- Building TLS Support
- ======================================
-
- TLS requires GnuTLS, which is supplied with most Linux distributions and
- with MinGW for Windows and can be built from source on OS X and other
- Unix variants. However, GnuTLS versions > 2.12.x && < 3.3.x should be
- avoided because of potential incompatibilities during initial handshaking.
-
- You can override the GNUTLS_LIBRARY and GNUTLS_INCLUDE_DIR CMake variables
- to specify the locations of libgnutls and any dependencies. For instance,
- adding
-
- -DGNUTLS_INCLUDE_DIR=/usr/local/include \
- -DGNUTLS_LIBRARY=/usr/local/lib/libgnutls.a
-
- to the CMake command line would link TigerVNC against a static version of
- libgnutls located under /usr/local.
-
-
- ======================================
- Building Native Language Support (NLS)
- ======================================
-
- NLS requires gettext, which is supplied with most Linux distributions and
- with MinGW for Windows and which can easily be built from source on OS X and
- other Unix variants.
-
- 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.
-
-
- ===================
- Installing TigerVNC
- ===================
-
- You can use the build system to install TigerVNC into a directory of your
- choosing. To do this, add:
-
- -DCMAKE_INSTALL_PREFIX={install_directory}
-
- to the CMake command line. Then, you can run 'make install' to build and
- install it.
-
- If you don't specify CMAKE_INSTALL_PREFIX, then the default is
- c:\Program Files\TigerVNC on Windows and /usr/local on Unix.
-
-
- =========================
- Creating Release Packages
- =========================
-
- The following commands can be used to create various types of release packages:
-
-
- Unix
- ----
-
- make tarball
-
- Create a binary tarball containing the TigerVNC Viewer
-
- make servertarball
-
- Create a binary tarball containing both the TigerVNC Server and Viewer
-
- make dmg
-
- Create Macintosh disk image file that contains an application bundle of the
- TigerVNC Viewer
-
- make udmg
-
- 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 OSX_X86_BUILD CMake
- variable to the directory containing your configured 32-bit build. Either
- the 64-bit or 32-bit build can be configured to be backward compatible by
- using the instructions in the "Build Recipes" section.
-
-
- Windows
- -------
-
- make installer
-
- Create a Windows installer using Inno Setup. The installer package
- (TigerVNC[64].exe) will be located under {build_directory}.
-
-
- =============
- Build Recipes
- =============
-
-
- 32-bit Build on 64-bit Linux/Unix (including OS X)
- --------------------------------------------------
-
- Set the following environment variables before building TigerVNC.
-
- CFLAGS='-O3 -m32'
- CXXFLAGS='-O3 -m32'
- LDFLAGS=-m32
-
- If you are building the TigerVNC Server on a modern Unix/Linux system, then
- you will also need to pass the appropriate --host argument when configuring the
- X server source (for instance, --host=i686-pc-linux-gnu).
-
-
- 64-bit Backward-Compatible Build on 64-bit OS X
- -----------------------------------------------
-
- Add
-
- -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \
- -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5
-
- to the CMake command line. The OS X 10.5 SDK must be installed.
-
-
- 32-bit Backward-Compatible Build on 64-bit OS X
- -----------------------------------------------
-
- Set the following environment variables:
-
- CC=gcc-4.0
- CXX=g++-4.0
- CFLAGS='-O3 -m32'
- CXXFLAGS='-O3 -m32'
- LDFLAGS=-m32
-
- and add
-
- -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk \
- -DCMAKE_OSX_DEPLOYMENT_TARGET=10.4
-
- to the CMake command line. The OS X 10.4 SDK must be installed.
-
-
- 64-bit MinGW Build on Cygwin
- ----------------------------
-
- cd {build_directory}
- CC=/usr/bin/x86_64-w64-mingw32-gcc CXX=/usr/bin/x86_64-w64-mingw32-g++ \
- RC=/usr/bin/x86_64-w64-mingw32-windres \
- cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
- -DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar \
- -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib {source_directory}
- make
-
- This produces a 64-bit build of TigerVNC that does not depend on cygwin1.dll or
- other Cygwin DLL's. The mingw64-x86_64-gcc-core and mingw64-x86_64-gcc-g++
- packages (and their dependencies) must be installed.
-
-
- 32-bit MinGW Build on Cygwin
- ----------------------------
-
- cd {build_directory}
- CC=/usr/bin/i686-w64-mingw32-gcc CXX=/usr/bin/i686-w64-mingw32-g++ \
- RC=/usr/bin/i686-w64-mingw32-windres \
- cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
- -DDCMAKE_AR=/usr/bin/i686-w64-mingw32-ar \
- -DCMAKE_RANLIB=/usr/bin/i686-w64-mingw32-ranlib {source_directory}
- make
-
- This produces a 32-bit build of TigerVNC that does not depend on cygwin1.dll or
- other Cygwin DLL's. The mingw64-i686-gcc-core and mingw64-i686-gcc-g++
- packages (and their dependencies) must be installed.
-
-
- MinGW-w64 Build on Windows
- --------------------------
-
- This produces a 64-bit build of TigerVNC using the "native" MinGW-w64 toolchain
- (which is faster than the Cygwin version):
-
- cd {build_directory}
- CC={mingw-w64_binary_path}/x86_64-w64-mingw32-gcc \
- CXX={mingw-w64_binary_path}/x86_64-w64-mingw32-g++ \
- RC={mingw-w64_binary_path}/x86_64-w64-mingw32-windres \
- cmake -G "MSYS Makefiles" \
- -DCMAKE_AR={mingw-w64_binary_path}/x86_64-w64-mingw32-ar \
- -DCMAKE_RANLIB={mingw-w64_binary_path}/x86_64-w64-mingw32-ranlib \
- {source_directory}
- make
-
-
- MinGW Build on Linux
- --------------------
-
- cd {build_directory}
- CC={mingw_binary_path}/i386-mingw32-gcc \
- CXX={mingw_binary_path}/i386-mingw32-g++ \
- RC={mingw_binary_path}/i386-mingw32-windres \
- cmake -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Windows \
- -DCMAKE_AR={mingw_binary_path}/i386-mingw32-ar \
- -DCMAKE_RANLIB={mingw_binary_path}/i386-mingw32-ranlib \
- {source_directory}
- make
-
-
- ===============================
- Distribution-Specific Packaging
- ===============================
-
-
- RPM Packages for RHEL / CentOS
- ------------------------------
-
- The RPM spec files and patches used to create the nightly builds
- and releases can be found in the "contrib/rpm/el{5,6}" directories
- of the TigerVNC subversion trunk. All external source tarballs
- must be fetched manually and placed into the 'SOURCES' directory
- under the rpmbuild root. Additionally, the following macros need
- to be defined:
-
- EL6:
- %debug_package %{nil}
-
- EL5:
- %dist .el5
- %_smp_mflags -j3
- %debug_package %{nil}
- %__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
-
-
- Debian packages for Ubuntu 12.04LTS
- -----------------------------------
- The debian folder used to create the nightly builds and releases
- can be found in the "contrib/deb/ubuntu-precise" directory of the
- TigerVNC subversion trunk.
|