Quassel IRC - Installation Notes
================================

These should help you to install Quassel IRC from source. Note that this focuses
mostly on building on Linux; please feel free to send patches for build
instructions on other platforms. We are not familiar with them.

There are three versions of Quassel that can be built:

* quasselcore   - The server daemon. Typically runs on a headless server and
                  is permanently online. The core connects to IRC and stores
                  both settings and backlog.
* quasselclient - The GUI client. Requires a running quasselcore to connect to.
                  Upon connection, the client will fetch all session data and
                  a certain amount of backlog from the core and restore its
                  session almost as if you were never gone.
* quassel       - This standalone version, often called "monolithic" or
                  "mono client", contains both a client and a core and can be
                  used like a "normal" IRC client, without having to setup
                  a server daemon.

Prerequisites
-------------

Of course, for building Quassel you need the usual set of build tools, for
example a compiler. As we use a subset of the C++11 standard, we require a
fairly recent compiler:

- gcc 4.8+ (available for most platforms), or
- Clang 3.3+ (available for most platforms), or
- XCode 5.0+ (available for Max OS X and based on Clang), or
- Visual C++ 2015 (available for Windows™), or
- any other compiler with decent C++11 support

Furthermore, CMake 2.8.9 or later is required (2.8.12 for KDE Frameworks).

As Quassel is a Qt application, you need the Qt SDK, either Qt 4.8+ or Qt 5.2+.

There are several optional dependencies; we will talk about that later.

Compiling Quassel - short version
---------------------------------

Quassel uses CMake as its build system. The canonical way to build any CMake-
based project is as follows:

cd /path/to/source
mkdir build
cd build
cmake ..
make
make install

Compiling Quassel - long version
--------------------------------

First of all, it is highly recommended for any CMake-based project to be built
in a separate build directory rather than in-source. That way, your source
checkout remains pristine, and you can easily remove any build artifacts by just
deleting the build directory. This directory can be located anywhere; in the
short example above, we've just created a directory called "build" inside the
source checkout.

From inside the build directory, you can then run the "cmake" command, followed
by the path to the source. Additionally, you can append various options. Note
that CMake caches the options you provide on the command line, so if you rerun
it later in the same build directory, you don't need to specify them again.

Quassel supports several options to enable or disable features, and can make
use of several optional dependencies if installed. CMake will give a nice
summary of all that after its run, so we'll just mention the most important
options here:

-DWANT_(CORE|QTCLIENT|MONO)=(ON|OFF)
    Choose which Quassel binaries to build.

-DUSE_CCACHE=ON
    Enable ccache if the ccache binary is available. This avoids the need for
    hacks using PATH or the CXX variable to make ccache work.
    Distributors may want to disable automatic detection if they have their
    own caching mechanism set up.

-DUSE_QT4=ON
    Build against the deprecated Qt4 instead of the default Qt5. Note that you
    should empty your build directory when switching between Qt versions,
    otherwise weird things may happen.

-DWITH_KDE=ON
    Enable integration into KDE4 (with Qt4) or KDE Frameworks (with Qt5).

-DWITH_BUNDLED_ICONS=ON
    Quassel requires a number of icons that are part of the KDE/Plasma icon themes
    Breeze and Oxygen, but are generally not supported by other themes. In order
    to avoid missing icons, Quassel bundles the subset of icons it uses from the
    afforementioned themes, and uses that as a fallback if the system theme does
    not provide a required icon.
    If it is ensured that Breeze and/or Oxygen are installed on your system (e.g.
    through package dependencies), this option can be turned off to save less
    than 2 MB of disk space.

-DWITH_OXYGEN_ICONS=(ON|OFF)
    Support the Oxygen icon theme. Oxygen was the default theme in KDE 4, and
    also the bundled icon theme in Quassel before version 0.13. Since the move
    to Qt5, the more modern Breeze icon theme is preferred, and thus Oxygen
    is disabled by default when building against Qt5.

-DWITH_WEBENGINE=ON
    Use WebEngine for showing previews of webpages linked in the chat. Requires
    the QtWebEngine module to be available, and increases the client's RAM usage
    by *a lot* if enabled at runtime. Only available for Qt5. The default is ON.

-DWITH_WEBKIT=OFF
    Use WebKit for showing previews of webpages linked in the chat. Requires
    the QtWebKit module to be available, and increases the client's RAM usage
    by *a lot* if enabled at runtime.
    Note that WebKit support is deprecated and mostly unmaintained in Qt, and
    should no longer be used for security reasons. The default is OFF.

-DEMBED_DATA=(ON|OFF)
    Specifies whether Quassel's data files (icons, translations and so on)
    should be installed normally, or embedded into the binaries. The latter is
    useful if you want to run Quassel from the build directory, or don't want
    to use a standard installation. In particular, EMBED_DATA defaults to ON
    on Windows and OS X, and to OFF on Linux.

You can find the list of optional packages for additional features in CMake's
feature summary; install missing packages for enabling the functionality listed
in the explanation. If you want to forcefully disable an optional feature, use
-DCMAKE_DISABLE_FIND_PACKAGE_Foo=TRUE, where "Foo" is the package name listed.

Quassel also supports the usual CMake options, most importantly

-DCMAKE_INSTALL_PREFIX=/prefix/path - specify the installation prefix
-DCMAKE_BUILD_TYPE=(Debug|Release|RelWithDebug) - specify the build type

If you want to narrow down the languages to be installed, you can set the
LINGUAS environment variable with a space-separated list of language codes,
for example LINGUAS="de en_US".

After running CMake, you can just run "make" in the build directory, and
"make install" for installing the result into the installation prefix.
