diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2008-12-13 02:28:58 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2008-12-13 02:28:58 +0000 |
commit | d565203d96bbc24f59d28d2be1616ae6bfba907a (patch) | |
tree | b52c0569510a7f53feb41b7ef1e020fdad58b0c6 /docs/CompilerDriver.html | |
parent | 9e269f05dbf021560ec3d0647afab0aa7cfb35b2 (diff) |
More cosmetic tweaks for llvmc docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60969 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/CompilerDriver.html')
-rw-r--r-- | docs/CompilerDriver.html | 143 |
1 files changed, 58 insertions, 85 deletions
diff --git a/docs/CompilerDriver.html b/docs/CompilerDriver.html index 7a256b3bf4..ccb45358db 100644 --- a/docs/CompilerDriver.html +++ b/docs/CompilerDriver.html @@ -5,20 +5,41 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> <title>Customizing LLVMC: Reference Manual</title> -<meta name="author" content="Mikhail Glushenkov <foldr@codedegers.com>" /> <link rel="stylesheet" href="llvm-rst.css" type="text/css" /> </head> <body> <div class="document" id="customizing-llvmc-reference-manual"> <h1 class="title">Customizing LLVMC: Reference Manual</h1> -<table class="docinfo" frame="void" rules="none"> -<col class="docinfo-name" /> -<col class="docinfo-content" /> -<tbody valign="top"> -<tr><th class="docinfo-name">Author:</th> -<td>Mikhail Glushenkov <<a class="reference" href="mailto:foldr@codedegers.com">foldr@codedegers.com</a>></td></tr> -</tbody> -</table> +<div class="contents topic"> +<p class="topic-title first"><a id="contents" name="contents">Contents</a></p> +<ul class="simple"> +<li><a class="reference" href="#introduction" id="id4" name="id4">Introduction</a></li> +<li><a class="reference" href="#compiling-with-llvmc" id="id5" name="id5">Compiling with LLVMC</a></li> +<li><a class="reference" href="#predefined-options" id="id6" name="id6">Predefined options</a></li> +<li><a class="reference" href="#compiling-llvmc-plugins" id="id7" name="id7">Compiling LLVMC plugins</a></li> +<li><a class="reference" href="#customizing-llvmc-the-compilation-graph" id="id8" name="id8">Customizing LLVMC: the compilation graph</a></li> +<li><a class="reference" href="#describing-options" id="id9" name="id9">Describing options</a><ul> +<li><a class="reference" href="#external-options" id="id10" name="id10">External options</a></li> +</ul> +</li> +<li><a class="reference" href="#conditional-evaluation" id="id11" name="id11">Conditional evaluation</a></li> +<li><a class="reference" href="#writing-a-tool-description" id="id12" name="id12">Writing a tool description</a><ul> +<li><a class="reference" href="#actions" id="id13" name="id13">Actions</a></li> +</ul> +</li> +<li><a class="reference" href="#language-map" id="id14" name="id14">Language map</a></li> +<li><a class="reference" href="#more-advanced-topics" id="id15" name="id15">More advanced topics</a><ul> +<li><a class="reference" href="#hooks-and-environment-variables" id="id16" name="id16">Hooks and environment variables</a></li> +<li><a class="reference" href="#how-plugins-are-loaded" id="id17" name="id17">How plugins are loaded</a></li> +<li><a class="reference" href="#debugging" id="id18" name="id18">Debugging</a></li> +</ul> +</li> +</ul> +</div> +<div class="doc_author"> +<p>Written by <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a></p> +</div><div class="section"> +<h1><a class="toc-backref" href="#id4" id="introduction" name="introduction">Introduction</a></h1> <p>LLVMC is a generic compiler driver, designed to be customizable and extensible. It plays the same role for LLVM as the <tt class="docutils literal"><span class="pre">gcc</span></tt> program does for GCC - LLVMC's job is essentially to transform a set of input @@ -31,36 +52,11 @@ abstract graph. The structure of this graph is completely determined by plugins, which can be either statically or dynamically linked. This makes it possible to easily adapt LLVMC for other purposes - for example, as a build tool for game resources.</p> -<p>Because LLVMC employs TableGen <a class="footnote-reference" href="#id7" id="id1" name="id1">[1]</a> as its configuration language, you +<p>Because LLVMC employs <a class="reference" href="http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html">TableGen</a> as its configuration language, you need to be familiar with it to customize LLVMC.</p> -<div class="contents topic"> -<p class="topic-title first"><a id="contents" name="contents">Contents</a></p> -<ul class="simple"> -<li><a class="reference" href="#compiling-with-llvmc" id="id10" name="id10">Compiling with LLVMC</a></li> -<li><a class="reference" href="#predefined-options" id="id11" name="id11">Predefined options</a></li> -<li><a class="reference" href="#compiling-llvmc-plugins" id="id12" name="id12">Compiling LLVMC plugins</a></li> -<li><a class="reference" href="#customizing-llvmc-the-compilation-graph" id="id13" name="id13">Customizing LLVMC: the compilation graph</a></li> -<li><a class="reference" href="#describing-options" id="id14" name="id14">Describing options</a><ul> -<li><a class="reference" href="#external-options" id="id15" name="id15">External options</a></li> -</ul> -</li> -<li><a class="reference" href="#conditional-evaluation" id="id16" name="id16">Conditional evaluation</a></li> -<li><a class="reference" href="#writing-a-tool-description" id="id17" name="id17">Writing a tool description</a><ul> -<li><a class="reference" href="#actions" id="id18" name="id18">Actions</a></li> -</ul> -</li> -<li><a class="reference" href="#language-map" id="id19" name="id19">Language map</a></li> -<li><a class="reference" href="#more-advanced-topics" id="id20" name="id20">More advanced topics</a><ul> -<li><a class="reference" href="#hooks-and-environment-variables" id="id21" name="id21">Hooks and environment variables</a></li> -<li><a class="reference" href="#how-plugins-are-loaded" id="id22" name="id22">How plugins are loaded</a></li> -<li><a class="reference" href="#debugging" id="id23" name="id23">Debugging</a></li> -</ul> -</li> -<li><a class="reference" href="#references" id="id24" name="id24">References</a></li> -</ul> </div> <div class="section"> -<h1><a class="toc-backref" href="#id10" id="compiling-with-llvmc" name="compiling-with-llvmc">Compiling with LLVMC</a></h1> +<h1><a class="toc-backref" href="#id5" id="compiling-with-llvmc" name="compiling-with-llvmc">Compiling with LLVMC</a></h1> <p>LLVMC tries hard to be as compatible with <tt class="docutils literal"><span class="pre">gcc</span></tt> as possible, although there are some small differences. Most of the time, however, you shouldn't be able to notice them:</p> @@ -98,7 +94,7 @@ also possible to choose the work-in-progress <tt class="docutils literal"><span the <tt class="docutils literal"><span class="pre">-clang</span></tt> option.</p> </div> <div class="section"> -<h1><a class="toc-backref" href="#id11" id="predefined-options" name="predefined-options">Predefined options</a></h1> +<h1><a class="toc-backref" href="#id6" id="predefined-options" name="predefined-options">Predefined options</a></h1> <p>LLVMC has some built-in options that can't be overridden in the configuration libraries:</p> <ul class="simple"> @@ -121,7 +117,7 @@ their standard meaning.</li> </ul> </div> <div class="section"> -<h1><a class="toc-backref" href="#id12" id="compiling-llvmc-plugins" name="compiling-llvmc-plugins">Compiling LLVMC plugins</a></h1> +<h1><a class="toc-backref" href="#id7" id="compiling-llvmc-plugins" name="compiling-llvmc-plugins">Compiling LLVMC plugins</a></h1> <p>It's easiest to start working on your own LLVMC plugin by copying the skeleton project which lives under <tt class="docutils literal"><span class="pre">$LLVMC_DIR/plugins/Simple</span></tt>:</p> <pre class="literal-block"> @@ -174,7 +170,7 @@ $ make BUILTIN_PLUGINS="" </pre> </div> <div class="section"> -<h1><a class="toc-backref" href="#id13" id="customizing-llvmc-the-compilation-graph" name="customizing-llvmc-the-compilation-graph">Customizing LLVMC: the compilation graph</a></h1> +<h1><a class="toc-backref" href="#id8" id="customizing-llvmc-the-compilation-graph" name="customizing-llvmc-the-compilation-graph">Customizing LLVMC: the compilation graph</a></h1> <p>Each TableGen configuration file should include the common definitions:</p> <pre class="literal-block"> @@ -242,7 +238,7 @@ debugging), run <tt class="docutils literal"><span class="pre">llvmc</span> <spa <tt class="docutils literal"><span class="pre">gsview</span></tt> installed for this to work properly.</p> </div> <div class="section"> -<h1><a class="toc-backref" href="#id14" id="describing-options" name="describing-options">Describing options</a></h1> +<h1><a class="toc-backref" href="#id9" id="describing-options" name="describing-options">Describing options</a></h1> <p>Command-line options that the plugin supports are defined by using an <tt class="docutils literal"><span class="pre">OptionList</span></tt>:</p> <pre class="literal-block"> @@ -293,7 +289,7 @@ output.</li> </li> </ul> <div class="section"> -<h2><a class="toc-backref" href="#id15" id="external-options" name="external-options">External options</a></h2> +<h2><a class="toc-backref" href="#id10" id="external-options" name="external-options">External options</a></h2> <p>Sometimes, when linking several plugins together, one plugin needs to access options defined in some other plugin. Because of the way options are implemented, such options should be marked as @@ -308,7 +304,7 @@ for. Example:</p> </div> </div> <div class="section"> -<h1><a class="toc-backref" href="#id16" id="conditional-evaluation" name="conditional-evaluation"><span id="case"></span>Conditional evaluation</a></h1> +<h1><a class="toc-backref" href="#id11" id="conditional-evaluation" name="conditional-evaluation"><span id="case"></span>Conditional evaluation</a></h1> <p>The 'case' construct is the main means by which programmability is achieved in LLVMC. It can be used to calculate edge weights, program actions and modify the shell commands to be executed. The 'case' @@ -386,7 +382,7 @@ one of its arguments returns true. Example: <tt class="docutils literal"><span c </ul> </div> <div class="section"> -<h1><a class="toc-backref" href="#id17" id="writing-a-tool-description" name="writing-a-tool-description">Writing a tool description</a></h1> +<h1><a class="toc-backref" href="#id12" id="writing-a-tool-description" name="writing-a-tool-description">Writing a tool description</a></h1> <p>As was said earlier, nodes in the compilation graph represent tools, which are described separately. A tool definition looks like this (taken from the <tt class="docutils literal"><span class="pre">include/llvm/CompilerDriver/Tools.td</span></tt> file):</p> @@ -428,7 +424,7 @@ below).</li> </li> </ul> <div class="section"> -<h2><a class="toc-backref" href="#id18" id="actions" name="actions">Actions</a></h2> +<h2><a class="toc-backref" href="#id13" id="actions" name="actions">Actions</a></h2> <p>A tool often needs to react to command-line options, and this is precisely what the <tt class="docutils literal"><span class="pre">actions</span></tt> property is for. The next example illustrates this feature:</p> @@ -486,7 +482,7 @@ Example: <tt class="docutils literal"><span class="pre">(unpack_values</span> <s </div> </div> <div class="section"> -<h1><a class="toc-backref" href="#id19" id="language-map" name="language-map">Language map</a></h1> +<h1><a class="toc-backref" href="#id14" id="language-map" name="language-map">Language map</a></h1> <p>If you are adding support for a new language to LLVMC, you'll need to modify the language map, which defines mappings from file extensions to language names. It is used to choose the proper toolchain(s) for a @@ -509,9 +505,9 @@ multiple output languages, for nodes "inside" the graph the input and output languages should match. This is enforced at compile-time.</p> </div> <div class="section"> -<h1><a class="toc-backref" href="#id20" id="more-advanced-topics" name="more-advanced-topics">More advanced topics</a></h1> +<h1><a class="toc-backref" href="#id15" id="more-advanced-topics" name="more-advanced-topics">More advanced topics</a></h1> <div class="section"> -<h2><a class="toc-backref" href="#id21" id="hooks-and-environment-variables" name="hooks-and-environment-variables"><span id="hooks"></span>Hooks and environment variables</a></h2> +<h2><a class="toc-backref" href="#id16" id="hooks-and-environment-variables" name="hooks-and-environment-variables"><span id="hooks"></span>Hooks and environment variables</a></h2> <p>Normally, LLVMC executes programs from the system <tt class="docutils literal"><span class="pre">PATH</span></tt>. Sometimes, this is not sufficient: for example, we may want to specify tool names in the configuration file. This can be achieved via the mechanism of @@ -539,7 +535,7 @@ the <tt class="docutils literal"><span class="pre">case</span></tt> expression ( </pre> </div> <div class="section"> -<h2><a class="toc-backref" href="#id22" id="how-plugins-are-loaded" name="how-plugins-are-loaded"><span id="priorities"></span>How plugins are loaded</a></h2> +<h2><a class="toc-backref" href="#id17" id="how-plugins-are-loaded" name="how-plugins-are-loaded"><span id="priorities"></span>How plugins are loaded</a></h2> <p>It is possible for LLVMC plugins to depend on each other. For example, one can create edges between nodes defined in some other plugin. To make this work, however, that plugin should be loaded first. To @@ -555,50 +551,27 @@ with 0. Therefore, the plugin with the highest priority value will be loaded last.</p> </div> <div class="section"> -<h2><a class="toc-backref" href="#id23" id="debugging" name="debugging">Debugging</a></h2> +<h2><a class="toc-backref" href="#id18" id="debugging" name="debugging">Debugging</a></h2> <p>When writing LLVMC plugins, it can be useful to get a visual view of the resulting compilation graph. This can be achieved via the command -line option <tt class="docutils literal"><span class="pre">--view-graph</span></tt>. This command assumes that Graphviz <a class="footnote-reference" href="#id8" id="id5" name="id5">[2]</a> and -Ghostview <a class="footnote-reference" href="#id9" id="id6" name="id6">[3]</a> are installed. There is also a <tt class="docutils literal"><span class="pre">--dump-graph</span></tt> option that -creates a Graphviz source file(<tt class="docutils literal"><span class="pre">compilation-graph.dot</span></tt>) in the +line option <tt class="docutils literal"><span class="pre">--view-graph</span></tt>. This command assumes that <a class="reference" href="http://www.graphviz.org/">Graphviz</a> and +<a class="reference" href="http://pages.cs.wisc.edu/~ghost/">Ghostview</a> are installed. There is also a <tt class="docutils literal"><span class="pre">--dump-graph</span></tt> option that +creates a Graphviz source file (<tt class="docutils literal"><span class="pre">compilation-graph.dot</span></tt>) in the current directory.</p> -</div> -</div> -<div class="section"> -<h1><a class="toc-backref" href="#id24" id="references" name="references">References</a></h1> -<table class="docutils footnote" frame="void" id="id7" rules="none"> -<colgroup><col class="label" /><col /></colgroup> -<tbody valign="top"> -<tr><td class="label"><a class="fn-backref" href="#id1" name="id7">[1]</a></td><td>TableGen Fundamentals -<a class="reference" href="http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html">http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html</a></td></tr> -</tbody> -</table> -<table class="docutils footnote" frame="void" id="id8" rules="none"> -<colgroup><col class="label" /><col /></colgroup> -<tbody valign="top"> -<tr><td class="label"><a class="fn-backref" href="#id5" name="id8">[2]</a></td><td>Graphviz -<a class="reference" href="http://www.graphviz.org/">http://www.graphviz.org/</a></td></tr> -</tbody> -</table> -<table class="docutils footnote" frame="void" id="id9" rules="none"> -<colgroup><col class="label" /><col /></colgroup> -<tbody valign="top"> -<tr><td class="label"><a class="fn-backref" href="#id6" name="id9">[3]</a></td><td>Ghostview -<a class="reference" href="http://pages.cs.wisc.edu/~ghost/">http://pages.cs.wisc.edu/~ghost/</a></td></tr> -</tbody> -</table> <hr /> <address> - <a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="http://jigsaw.w3.org/css-validator/images/vcss-blue" - alt="Valid CSS" /></a> - <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10-blue" - alt="Valid XHTML 1.0 Transitional"/></a> +<a href="http://jigsaw.w3.org/css-validator/check/referer"> +<img src="http://jigsaw.w3.org/css-validator/images/vcss-blue" + alt="Valid CSS" /></a> +<a href="http://validator.w3.org/check?uri=referer"> +<img src="http://www.w3.org/Icons/valid-xhtml10-blue" + alt="Valid XHTML 1.0 Transitional"/></a> - <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a><br /> - <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br /> +<a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a><br /> +<a href="http://llvm.org">LLVM Compiler Infrastructure</a><br /> - Last modified: $Date: 2008-12-11 11:34:48 -0600 (Thu, 11 Dec 2008) $ -</address> +Last modified: $Date: 2008-12-11 11:34:48 -0600 (Thu, 11 Dec 2008) $ +</address></div> </div> </div> </body> |