<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

  <!ENTITY doxygen-download-http "http://ftp.stack.nl/pub/doxygen/doxygen-&doxygen-version;.src.tar.gz">
  <!ENTITY doxygen-download-ftp  "ftp://ftp.stack.nl/pub/doxygen/doxygen-&doxygen-version;.src.tar.gz">
  <!ENTITY doxygen-md5sum        "3d1a5c26bef358c10a3894f356a69fbc">
  <!ENTITY doxygen-size          "4.8 MB">
  <!ENTITY doxygen-buildsize     "119 MB (with doxywizard - additional 26 MB for docs)">
  <!ENTITY doxygen-time          "1.7 SBU (with doxywizard - additional 1 SBU for docs)">
]>

<sect1 id="doxygen" xreflabel="Doxygen-&doxygen-version;">
  <?dbhtml filename="doxygen.html"?>

  <sect1info>
    <othername>$LastChangedBy: pierre $</othername>
    <date>$Date: 2015-02-23 16:51:12 -0500 (Mon, 23 Feb 2015) $</date>
  </sect1info>

  <title>Doxygen-&doxygen-version;</title>

  <indexterm zone="doxygen">
    <primary sortas="a-Doxygen">Doxygen</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Doxygen</title>

    <para>
      The <application>Doxygen</application> package contains a documentation
      system for C++, C, Java, Objective-C, Corba IDL and to some extent PHP,
      C# and D. It is useful for generating HTML documentation and/or an
      off-line reference manual from a set of documented source files. There
      is also support for generating output in RTF, PostScript, hyperlinked
      PDF, compressed HTML, and Unix man pages. The documentation is extracted
      directly from the sources, which makes it much easier to keep the
      documentation consistent with the source code.
    </para>

    <para>
      You can also configure <application>Doxygen</application> to extract
      the code structure from undocumented source files. This is very useful
      to quickly find your way in large source distributions. Used along with
      <application>Graphviz</application>, you can also visualize the relations
      between the various elements by means of include dependency graphs,
      inheritance diagrams, and collaboration diagrams, which are all generated
      automatically.
    </para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>
          Download (HTTP): <ulink url="&doxygen-download-http;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download (FTP): <ulink url="&doxygen-download-ftp;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download MD5 sum: &doxygen-md5sum;
        </para>
      </listitem>
      <listitem>
        <para>
          Download size: &doxygen-size;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated disk space required: &doxygen-buildsize;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated build time: &doxygen-time;
        </para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Doxygen Dependencies</bridgehead>

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional">
      <xref linkend="graphviz"/>,
      <xref linkend="gs"/>,
      <xref linkend="llvm"/> (with clang),
      <xref linkend="python2"/> or <xref linkend="python3"/>,
      <xref linkend="qt4"/> (for doxywizard),
      <xref linkend="texlive"/> (or <xref linkend="tl-installer"/>) and
      <xref linkend="xapian"/> (for doxyindexer)
    </para>

    <para condition="html" role="usernotes">User Notes:
      <ulink url="&blfs-wiki;/doxygen"/>
    </para>
  </sect2>

  <sect2 role="installation">
    <title>Installation of Doxygen</title>

    <para>
      Install <application>Doxygen</application> by running the following
      commands:
    </para>

<screen><userinput>./configure --prefix /usr \
            --docdir /usr/share/doc/doxygen-&doxygen-version; &amp;&amp;
make</userinput></screen>

    <para>
      This package does not come with a test suite.
    </para>

    <para>
      Now, as the <systemitem class="username">root</systemitem> user:
    </para>

<screen role="root"><userinput>make MAN1DIR=share/man/man1 install</userinput></screen>

    <para>
      If you wish to generate and install the package documentation
      (note that man pages have already been installed), you must have
      <application>Python</application>,
      <application>TeX Live</application> (for HTML docs) and
      <application>Ghostscript</application> (for PDF docs)
      installed, then issue the following command as the
      <systemitem class="username">root</systemitem> user:
    </para>

<screen role="root"><userinput>make install_docs</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para>
      <option>--with-doxywizard</option>: Use this switch if
      <application>Qt4</application> is installed and you wish to build the GUI
      front-end. If both <application>Qt4</application> and
      <application>Qt5</application> are installed, use <command>source
      setqt4</command>. If <application>Qt4</application> is installed in
      <filename class="directory">/opt</filename>, issue <command>export
      QTDIR=$QT4DIR</command>.
    </para>

    <para>
      <option>--with-doxysearch</option>: Use this switch if
      <application>xapian</application> is installed and you wish to build
      external search tools (<command>doxysearch.cgi</command> and
      <command>doxyindexer)</command>.
    </para>

    <para>
      <option>--with-libclang</option>: Use this switch if
      <application>llvm</application> with <application>clang</application> are
      installed, to add support for libclang parsing.</para>
  </sect2>

  <sect2 role="configuration">
    <title>Configuring Doxygen</title>

    <para>
      There is no real configuration necessary for the
      <application>Doxygen</application> package although three additional
      packages are required if you wish to use extended capabilities. If you
      need to use the language translation features, you must have <xref
       linkend="python2"/> installed. If you require formulas to create PDF
      documentation, then you must have <xref linkend="texlive"/> installed.
      If you require formulas to convert PostScript files to bitmaps, then
      you must have <xref linkend="gs"/> installed.
    </para>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directory</segtitle>

      <seglistitem>
        <seg>
          doxygen and optionally,
          doxywizard, doxyindexer and doxysearch.cgi
        </seg>
        <seg>
          None
        </seg>
        <seg>
          /usr/share/doc/doxygen-&doxygen-version;
        </seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="doxygen-prog">
        <term><command>doxygen</command></term>
        <listitem>
          <para>
            is a command-line based utility used to generate template
            configuration files and then generate documentation from these
            templates. Use <command>doxygen --help</command> for an
            explanation of the command-line parameters.
          </para>
          <indexterm zone="doxygen doxygen-prog">
            <primary sortas="b-doxygen">doxygen</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="doxywizard">
        <term><command>doxywizard</command></term>
        <listitem>
          <para>
            is a GUI front-end for configuring and
            running <command>doxygen</command>.
          </para>
          <indexterm zone="doxygen doxywizard">
            <primary sortas="b-doxywizard">doxywizard</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="doxyindexer">
        <term><command>doxyindexer</command></term>
        <listitem>
          <para>
            generates a search index called <filename>doxysearch.db</filename>
            from one or more search data files produced by
            <command>doxygen</command>. See, e.g. <ulink
            url="http://www.stack.nl/~dimitri/doxygen/manual/extsearch.html"/>.
          </para>
          <indexterm zone="doxygen doxyindexer">
            <primary sortas="b-doxyindexer">doxyindexer</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="doxysearch.cgi">
        <term><command>doxysearch.cgi</command></term>
        <listitem>
          <para>
            is a CGI program to search the data indexed by
            <command>doxyindexer</command>.
          </para>
          <indexterm zone="doxygen doxysearch.cgi">
            <primary sortas="b-doxysearch.cgi">doxysearch.cgi</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
