The following sections are useful for getting started with the S\+P\+L\+: 
\begin{DoxyItemize}
\item \hyperlink{install}{Installation}. Describes how to install the S\+P\+L. 
\item \hyperlink{organization}{Organization of the Manual}. Briefly explains the organization of the manual (e.\+g., where to find things). 
\end{DoxyItemize}\hypertarget{install}{}\section{Installation}\label{install}

\begin{DoxyVerbInclude}
Installing the SPL Software

The SPL software should build on most Linux systems with a C++ compiler
that supports C++11.

In what follows, $top_dir denotes the top-level directory of the SPL software
distribution (i.e., the directory containing the file named configure).
To build the software, the following steps are required (in order):

1. Installing Prerequisite Libraries

Ensure that all of the libraries needed by the SPL software are installed
on your system.  This includes the following libraries:

    1) Computational Geometry Algorithms Library (CGAL)
    http://www.cgal.org

    2) OpenGL Utility Toolkit (GLUT)
    http://www.opengl.org/resources/libraries/glut/
    http://freeglut.sourceforge.net

    3) Sndfile Library
    http://www.mega-nerd.com/libsndfile

On a Linux system, the installation of the above libraries (as well as any
of their dependencies) is most easily accomplished by using the appropriate
package manager.  For example, on a Fedora system (which uses the Yum
package manager), this might be accomplished by typing something like:

    yum install CGAL CGAL-devel CGAL-demos-source mpfr-devel
    yum install freeglut freeglut-devel
    yum install libsndfile libsndfile-devel

Note that the specific package names required by the package manager will
vary from one version of Fedora to another and may not exactly match those
appearing above.  On an Ubuntu system, the Apt package manager would probably
need to be used (via the apt-get command).

2. Setting Working Directory

Set the current working directory to the top-level directory of the SPL
software distribution.  To set the current working directory as required,
type:

    cd $top_dir

where $top_dir is as defined above.

3. Configuring Software

Perform the initial configuration of the software.  This is accomplished by
running the configure script.  This process allows important information
about the system configuration to be determined.  The configure script
also generates makefiles from makefile templates.  In theory, it should
not be necessary to manually edit any of the makefile templates (i.e.,
the Makefile.in files) used by the configure program.

The configure script can accept numerous options.  These options can be
listed by invoking the configure command with the --help option.  To invoke
the configure program, type:

    ./configure $options

where $options denotes the desired options (if any) for configure.
The options that are most frequently used are as follows:

    --prefix=$dir_name
        Set the directory into which the software will be installed to
        $dir_name.  For example, to configure the software so that it will
        be installed into the directory /home/jdoe/local/SPL, one would
        use the option "--prefix=/home/jdoe/local/SPL".

    CXX=$cxx_command
        Set the command to use for the C++ compiler to $cxx_command.

    CXXFLAGS=$cxx_flags
        Set the C++ compiler flags to $cxx_flags.
        It may be necessary to force the GNU C++ compiler flags to include the
        option -frounding-math in order for applications using CGAL to execute
        correctly.  This can be accomplished by adding the above option.
        [NOTE:  Some versions of the SPL library automatically enable this
        compiler option.]

    CC=$cc_command
        Set the command to use for the C compiler to $cc_command.
        NOTE: This option should not be needed.

    CFLAGS=$c_flags
        Set the C compiler options to $c_flags.
        NOTE: This option should not be needed.

Unless you know what you are doing, it is recommended that you not use
options for configure other than those listed above.

4. Building Software

Compile and link the software.  This is accomplished via the make command.
To run the make command, type:

    make

5. Testing Software (Prior to Installation)

Run some basic sanity checks on the software, prior to installation.
Although this step is not strictly required, it is strongly recommended
that this step not be skipped.  The test the software, type:

    make check

Some tests may require considerable time to complete.  So, be prepared to
go for a coffee break.  After all of the tests have run, a message should
be printed that indicates how many tests passed of those that were run.
If any of the tests failed, this is an indication that something is wrong
and the SPL software is not working reliably.  If such a situation arises,
it is likely due to either an error made by the person installing the
software or a bug in the software itself.

Some of the tests may require graphics capabilities.  If the graphics
display is not on the local machine, this can sometimes cause problems.
For example, some tests may fail due to bugs in the graphics libraries
that handle remote displays.  In such cases, it may be desirable to disable
tests that require graphics capabilities.  To do this, set the environment
variable SPL_MAKE_CHECK_ENABLE_GRAPHICS to 0 (before running "make check").

6. Installing Software

Install the software.  This step may require special administrator
privileges depending on the target directory for installation.  To install
the executables, libraries, include files, and other auxiliary data, type:

    make install
\end{DoxyVerbInclude}
 \hypertarget{organization}{}\section{Organization of the Manual}\label{organization}
The library is partitioned into groups of related code called modules. The documentation is also parititioned in this way. The documentation for each of the various modules can be found in the \href{modules.html}{\tt modules page}. 