# Building the TSE3 library

If you haven't yet built the TSE3 library, then this page describes how to do so.

### Simple instructions

See the INSTALL file in the root of the source package for detailed instructions on how to install TSE3.

As you'd expect it is a simple case of typing:

            ./configure
            make
            make install

### To install or not to install?

You may not want to install TSE3 on your system; it is still possible to use without installing. Once you have done a `make` you can type

            make tse3-lib-local

to create a `lib` directory with symlinks to all the built library files. Using this you can easily link other programs to your non-installed TSE3 libraries by specifying the `lib` directory to the linker.

You may want to see the documentation for your TSE3-aware application for more information on doing so.

You can remove this local directory by typing

            make tse3-lib-local-clean

### Advanced options

It is possible to supply extra parameters to the `./configure` command to customise how the TSE3 library is built. You can type `./configure --help` to get a summary of these options. You will see a lot of standard configure options as well as the TSE3 specific ones.

New users may safely ignore these extra advanced options.

The TSE3 specific options are listed below. They all have an opposite version. The opposite is the default value. `--with-mutex` is the default so you don't need to specify it, for example.

- `--without-mutex` Disables the support for multiple threads in TSE3. You may find that this makes the TSE3 library run with slightly better performance. However TSE3 will not safeguard it's internal data structures against access by multiple threads. You are advised to only use this option if you know what you are doing, or don't care what you're doing!
- `--without-oss` Disables support for the Open Sound System (OSS) (and/or OSS/Free). This is the most common MIDI interface standard on modern Linux (and most other Unix) distributions. If you disable this the `OSSMidiScheduler` class will still be built, however it will do nothing, and you will not be able to create an object of this type (an exception will be thrown).
- `--without-alsa` Disables support for the Advanced Linux Sound Architecture (ALSA). This is a popular new, developing, sound interface standard. However, it is still at an experimental stage. If you disable this the `AlsaMidiScheduler` class will still be built, however it will do nothing, and you will not be able to create an object of this type (an exception will be thrown).
- `--without-arts` Disables support for the aRts, KDE soundserver MIDI interface.

If your Unix platform does not support either OSS/Alsa then the corresponding `MidiScheduler` facility will not be built into the TSE3 library.

### Building documentation

There is a set of online programmer's reference documents that can be built automatically, using the KDOC program.

See the KDOC page for more information.