
How to compile Rosegarden
=========================

Rosegarden has switched its build system to CMake.  We hope this will
be the last time we change build systems.

You will need CMake 2.4.2 or later.  If your Linux distribution
doesn't provide CMake, or if it provides an older version, you can get
it here:

  http://cmake.org/HTML/Download.html

There are ready to use binary packages available for Linux-i386 from
that page.  They seem to work well -- use them!  We advise you avoid
building CMake from source if possible.  (If you must build it from
source, please read the instructions supplied with the CMake tarball,
and remember that it will install to /usr/local by default.)


A Typical Build with CMake
---------------------------

If you are a typical end user wanting to play with the latest
Rosegarden, and to install it in the same place the distro package you
are replacing came from, then the the following instructions are
probably all you need to do in order to get up and running:

First, unpack the tarball or check out SVN.  We'll assume you have the
source in ~/src/rosegarden and need to change to that directory:

$ cd ~/src/rosegarden

Now run CMake to generate the build files, and specify the location
where your system's KDE libraries are installed.  A nice general way
to do this is:

$ cmake . -DCMAKE_INSTALL_PREFIX=`tde-config --prefix`

If you omit the install prefix and just run

$ cmake .

instead, cmake will prepare to install Rosegarden and its data files
beneath /usr/local.  That may be fine if you have no existing
Rosegarden installation you want to replace (see also Advanced Build
Options below).

Finally, run make, and then (sudo) make install, and you're all set:

$ make
# make install

To uninstall, use:

# make uninstall


Advanced Build Options
----------------------

By default, make will output brief details of each build step.  If you
prefer to see full command lines, use:

$ make VERBOSE=1

By default, the install prefix will be /usr/local. If your KDE is
installed at some other prefix, you probably want to override this
setting, as suggested in "A Typical Build with CMake."  You may
install to /usr/local or anywhere else, but if you do so, you must add
that location to your TDEDIRS environment variable before running
Rosegarden.  For example:

$ export TDEDIRS=/usr/local:$TDEDIRS
$ rosegarden

Another option, useful for packagers, is setting DESTDIR at install
time. The DESTDIR directory will be prepended to the prefix when
copying the files:

$ make install DESTDIR=~/rpmroot

Some variables you may want to set:

    * CMAKE_INSTALL_PREFIX:
      cmake . -DCMAKE_INSTALL_PREFIX=/opt/kde is the equivalent to
      ./configure --prefix=/opt/kde for programs that use autotools

    * WANT_XXXX: there are several options, e.g. WANT_JACK or WANT_DSSI. 
      If you disable them, cmake will not even try to find the packages. 

    WANT_DEBUG   Include debug support (default OFF)
    WANT_FULLDBG Full debug support (BIG executables!) (default OFF)
    WANT_SOUND   Include MIDI support using ALSA (default ON)
    WANT_JACK    Include audio support using JACK (default ON)
    WANT_DSSI    Include DSSI plugin support (default ON)
    WANT_LIRC    Include LIRC (Linux Infrared Remote Control) support (def. ON)
    WANT_PCH     Use precompiled headers (default OFF)

The above options can take any of the following values: 0, 1, OFF, ON,
TRUE, FALSE, YES, NO (case insensitive). For example:

$ cmake . -DWANT_DEBUG=YES -DWANT_LIRC=NO -DCMAKE_INSTALL_PREFIX=/opt/kde

Disabling SOUND (eg. WANT_SOUND=OFF) also disables JACK and DSSI. To
enable FULLDBG you also need to enable DEBUG.

If you would prefer to avoid all this typing, you can use ccmake to
view and change these options using a friendly curses-based interface:

$ ccmake .


Dealing with Configuration Problems
-----------------------------------

To locate Qt, CMake searches for qmake in your execute path
($PATH). CMake does not use the TQTDIR environment variable. So make
sure that the first qmake found in the execution path is the one you
like to use.

When CMake has finished, it will have created a file called
"CMakeCache.txt".  This file contains all the settings CMake has
detected on your system. If you want to run CMake with another
generator or you want CMake to detect everything again, delete this
file.

If CMake didn't find something, but you know it is somewhere on your
box, you can tell CMake where to find it manually. CMake uses
variables to store this information. These variables are cached in the
aforementioned file CMakeCache.txt. You have three options to adjust
these variables manually:

    * tell CMake the correct value via the command line: 
      $ cmake . -DNAME_OF_THE_VARIABLE=value

    * use ccmake, which provides a curses based GUI to adjust the 
      CMake variables (run: ccmake .)

    * edit the file CMakeCache.txt directly (not recommended) 

You should run "ccmake ." at least once so that you get an idea which
variables CMake uses. Press "T" to see also the "advanced"
variables. So, if CMake didn't find something, start ccmake and adjust
it manually.


Some other environment variables you may want to set
----------------------------------------------------

If you have headers and libraries installed in non-standard locations
that cmake cannot find (e.g., on /sw), then set the following as
environment variables.  Despite the similar naming convention, these
will not work as arguments on the cmake command line:

    * CMAKE_INCLUDE_PATH: directory where headers reside
    * CMAKE_LIBRARY_PATH: directory where shared libraries reside

Example:
$ export CMAKE_INCLUDE_PATH=/sw/include
$ export CMAKE_LIBRARY_PATH=/sw/lib 

For more information on variables, see this cmake.org wiki page: 

    http://www.cmake.org/Wiki/CMake_Useful_Variables



How to proceed if something fails?
----------------------------------

If cmake finishes with "Generating done" then there was no errors, but
if it finishes with "Configuring done" then there was errors that you
have to fix.  If you got a failure that says something like

CMake Error: This project requires some variables to be set,
and cmake can not find them.
Please set the following variables:
X11_XTest_LIB (ADVANCED)

So the missing library is Xtst. Perhaps you need to install a
libXtst-devel library.

If you can't solve the problem, please subscribe and ask your question
on the rosegarden-user mailing list:

http://lists.sourceforge.net/lists/listinfo/rosegarden-user
http://www.rosegardenmusic.com/support/

