Commits

camlspotter committed 6ea5c04

added docs

Comments (0)

Files changed (28)

 .*\.omc
-doc/_build
 doc/OMy.*\.rst
 .*~
 

doc/_build/doctrees/OMyExternal.doctree

Binary file added.

doc/_build/doctrees/OMyMakefile.doctree

Binary file added.

doc/_build/doctrees/OMyTar.doctree

Binary file added.

doc/_build/doctrees/environment.pickle

Binary file added.

doc/_build/doctrees/index.doctree

Binary file added.

doc/_build/html/.buildinfo

+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 81f4a18926d33d02d403bfb2fb937c8c
+tags: fbb0d17656682115ca4d033fb2f83ba1

doc/_build/html/OMyExternal.html

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>OMyExternal &mdash; OMyMakefile v1.0.0 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '#',
+        VERSION:     '1.0.0',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="OMyMakefile v1.0.0 documentation" href="index.html" />
+    <link rel="next" title="OMyMakefile" href="OMyMakefile.html" />
+    <link rel="prev" title="Welcome to OMyMakefile’s documentation!" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="OMyMakefile.html" title="OMyMakefile"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to OMyMakefile’s documentation!"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="omyexternal">
+<h1>OMyExternal<a class="headerlink" href="#omyexternal" title="Permalink to this headline">¶</a></h1>
+<p>Functions to integrate non-OMake projects</p>
+<div class="section" id="downloading">
+<h2>Downloading<a class="headerlink" href="#downloading" title="Permalink to this headline">¶</a></h2>
+<p id="index-34">WGet(url, dir)</p>
+<blockquote>
+Run wget and retrieve $(url) to $(dir)
+If the file is already downloaded, does nothing.</blockquote>
+</div>
+<div class="section" id="files">
+<h2>Files<a class="headerlink" href="#files" title="Permalink to this headline">¶</a></h2>
+<p id="index-35">Files(dir)</p>
+<blockquote>
+List up files in directory $(dir), without the prefix &#8220;$(dir)/&#8221;</blockquote>
+<p id="index-36">OCamlModulesFromPath(files)</p>
+<blockquote>
+<p>Get the OCaml module paths from OCaml object and interface file names: x.cmo, y.cmx =&gt; x, y</p>
+<p>CR : Defined but not useful</p>
+</blockquote>
+</div>
+<div class="section" id="functions-for-external-projects">
+<h2>Functions for <cite>External</cite> projects<a class="headerlink" href="#functions-for-external-projects" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="general-rule-for-commands">
+<h3>General rule for commands<a class="headerlink" href="#general-rule-for-commands" title="Permalink to this headline">¶</a></h3>
+<p id="index-37">OCamlExternal(PACK)</p>
+<blockquote>
+<p>Add a rule to install non-omake project.</p>
+<blockquote>
+<dl class="docutils">
+<dt>Argument</dt>
+<dd><dl class="first last docutils">
+<dt>PACK (mandatory)</dt>
+<dd>Name of the package. Once installed, <tt class="docutils literal"><span class="pre">Installed($(PACK))</span></tt> is created.</dd>
+</dl>
+</dd>
+<dt>Environments</dt>
+<dd><dl class="first last docutils">
+<dt>URL (optional)</dt>
+<dd>URL of the source</dd>
+<dt>REQUIRED_PACKS (mandatory)</dt>
+<dd>List of install mark files of required package: ex. REQUIRED_PACKS=$(Installed type-conv)</dd>
+<dt>CONFIGURE (optional)</dt>
+<dd>Configure command: ex. (cd $(EXTRACT_DIR); ./configure &#8211;prefix $PREFIX)
+Command is executed at the directory where the function is called.</dd>
+<dt>INSTALL (mandatory)</dt>
+<dd>Install command: ex. (cd $(EXTRACT_DIR); make all install).
+Command is executed at the directory where the function is called.</dd>
+<dt>OBJS (optional?)</dt>
+<dd>The list of files installed</dd>
+</dl>
+</dd>
+</dl>
+</blockquote>
+<p>CR jfuruse: this is pretty buggy</p>
+</blockquote>
+<p id="index-38">OCamlExternalPack(PACK)</p>
+<blockquote>
+<p>Add a rule to install non-omake OCaml package.</p>
+<blockquote>
+<dl class="docutils">
+<dt>Argument</dt>
+<dd><dl class="first last docutils">
+<dt>PACK (mandatory)</dt>
+<dd>Name of the package. Once installed, <tt class="docutils literal"><span class="pre">Installed($(PACK))</span></tt> is created.</dd>
+</dl>
+</dd>
+<dt>Environments</dt>
+<dd><dl class="first last docutils">
+<dt>URL (optional)</dt>
+<dd>URL of the source</dd>
+<dt>REQUIRED_PACKS (mandatory)</dt>
+<dd>List of install mark files of required package: ex. REQUIRED_PACKS=$(Installed type-conv)</dd>
+<dt>CONFIGURE (optional)</dt>
+<dd>Configure command: ex. (cd $(EXTRACT_DIR); ./configure &#8211;prefix $PREFIX)
+Command is executed at the directory where the function is called.</dd>
+<dt>INSTALL (mandatory)</dt>
+<dd>Install command: ex. (cd $(EXTRACT_DIR); ocamlfind install ...).
+Command is executed at the directory where the function is called.
+<tt class="docutils literal"><span class="pre">ocamlfind</span> <span class="pre">remove</span> <span class="pre">$(PACK)</span></tt> is automatically done before the installation.</dd>
+<dt>OBJS (pretty optional?)</dt>
+<dd>The list of files installed</dd>
+</dl>
+</dd>
+</dl>
+</blockquote>
+<p>CR jfuruse: this is pretty buggy</p>
+</blockquote>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="#">OMyExternal</a><ul>
+<li><a class="reference external" href="#downloading">Downloading</a></li>
+<li><a class="reference external" href="#files">Files</a></li>
+<li><a class="reference external" href="#functions-for-external-projects">Functions for <cite>External</cite> projects</a><ul>
+<li><a class="reference external" href="#general-rule-for-commands">General rule for commands</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="index.html"
+                                  title="previous chapter">Welcome to OMyMakefile&#8217;s documentation!</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="OMyMakefile.html"
+                                  title="next chapter">OMyMakefile</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/OMyExternal.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="OMyMakefile.html" title="OMyMakefile"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to OMyMakefile’s documentation!"
+             >previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Jun FURUSE.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
+    </div>
+  </body>
+</html>

doc/_build/html/OMyMakefile.html

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>OMyMakefile &mdash; OMyMakefile v1.0.0 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '#',
+        VERSION:     '1.0.0',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="OMyMakefile v1.0.0 documentation" href="index.html" />
+    <link rel="next" title="OMyTar" href="OMyTar.html" />
+    <link rel="prev" title="OMyExternal" href="OMyExternal.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="OMyTar.html" title="OMyTar"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="OMyExternal.html" title="OMyExternal"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="omymakefile">
+<h1>OMyMakefile<a class="headerlink" href="#omymakefile" title="Permalink to this headline">¶</a></h1>
+<p>Useful functions to build OCaml projects</p>
+<div class="section" id="directories">
+<h2>Directories<a class="headerlink" href="#directories" title="Permalink to this headline">¶</a></h2>
+<p id="index-480">BIG_ROOT</p>
+<blockquote>
+<div class="highlight-python"><pre>= $(dir .)</pre>
+</div>
+<p>The build root directory</p>
+</blockquote>
+<p id="index-481">PREFIX</p>
+<blockquote>
+<div class="highlight-python"><pre>= $(getenv PREFIX)</pre>
+</div>
+<p>The prefix. Equal to the PREFIX environment variable</p>
+</blockquote>
+</div>
+<div class="section" id="installation-mark-files">
+<h2>Installation mark files<a class="headerlink" href="#installation-mark-files" title="Permalink to this headline">¶</a></h2>
+<p id="index-482">INSTALLED</p>
+<blockquote>
+<div class="highlight-python"><pre>= $(BIG_ROOT)/installed</pre>
+</div>
+<p>Installation mark files are put inside this directory.</p>
+</blockquote>
+<p id="index-483">Installed(packs)</p>
+<blockquote>
+Returns the installation mark files of $(packs)</blockquote>
+<p id="index-484">CreateInstalled(pack, targets)</p>
+<blockquote>
+Create $(Installed $(pack)) file from the digests of $(targets)</blockquote>
+</div>
+<div class="section" id="misc-tools">
+<h2>Misc tools<a class="headerlink" href="#misc-tools" title="Permalink to this headline">¶</a></h2>
+<p id="index-485">mkdir_if_not_exists(dir)</p>
+<blockquote>
+ditto.</blockquote>
+</div>
+<div class="section" id="ocamlfind">
+<h2>OCamlFind<a class="headerlink" href="#ocamlfind" title="Permalink to this headline">¶</a></h2>
+<p id="index-486">USE_OCAMLFIND</p>
+<blockquote>
+<div class="highlight-python"><pre>=  true</pre>
+</div>
+<p>OMy requires OCamlFind! Do not ask me how to use OMy without OCamlFind. Please.</p>
+</blockquote>
+<p id="index-487">OCAMLFIND_PREINSTALLED_PACKAGES[]</p>
+<blockquote>
+<div class="highlight-python"><pre>=  bigarray camlp4 dbm dynlink graphics num num-top stdlib str threads unix</pre>
+</div>
+<p>Preinstalled libraries which are always available for normal ocaml.</p>
+<p>You may want to add the required packages which are built and installed out of OMy framework:</p>
+<div class="highlight-python"><pre>include OMyMakefile
+
+OCAMLFIND_PREINSTALLED_PACKAGES += findlib # findlib has been installed already, independently
+
+Subdirs()</pre>
+</div>
+</blockquote>
+<p id="index-488">BYTE_ENABLED</p>
+<blockquote>
+<div class="highlight-python"><pre>=  true</pre>
+</div>
+<p>If set false in a project directory, byte compilation is disabled there.</p>
+</blockquote>
+</div>
+<div class="section" id="spot-files-ocamlspotter">
+<h2>Spot files (OCamlSpotter)<a class="headerlink" href="#spot-files-ocamlspotter" title="Permalink to this headline">¶</a></h2>
+<p id="index-489">setenv(OCAML_ANNOT, 1)</p>
+<blockquote>
+Define OCAML_ANNOT so that custom ocamlc/ocamlopt automatically create spot/spit/annot files</blockquote>
+</div>
+<div class="section" id="packages">
+<h2>Packages<a class="headerlink" href="#packages" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils" id="index-490">
+<dt>public.OCAMLPACKS[]</dt>
+<dd>OCaml packages required for compilation. MyCaml* functions automatically add necessary dependencies over packages in $(OCAMLPACKS).</dd>
+</dl>
+<dl class="docutils" id="index-491">
+<dt>public.CAMLP4PACKS[]</dt>
+<dd>CamlP4 syntax extension packages required for parsing. MyCaml* functions automatically add necessary dependencies over packages in $(CAMLP4PACKS).</dd>
+</dl>
+</div>
+<div class="section" id="dependencies">
+<h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2>
+<p id="index-492">RequirePackages(packages)</p>
+<blockquote>
+Add dependencies of any build activity over $(packages).
+This introduces implicit rule: <em>you may need to export it, if you use this function in a local context.</em></blockquote>
+<p id="index-493">OCamlRequirePackages(packages)</p>
+<blockquote>
+<p>Add dependencies of OCaml compiled files (cmx, cmo, etc.) over $(packages).
+$(packages) listed in OCAMLFIND_PREINSTALLED_PACKAGES are ignored.</p>
+<p>Usually you do not need to call this function. Use OCAMLPACKS variable instead.
+This introduces implicit rule: <em>you may need to export it, if you use this function in a local context.</em></p>
+</blockquote>
+<p id="index-494">OCamlRequireCamlP4Packages(packages)</p>
+<blockquote>
+<p>Add dependencies of OCaml dependency analysis and build over $(packages).
+Use this for adding dependencies for CamlP4 extensions.
+$(packages) listed in OCAMLFIND_PREINSTALLED_PACKAGES are ignored.</p>
+<p>Usually you do not need to call this function. Use CAML4PACKS variable instead.
+This introduces implicit rule: <em>you may need to export it, if you use this function in a local context.</em></p>
+</blockquote>
+<p id="index-495">%.auto.mli: %.ml</p>
+<blockquote>
+<tt class="docutils literal"><span class="pre">omake</span> <span class="pre">xxx.auto.mli</span></tt> generates .mli file from xxx.ml</blockquote>
+</div>
+<div class="section" id="build-rules">
+<h2>Build rules<a class="headerlink" href="#build-rules" title="Permalink to this headline">¶</a></h2>
+<p id="index-496">MyOCamlPackage(library_name, files, cmodules, linkopts)</p>
+<blockquote>
+<dl class="docutils">
+<dt>Add a rule for OCaml package $(library_name).cmo, $(library_name).cmx and etc.</dt>
+<dd><dl class="first last docutils">
+<dt>library_name</dt>
+<dd>target package name</dd>
+<dt>files</dt>
+<dd>ML module names (without .ml)</dd>
+<dt>cmodules</dt>
+<dd>C source files (without .c)</dd>
+<dt>linkopts</dt>
+<dd>C library link option (without OCaml -cclib options)</dd>
+</dl>
+</dd>
+</dl>
+<p>Example: MyOCamlPackage(foo, alpha beta, $(EMPTY), $(EMPTY))</p>
+<p>Todo: external C library</p>
+</blockquote>
+<p id="index-497">MyOCamlProgram(name, files)</p>
+<blockquote>
+<dl class="docutils">
+<dt>Add a rule to build a program $(name)</dt>
+<dd><dl class="first last docutils">
+<dt>name</dt>
+<dd>Name of the program</dd>
+<dt>files</dt>
+<dd>OCaml module names (without .ml)</dd>
+</dl>
+</dd>
+</dl>
+</blockquote>
+<p id="index-498">MyOCamlLibrary(name, files)</p>
+<blockquote>
+<dl class="docutils">
+<dt>Add a rule to build OCaml library $(name)</dt>
+<dd><dl class="first last docutils">
+<dt>name</dt>
+<dd>Name of the library</dd>
+<dt>files</dt>
+<dd>OCaml module name (without .ml)</dd>
+</dl>
+</dd>
+</dl>
+</blockquote>
+</div>
+<div class="section" id="subdir-traversal">
+<h2>Subdir traversal<a class="headerlink" href="#subdir-traversal" title="Permalink to this headline">¶</a></h2>
+<p id="index-499">Subdirs_except(dirs)</p>
+<blockquote>
+Recursively traverse the subdirs except $(dirs)</blockquote>
+<p id="index-500">Subdirs()</p>
+<blockquote>
+Recursively traverse all the subdirs</blockquote>
+<p id="index-501">Subdirs_only(dirs)</p>
+<blockquote>
+Recursively traverse the given subdirs $(dirs)</blockquote>
+</div>
+<div class="section" id="dependency-dot-files-for-graphviz">
+<h2>Dependency dot files for Graphviz<a class="headerlink" href="#dependency-dot-files-for-graphviz" title="Permalink to this headline">¶</a></h2>
+<p id="index-502">Dot()</p>
+<blockquote>
+Add a rule for <tt class="docutils literal"><span class="pre">depend.dot</span></tt> for a dependency graph of OCaml files in the current directory</blockquote>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="#">OMyMakefile</a><ul>
+<li><a class="reference external" href="#directories">Directories</a></li>
+<li><a class="reference external" href="#installation-mark-files">Installation mark files</a></li>
+<li><a class="reference external" href="#misc-tools">Misc tools</a></li>
+<li><a class="reference external" href="#ocamlfind">OCamlFind</a></li>
+<li><a class="reference external" href="#spot-files-ocamlspotter">Spot files (OCamlSpotter)</a></li>
+<li><a class="reference external" href="#packages">Packages</a></li>
+<li><a class="reference external" href="#dependencies">Dependencies</a></li>
+<li><a class="reference external" href="#build-rules">Build rules</a></li>
+<li><a class="reference external" href="#subdir-traversal">Subdir traversal</a></li>
+<li><a class="reference external" href="#dependency-dot-files-for-graphviz">Dependency dot files for Graphviz</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="OMyExternal.html"
+                                  title="previous chapter">OMyExternal</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="OMyTar.html"
+                                  title="next chapter">OMyTar</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/OMyMakefile.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="OMyTar.html" title="OMyTar"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="OMyExternal.html" title="OMyExternal"
+             >previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Jun FURUSE.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
+    </div>
+  </body>
+</html>

doc/_build/html/OMyTar.html

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>OMyTar &mdash; OMyMakefile v1.0.0 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '#',
+        VERSION:     '1.0.0',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="OMyMakefile v1.0.0 documentation" href="index.html" />
+    <link rel="prev" title="OMyMakefile" href="OMyMakefile.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="OMyMakefile.html" title="OMyMakefile"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="omytar">
+<h1>OMyTar<a class="headerlink" href="#omytar" title="Permalink to this headline">¶</a></h1>
+<p>Handling tar archives, such as .tar, .tar.gz, .tar.bz2, .tgz, .tbz</p>
+<p id="index-62">TarExtract(f)</p>
+<blockquote>
+Extract tar archive $(f).</blockquote>
+<p id="index-63">TarExtractAt(f, dir)</p>
+<blockquote>
+Extract $(f) to directory $(dir)</blockquote>
+<p id="index-64">TarList(f)</p>
+<blockquote>
+Obtain the list of archived files in $(f)</blockquote>
+<p id="index-65">TarAutoExtract(f, dir)</p>
+<blockquote>
+Extract tar archive $(f) to directory $(dir).
+If the archive has more than one files or directories in its top directory structure,
+they are expanded into a newly created directory, whose name is from $(f).</blockquote>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="OMyMakefile.html"
+                                  title="previous chapter">OMyMakefile</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/OMyTar.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="OMyMakefile.html" title="OMyMakefile"
+             >previous</a> |</li>
+        <li><a href="index.html">OMyMakefile v1.0.0 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Jun FURUSE.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
+    </div>
+  </body>
+</html>

doc/_build/html/_sources/OMyExternal.txt

+
+==========================
+OMyExternal 
+==========================
+Functions to integrate non-OMake projects
+
+Downloading
+============================
+
+.. index::
+    WGet(url, dir)
+
+WGet(url, dir)
+
+    Run wget and retrieve $(url) to $(dir)
+    If the file is already downloaded, does nothing.
+
+Files
+============================
+
+.. index::
+    Files(dir)
+
+Files(dir)
+
+    List up files in directory $(dir), without the prefix "$(dir)/"
+
+.. index::
+    OCamlModulesFromPath(files)
+
+OCamlModulesFromPath(files)
+
+    Get the OCaml module paths from OCaml object and interface file names: x.cmo, y.cmx => x, y
+    
+    CR : Defined but not useful
+
+
+Functions for `External` projects
+============================
+
+General rule for commands
+---------------------------------
+
+.. index::
+    OCamlExternal(PACK)
+
+OCamlExternal(PACK)
+
+    Add a rule to install non-omake project.
+    
+        Argument
+            PACK (mandatory)
+                Name of the package. Once installed, ``Installed($(PACK))`` is created.
+        Environments
+            URL (optional)
+                URL of the source
+            REQUIRED_PACKS (mandatory)
+                List of install mark files of required package: ex. REQUIRED_PACKS=$(Installed type-conv)
+            CONFIGURE (optional)
+                Configure command: ex. (cd $(EXTRACT_DIR); ./configure --prefix $PREFIX)
+                Command is executed at the directory where the function is called.
+            INSTALL (mandatory)
+                Install command: ex. (cd $(EXTRACT_DIR); make all install).
+                Command is executed at the directory where the function is called.
+            OBJS (optional?)
+                The list of files installed
+    
+    CR jfuruse: this is pretty buggy
+
+
+
+
+
+.. index::
+    OCamlExternalPack(PACK)
+
+OCamlExternalPack(PACK)
+
+    Add a rule to install non-omake OCaml package.
+    
+        Argument
+            PACK (mandatory)
+                Name of the package. Once installed, ``Installed($(PACK))`` is created.
+        Environments
+            URL (optional)
+                URL of the source
+            REQUIRED_PACKS (mandatory)
+                List of install mark files of required package: ex. REQUIRED_PACKS=$(Installed type-conv)
+            CONFIGURE (optional)
+                Configure command: ex. (cd $(EXTRACT_DIR); ./configure --prefix $PREFIX)
+                Command is executed at the directory where the function is called.
+            INSTALL (mandatory)
+                Install command: ex. (cd $(EXTRACT_DIR); ocamlfind install ...).
+                Command is executed at the directory where the function is called.
+                ``ocamlfind remove $(PACK)`` is automatically done before the installation.
+            OBJS (pretty optional?)
+                The list of files installed
+    
+    CR jfuruse: this is pretty buggy
+

doc/_build/html/_sources/OMyMakefile.txt

+
+==========================
+OMyMakefile
+==========================
+Useful functions to build OCaml projects
+
+Directories
+=====================================================================
+
+.. index::
+    single: BIG_ROOT
+
+BIG_ROOT
+    
+    ::     
+    
+        = $(dir .)
+
+    The build root directory  
+
+.. index::
+    single: PREFIX
+
+PREFIX
+    
+    ::     
+    
+        = $(getenv PREFIX)
+
+    The prefix. Equal to the PREFIX environment variable
+
+Installation mark files
+=======================================================================
+
+.. index::
+    single: INSTALLED
+
+INSTALLED
+    
+    ::     
+    
+        = $(BIG_ROOT)/installed
+
+    Installation mark files are put inside this directory.
+
+.. index::
+    Installed(packs)
+
+Installed(packs)
+
+    Returns the installation mark files of $(packs)
+
+.. index::    CreateInstalled(pack targets)
+
+CreateInstalled(pack, targets)
+
+    Create $(Installed $(pack)) file from the digests of $(targets)
+
+Misc tools
+======================================================================
+
+.. index::
+    mkdir_if_not_exists(dir)
+
+mkdir_if_not_exists(dir)
+
+    ditto.
+
+OCamlFind
+========================================================================
+
+.. index::
+    single: USE_OCAMLFIND
+
+USE_OCAMLFIND
+    
+    ::     
+    
+        =  true
+
+    OMy requires OCamlFind! Do not ask me how to use OMy without OCamlFind. Please.
+
+.. index::
+    single: OCAMLFIND_PREINSTALLED_PACKAGES[]
+
+OCAMLFIND_PREINSTALLED_PACKAGES[]
+    
+    ::     
+    
+        =  bigarray camlp4 dbm dynlink graphics num num-top stdlib str threads unix
+
+    Preinstalled libraries which are always available for normal ocaml.
+    
+    You may want to add the required packages which are built and installed out of OMy framework:
+    
+    ::
+    
+      include OMyMakefile
+      
+      OCAMLFIND_PREINSTALLED_PACKAGES += findlib # findlib has been installed already, independently
+      
+      Subdirs()
+
+
+.. index::
+    single: BYTE_ENABLED
+
+BYTE_ENABLED
+    
+    ::     
+    
+        =  true
+
+    If set false in a project directory, byte compilation is disabled there.
+
+
+
+Spot files (OCamlSpotter)
+==================================================================
+
+.. index::
+    single: setenv(OCAML_ANNOT, 1)
+
+
+setenv(OCAML_ANNOT, 1)
+
+    Define OCAML_ANNOT so that custom ocamlc/ocamlopt automatically create spot/spit/annot files
+
+
+
+Packages
+=========================================================
+
+.. index::
+    single: public.OCAMLPACKS[]
+
+public.OCAMLPACKS[]
+    OCaml packages required for compilation. MyCaml* functions automatically add necessary dependencies over packages in $(OCAMLPACKS).
+
+.. index::
+    single: public.CAMLP4PACKS[]
+
+public.CAMLP4PACKS[]
+    CamlP4 syntax extension packages required for parsing. MyCaml* functions automatically add necessary dependencies over packages in $(CAMLP4PACKS).
+
+Dependencies
+=========================================================================
+
+.. index::
+    RequirePackages(packages)
+
+RequirePackages(packages)
+
+    Add dependencies of any build activity over $(packages).
+    This introduces implicit rule: *you may need to export it, if you use this function in a local context.*
+
+.. index::
+    OCamlRequirePackages(packages)
+
+OCamlRequirePackages(packages)
+
+    Add dependencies of OCaml compiled files (cmx, cmo, etc.) over $(packages).
+    $(packages) listed in OCAMLFIND_PREINSTALLED_PACKAGES are ignored.
+    
+    Usually you do not need to call this function. Use OCAMLPACKS variable instead. 
+    This introduces implicit rule: *you may need to export it, if you use this function in a local context.*
+
+.. index::
+    OCamlRequireCamlP4Packages(packages)
+
+OCamlRequireCamlP4Packages(packages)
+
+    Add dependencies of OCaml dependency analysis and build over $(packages).
+    Use this for adding dependencies for CamlP4 extensions.
+    $(packages) listed in OCAMLFIND_PREINSTALLED_PACKAGES are ignored.
+    
+    Usually you do not need to call this function. Use CAML4PACKS variable instead. 
+    This introduces implicit rule: *you may need to export it, if you use this function in a local context.*
+
+.. index::
+    single: %.auto.mli: %.ml
+
+
+%.auto.mli: %.ml
+
+    ``omake xxx.auto.mli`` generates .mli file from xxx.ml 
+
+Build rules
+==========================================================
+
+
+
+.. index::
+    MyOCamlPackage(library_name, files, cmodules, linkopts)
+
+MyOCamlPackage(library_name, files, cmodules, linkopts)
+
+    Add a rule for OCaml package $(library_name).cmo, $(library_name).cmx and etc.
+       library_name
+           target package name
+       files
+           ML module names (without .ml)
+       cmodules
+           C source files (without .c)
+       linkopts
+           C library link option (without OCaml -cclib options)    
+    
+    Example: MyOCamlPackage(foo, alpha beta, $(EMPTY), $(EMPTY))
+    
+    Todo: external C library
+
+
+.. index::
+    MyOCamlProgram(name, files)
+
+MyOCamlProgram(name, files)
+
+    Add a rule to build a program $(name)
+        name
+            Name of the program
+        files
+            OCaml module names (without .ml)
+
+.. index::
+    MyOCamlLibrary(name, files)
+
+MyOCamlLibrary(name, files)
+
+    Add a rule to build OCaml library $(name)
+         name
+             Name of the library
+         files
+             OCaml module name (without .ml)
+
+Subdir traversal
+=====================================================================
+
+.. index::
+    Subdirs_except(dirs)
+
+Subdirs_except(dirs)
+
+    Recursively traverse the subdirs except $(dirs)
+
+.. index::
+    Subdirs()
+
+Subdirs()
+
+    Recursively traverse all the subdirs
+
+.. index::
+    Subdirs_only(dirs)
+
+Subdirs_only(dirs)
+
+    Recursively traverse the given subdirs $(dirs)
+
+Dependency dot files for Graphviz
+======================================================================
+
+.. index::
+    Dot()
+
+Dot()
+
+    Add a rule for ``depend.dot`` for a dependency graph of OCaml files in the current directory
+

doc/_build/html/_sources/OMyTar.txt

+
+==========================
+OMyTar
+==========================
+Handling tar archives, such as .tar, .tar.gz, .tar.bz2, .tgz, .tbz
+
+.. index::
+    TarExtract(f)
+
+TarExtract(f)
+
+    Extract tar archive $(f). 
+
+.. index::
+    TarExtractAt(f, dir)
+
+TarExtractAt(f, dir)
+
+    Extract $(f) to directory $(dir)
+
+.. index::
+    TarList(f)
+
+TarList(f)
+
+    Obtain the list of archived files in $(f)
+
+
+
+.. index::
+    TarAutoExtract(f, dir)
+
+TarAutoExtract(f, dir)
+
+    Extract tar archive $(f) to directory $(dir).
+    If the archive has more than one files or directories in its top directory structure,
+    they are expanded into a newly created directory, whose name is from $(f). 
+

doc/_build/html/_sources/index.txt

+.. OMyMakefile documentation master file, created by
+   sphinx-quickstart on Wed Jan 26 14:51:27 2011.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to OMyMakefile's documentation!
+=======================================
+
+Contents:
+
+.. toctree::
+   :glob:
+   :maxdepth: 2
+
+   *
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
+
+.. * :ref:`modindex`
+

doc/_build/html/_static/basic.css

+/**
+ * Sphinx stylesheet -- basic theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 0;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlight {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}

doc/_build/html/_static/default.css

+/**
+ * Sphinx stylesheet -- default theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}

doc/_build/html/_static/doctools.js

+/// XXX: make it cross browser
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+ */
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+      "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {}
+}
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+}
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i] == item)
+      return true;
+  }
+  return false;
+}
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this)
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initModIndex();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can savely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlight');
+        });
+      }, 10);
+      $('<li class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
+          .appendTo($('.sidebar .this-page-menu'));
+    }
+  },
+
+  /**
+   * init the modindex toggle buttons
+   */
+  initModIndex : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      console.log($('tr.cg-' + idnum).toggle());
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
+    $('span.highlight').removeClass('highlight');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

doc/_build/html/_static/file.png

Added
New image

doc/_build/html/_static/jquery.js

+/*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){
+
+var 
+	// Will speed up references to window, and allows munging its name.
+	window = this,
+	// Will speed up references to undefined, and allows munging its name.
+	undefined,
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+	// Map over the $ in case of overwrite
+	_$ = window.$,
+
+	jQuery = window.jQuery = window.$ = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// A simple way to check for HTML strings or ID strings
+	// (both of which we optimize for)
+	quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+	// Is it a simple selector
+	isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+	init: function( selector, context ) {
+		// Make sure that a selection was provided
+		selector = selector || document;
+
+		// Handle $(DOMElement)
+		if ( selector.nodeType ) {
+			this[0] = selector;
+			this.length = 1;
+			this.context = selector;
+			return this;
+		}
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			// Are we dealing with HTML string or an ID?
+			var match = quickExpr.exec( selector );
+
+			// Verify a match, and that no context was specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] )
+					selector = jQuery.clean( [ match[1] ], context );
+
+				// HANDLE: $("#id")
+				else {