<?xml version="1.0" encoding="utf-8"?>
<chapter version="5.0"
         xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd"
         xml:id="development" xmlns="http://docbook.org/ns/docbook"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xs="http://www.w3.org/2001/XMLSchema"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:ns="http://docbook.org/ns/docbook">
  <title>Developer information</title>

   <para>
   <itemizedlist>   
   	<listitem><para><link linkend="development.build_linux">Compiling OVITO on Linux</link></para></listitem>
   	<listitem><para><link linkend="development.build_windows">Compiling OVITO on Windows</link></para></listitem>
   	<listitem><para><link linkend="development.build_macosx">Compiling OVITO on macOS</link></para></listitem>
   	<!-- 
   	<listitem><para><link xlink:href="http://ovito.org/apidoc/">OVITO C++ API documentation</link></para></listitem>
   	 -->
   </itemizedlist>
   </para>
 
  <simplesect xml:id="development.requirements">
    <title>Build requirements</title>
    <para>
    The required tools to build OVITO from source are:
    <informaltable>
    <tgroup cols="3"><thead><row><entry>Tool/Package</entry><entry>Requirement</entry><entry>Notes</entry></row></thead>
    <tbody>
		<row><entry>C++ compiler</entry><entry>required</entry>
		<entry>Compiler must support the C++11 standard (e.g. GNU g++ 4.8 or newer)</entry></row>
		<row><entry><link xlink:href="http://cmake.org/">CMake</link></entry><entry>required</entry>
		<entry>The build system used by OVITO (CMake 2.8.12 or newer required)</entry></row>
		<row><entry><link xlink:href="http://git-scm.com/">Git</link></entry><entry>required</entry>
		<entry>The distributed version control system needed to retrieve OVITO's source code</entry></row>
		<row><entry><link xlink:href="http://xmlsoft.org/XSLT/xsltproc2.html">xsltproc</link></entry><entry>optional</entry>
		<entry>The XSLT processor for generating the user manual</entry></row>
		<row><entry><link xlink:href="http://www.docbook.org/">DocBook</link></entry><entry>optional</entry>
		<entry>The XSL stylesheets required to generate the user manual in HTML format</entry></row>
		<row><entry><link xlink:href="">Doxygen</link></entry><entry>optional</entry>
		<entry>Generates the C++ API documentation from OVITO's source code</entry></row>
		<row><entry><link xlink:href="http://python.org/">Python</link></entry><entry>optional</entry>
		<entry>Required by OVITO's Python script engine (<literal>PyScript</literal> plugin). Python 2.x and 3.x are supported.</entry></row>
		<row><entry><link xlink:href="http://www.numpy.org/">NumPy</link></entry><entry>optional</entry>
		<entry>Required by OVITO's Python script engine (<literal>PyScript</literal> plugin).</entry></row>
		<row><entry><link xlink:href="http://www.riverbankcomputing.com/software/pyqt">PyQt5</link></entry><entry>optional</entry>
		<entry>Required by OVITO's Python script engine (<literal>PyScript</literal> plugin).</entry></row>
		<row><entry><link xlink:href="http://sphinx-doc.org/">Sphinx</link></entry><entry>optional</entry>
		<entry>Tool for creating the Python scripting interface documentation</entry></row>
	</tbody></tgroup>
	</informaltable> 
    The library dependencies are:
	<informaltable>
    <tgroup cols="3"><thead><row><entry>Library</entry><entry>Requirement</entry><entry>Notes</entry></row></thead>
    <tbody>
		<row><entry><link xlink:href="http://www.qt.io/developers/">Qt5</link></entry><entry>required</entry>
		<entry>Used for OVITO's graphical user interface (version 5.2 or newer)</entry></row>
		<row><entry><link xlink:href="http://www.zlib.net/">zlib</link></entry><entry>required</entry>
		<entry>Required for reading and writing compressed files.</entry></row>
		<row><entry><link xlink:href="http://www.boost.org/">Boost</link></entry><entry>required</entry>
		<entry>OVITO uses some utility classes from this C++ library.</entry></row>
		<row><entry><link xlink:href="https://github.com/pybind/pybind11">pybind11</link></entry><entry>included</entry>
		<entry>Required by OVITO's Python script engine (<literal>PyScript</literal> plugin).</entry></row>
		<row><entry><link xlink:href="http://libav.org/">Libav</link></entry><entry>optional</entry>
		<entry>Audio and video processing libraries used by OVITO to write movie files.</entry></row>
		<row><entry><link xlink:href="http://www.unidata.ucar.edu/software/netcdf/">libnetcdf</link></entry><entry>optional</entry>
		<entry>Required by the <literal>NetCDF</literal> plugin to read NetCDF files</entry></row>
		<row><entry><link xlink:href="http://www.riverbankcomputing.com/software/qscintilla/">QScintilla2</link></entry><entry>optional</entry>
		<entry>Text editing widget required by the <literal>PyScript</literal> plugin.</entry></row>
		<row><entry><link xlink:href="http://muparser.beltoforion.de/">muparser</link></entry><entry>included</entry>
		<entry>A math expression parser library. OVITO's source distribution contains a copy of this library, which will be used if not found on the system.</entry></row>
		<row><entry><link xlink:href="http://sourceforge.net/projects/qwt/">Qwt</link></entry><entry>included</entry>
		<entry>For plotting and data visualization.</entry></row>
		<row><entry><link xlink:href="http://botan.randombit.net/">Botan</link></entry><entry>included</entry>
		<entry>A crypto library used by OVITO's built-in SSH client. OVITO's source distribution contains a copy of this library, which will be used if not found on the system.</entry></row>
		<row><entry><link xlink:href="https://github.com/qtproject/qt-creator/tree/master/src/libs/ssh">QtCreator SSH library</link></entry><entry>included</entry>
		<entry>Required for the built-in SSH client. OVITO's source distribution contains a slightly modified copy of this library, which is automatically used.</entry></row>
		<row><entry><link xlink:href="http://jedi.ks.uiuc.edu/~johns/raytracer/">Tachyon</link></entry><entry>included</entry>
		<entry>Required to build the <literal>Tachyon</literal> renderer plugin. OVITO's source distribution contains a slightly modified copy of this library, which is automatically used.</entry></row>
		<row><entry><link xlink:href="http://math.lbl.gov/voro++/">Voro++</link></entry><entry>included</entry>
		<entry>Voronoi cell construction routine required by the <link linkend="particles.modifiers.voronoi_analysis">Voronoi analysis</link> modifier. OVITO's source distribution contains a copy of this library, which will be used if not found on the system.</entry></row>
	</tbody></tgroup>
	</informaltable> 
    </para>
    
  </simplesect>

  <xi:include href="build_linux.docbook"/>
  <xi:include href="build_windows.docbook"/>
  <xi:include href="build_macosx.docbook"/>

</chapter>
