GammaRay uses the CMake buildsystem.

Please see the comments at the top of CMakeLists.txt for
the available configuration options you can pass to cmake.

The installation directory defaults to /usr/local on UNIX
c:/Program Files on Windows and /Applications on MacOS.
You can change this location by passing the option
-DCMAKE_INSTALL_PREFIX=/install/path to cmake.

To build a debug version pass -DCMAKE_BUILD_TYPE=Debug to cmake.

To build GammaRay you will need:
 - CMake 2.8.12 (for non-MSVC)
 - CMake 3.1.0 (for MSVC)
 - a C++ compiler with C++11 lambda support
 - Qt 4.8 or higher

Optional FOSS packages (eg. KDSME, etc) provide extra functionality.
See the "Optional Dependencies" section below for more details.

Building on Unix with gcc or clang:
% mkdir build
% cd build
% cmake ..
% make
% make install

Building on Windows with Microsoft Visual Studio:
From a command prompt for the version of MSVC you want to use
% mkdir build
% cd build
% cmake -G "NMake Makefiles" ..
% nmake
% nmake install

Building on Windows with MinGW:
Make sure you have the path to the MinGW programs in %PATH% first, for example:
% set "PATH=c:\MinGW\mingw64\bin;%PATH%"
Now build:
% mkdir build
% cd build
% cmake -G "MinGW Makefiles" ..
% mingw32-make
% mingw32-make install

Build on Android:
$ mkdir android-build
$ cd android-build
$ export ANDROID_NDK=~/path/to/android-ndk
$ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-android.cmake \
        -DGAMMARAY_PROBE_ONLY_BUILD=true \
        -DCMAKE_PREFIX_PATH=/android/qt5/install/path \
        -DCMAKE_INSTALL_PREFIX=/android/qt5/install/path ..
$ make [-j CPU_NUMBER+2]
$ make install

Using GammaRay on Android:
 - add GammaRay probe to your android .pro file
myproject.pro
....
android: QT += GammaRayProbe
...
- build & deploy and run your project
- forward GammaRay's socket
$ adb forward tcp:11732 localfilesystem:/data/data/YOUR_ANDROID_PACKAGE_NAME(e.g. com.kdab.example)/files/+gammaray_socket
- run GammaRay GUI and connect to localhost:11732
- after you've finished, remove the forward:
$ adb forward --remove tcp:11732
or
$ adb forward --remove-all
to remove all forwards

== Cross-compiling GammaRay ==
You'll find more information on this in the wiki:
https://github.com/KDAB/GammaRay/wiki/Cross-compiling-GammaRay

== Building with Private Qt Headers (Qt4 only) ==
To build against private Qt headers (necessary for painter debugging/profiling)
you must have a developer build version of Qt available (i.e. Qt must be
configured using the -developer-build option).

Make sure the qmake found first in your execute comes from this build version.
For example, if your Qt build is in /data/Qt/4.8 then:
 % export PATH=/data/Qt/4.8/bin:$PATH # on Linux using bash


== Force a Qt4 build ==
On systems with both Qt4 and Qt5 available, the CMake buildsystem will always
attempt to use Qt5. To force a Qt build, pass -DGAMMARAY_ENFORCE_QT4_BUILD=true
to CMake, as in:
  % cmake -DGAMMARAY_ENFORCE_QT4_BUILD=true


== Optional Dependencies ==
GammaRay relies on optional (FOSS) dependencies to help provide some of its
functionality, most prominently KDSME (https://github.com/KDAB/KDStateMachineEditor).

When you run cmake it will inform you about these missing dependencies.

You can also force CMake to ignore any or all of the optional dependencies
by passing the option -DCMAKE_DISABLE_FIND_PACKAGE_<PACKAGE>=True.
For instance:
# tell cmake to ignore VTK
  % cmake -DCMAKE_DISABLE_FIND_PACKAGE_VTK=True


== Warning! (Qt <= 5.4 only) ==
If your Qt is linked with the "-Bsymbolic-function" option preloading will be
broken.  When this is enabled, references to global functions will be bound to
the shared object internally; therefore, the definition of the function will be
fixed and cannot be overwritten by preloading.

So, be sure that your distro-provided packages or your self-compiled packages
are not linked with this flag (check with `echo $LDFLAGS` before compiling).
For more info see: "man ld; search for "-Bsymbolic-function".

Known affected distros:

    Ubuntu 10.10, 11.04

If you are affected by this, try the gdb injector instead by using the "-i gdb"
command line argument.
