More cosmetic tweaks for llvmc docs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60969 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2008-12-13 02:28:58 +00:00
parent 9e269f05db
commit d565203d96
7 changed files with 155 additions and 171 deletions

View File

@ -5,20 +5,41 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" />
<title>Customizing LLVMC: Reference Manual</title> <title>Customizing LLVMC: Reference Manual</title>
<meta name="author" content="Mikhail Glushenkov &lt;foldr&#64;codedegers.com&gt;" />
<link rel="stylesheet" href="llvm-rst.css" type="text/css" /> <link rel="stylesheet" href="llvm-rst.css" type="text/css" />
</head> </head>
<body> <body>
<div class="document" id="customizing-llvmc-reference-manual"> <div class="document" id="customizing-llvmc-reference-manual">
<h1 class="title">Customizing LLVMC: Reference Manual</h1> <h1 class="title">Customizing LLVMC: Reference Manual</h1>
<table class="docinfo" frame="void" rules="none"> <div class="contents topic">
<col class="docinfo-name" /> <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<col class="docinfo-content" /> <ul class="simple">
<tbody valign="top"> <li><a class="reference" href="#introduction" id="id4" name="id4">Introduction</a></li>
<tr><th class="docinfo-name">Author:</th> <li><a class="reference" href="#compiling-with-llvmc" id="id5" name="id5">Compiling with LLVMC</a></li>
<td>Mikhail Glushenkov &lt;<a class="reference" href="mailto:foldr&#64;codedegers.com">foldr&#64;codedegers.com</a>&gt;</td></tr> <li><a class="reference" href="#predefined-options" id="id6" name="id6">Predefined options</a></li>
</tbody> <li><a class="reference" href="#compiling-llvmc-plugins" id="id7" name="id7">Compiling LLVMC plugins</a></li>
</table> <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 <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 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 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 by plugins, which can be either statically or dynamically linked. This
makes it possible to easily adapt LLVMC for other purposes - for makes it possible to easily adapt LLVMC for other purposes - for
example, as a build tool for game resources.</p> 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> 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>
<div class="section"> <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, <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, although there are some small differences. Most of the time, however,
you shouldn't be able to notice them:</p> 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> the <tt class="docutils literal"><span class="pre">-clang</span></tt> option.</p>
</div> </div>
<div class="section"> <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 <p>LLVMC has some built-in options that can't be overridden in the
configuration libraries:</p> configuration libraries:</p>
<ul class="simple"> <ul class="simple">
@ -121,7 +117,7 @@ their standard meaning.</li>
</ul> </ul>
</div> </div>
<div class="section"> <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 <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> skeleton project which lives under <tt class="docutils literal"><span class="pre">$LLVMC_DIR/plugins/Simple</span></tt>:</p>
<pre class="literal-block"> <pre class="literal-block">
@ -174,7 +170,7 @@ $ make BUILTIN_PLUGINS=&quot;&quot;
</pre> </pre>
</div> </div>
<div class="section"> <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 <p>Each TableGen configuration file should include the common
definitions:</p> definitions:</p>
<pre class="literal-block"> <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> <tt class="docutils literal"><span class="pre">gsview</span></tt> installed for this to work properly.</p>
</div> </div>
<div class="section"> <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 <p>Command-line options that the plugin supports are defined by using an
<tt class="docutils literal"><span class="pre">OptionList</span></tt>:</p> <tt class="docutils literal"><span class="pre">OptionList</span></tt>:</p>
<pre class="literal-block"> <pre class="literal-block">
@ -293,7 +289,7 @@ output.</li>
</li> </li>
</ul> </ul>
<div class="section"> <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 <p>Sometimes, when linking several plugins together, one plugin needs to
access options defined in some other plugin. Because of the way access options defined in some other plugin. Because of the way
options are implemented, such options should be marked as options are implemented, such options should be marked as
@ -308,7 +304,7 @@ for. Example:</p>
</div> </div>
</div> </div>
<div class="section"> <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 <p>The 'case' construct is the main means by which programmability is
achieved in LLVMC. It can be used to calculate edge weights, program achieved in LLVMC. It can be used to calculate edge weights, program
actions and modify the shell commands to be executed. The 'case' 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> </ul>
</div> </div>
<div class="section"> <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, <p>As was said earlier, nodes in the compilation graph represent tools,
which are described separately. A tool definition looks like this 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> (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> </li>
</ul> </ul>
<div class="section"> <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 <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 precisely what the <tt class="docutils literal"><span class="pre">actions</span></tt> property is for. The next example
illustrates this feature:</p> illustrates this feature:</p>
@ -486,7 +482,7 @@ Example: <tt class="docutils literal"><span class="pre">(unpack_values</span> <s
</div> </div>
</div> </div>
<div class="section"> <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 <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 modify the language map, which defines mappings from file extensions
to language names. It is used to choose the proper toolchain(s) for a to language names. It is used to choose the proper toolchain(s) for a
@ -509,9 +505,9 @@ multiple output languages, for nodes &quot;inside&quot; the graph the input and
output languages should match. This is enforced at compile-time.</p> output languages should match. This is enforced at compile-time.</p>
</div> </div>
<div class="section"> <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"> <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, <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 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 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> </pre>
</div> </div>
<div class="section"> <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, <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 one can create edges between nodes defined in some other plugin. To
make this work, however, that plugin should be loaded first. 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> loaded last.</p>
</div> </div>
<div class="section"> <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 <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 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 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
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 <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 creates a Graphviz source file (<tt class="docutils literal"><span class="pre">compilation-graph.dot</span></tt>) in the
current directory.</p> 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 /> <hr />
<address> <address>
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="http://jigsaw.w3.org/css-validator/images/vcss-blue" <a href="http://jigsaw.w3.org/css-validator/check/referer">
alt="Valid CSS" /></a> <img src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid CSS" /></a>
alt="Valid XHTML 1.0 Transitional"/></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="mailto:foldr@codedgers.com">Mikhail Glushenkov</a><br />
<a href="http://llvm.org">LLVM Compiler Infrastructure</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) $ Last modified: $Date: 2008-12-11 11:34:48 -0600 (Thu, 11 Dec 2008) $
</address> </address></div>
</div> </div>
</div> </div>
</body> </body>

View File

@ -5,36 +5,32 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" />
<title>Tutorial - Using LLVMC</title> <title>Tutorial - Using LLVMC</title>
<meta name="author" content="Mikhail Glushenkov &lt;foldr&#64;codedegers.com&gt;" />
<link rel="stylesheet" href="llvm-rst.css" type="text/css" /> <link rel="stylesheet" href="llvm-rst.css" type="text/css" />
</head> </head>
<body> <body>
<div class="document" id="tutorial-using-llvmc"> <div class="document" id="tutorial-using-llvmc">
<h1 class="title">Tutorial - Using LLVMC</h1> <h1 class="title">Tutorial - Using LLVMC</h1>
<table class="docinfo" frame="void" rules="none"> <div class="contents topic">
<col class="docinfo-name" /> <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<col class="docinfo-content" /> <ul class="simple">
<tbody valign="top"> <li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
<tr><th class="docinfo-name">Author:</th> <li><a class="reference" href="#compiling-with-llvmc" id="id2" name="id2">Compiling with LLVMC</a></li>
<td>Mikhail Glushenkov &lt;<a class="reference" href="mailto:foldr&#64;codedegers.com">foldr&#64;codedegers.com</a>&gt;</td></tr> <li><a class="reference" href="#using-llvmc-to-generate-toolchain-drivers" id="id3" name="id3">Using LLVMC to generate toolchain drivers</a></li>
</tbody> </ul>
</table> </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="#id1" id="introduction" name="introduction">Introduction</a></h1>
<p>LLVMC is a generic compiler driver, which plays the same role for LLVM <p>LLVMC is a generic compiler driver, which plays the same role for LLVM
as the <tt class="docutils literal"><span class="pre">gcc</span></tt> program does for GCC - the difference being that LLVMC as the <tt class="docutils literal"><span class="pre">gcc</span></tt> program does for GCC - the difference being that LLVMC
is designed to be more adaptable and easier to customize. Most of is designed to be more adaptable and easier to customize. Most of
LLVMC functionality is implemented via plugins, which can be loaded LLVMC functionality is implemented via plugins, which can be loaded
dynamically or compiled in. This tutorial describes the basic usage dynamically or compiled in. This tutorial describes the basic usage
and configuration of LLVMC.</p> and configuration of 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="id3" name="id3">Compiling with LLVMC</a></li>
<li><a class="reference" href="#using-llvmc-to-generate-toolchain-drivers" id="id4" name="id4">Using LLVMC to generate toolchain drivers</a></li>
<li><a class="reference" href="#references" id="id5" name="id5">References</a></li>
</ul>
</div> </div>
<div class="section"> <div class="section">
<h1><a class="toc-backref" href="#id3" id="compiling-with-llvmc" name="compiling-with-llvmc">Compiling with LLVMC</a></h1> <h1><a class="toc-backref" href="#id2" id="compiling-with-llvmc" name="compiling-with-llvmc">Compiling with LLVMC</a></h1>
<p>In general, LLVMC tries to be command-line compatible with <tt class="docutils literal"><span class="pre">gcc</span></tt> as <p>In general, LLVMC tries to be command-line compatible with <tt class="docutils literal"><span class="pre">gcc</span></tt> as
much as possible, so most of the familiar options work:</p> much as possible, so most of the familiar options work:</p>
<pre class="literal-block"> <pre class="literal-block">
@ -47,8 +43,8 @@ commands are executed by using the <tt class="docutils literal"><span class="pre
command-line LLVMC usage, refer to the <tt class="docutils literal"><span class="pre">llvmc</span> <span class="pre">--help</span></tt> output.</p> command-line LLVMC usage, refer to the <tt class="docutils literal"><span class="pre">llvmc</span> <span class="pre">--help</span></tt> output.</p>
</div> </div>
<div class="section"> <div class="section">
<h1><a class="toc-backref" href="#id4" id="using-llvmc-to-generate-toolchain-drivers" name="using-llvmc-to-generate-toolchain-drivers">Using LLVMC to generate toolchain drivers</a></h1> <h1><a class="toc-backref" href="#id3" id="using-llvmc-to-generate-toolchain-drivers" name="using-llvmc-to-generate-toolchain-drivers">Using LLVMC to generate toolchain drivers</a></h1>
<p>LLVMC plugins are written mostly using TableGen <a class="footnote-reference" href="#id2" id="id1" name="id1">[1]</a>, so you need to <p>LLVMC plugins are written mostly using <a class="reference" href="http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html">TableGen</a>, so you need to
be familiar with it to get anything done.</p> be familiar with it to get anything done.</p>
<p>Start by compiling <tt class="docutils literal"><span class="pre">plugins/Simple/Simple.td</span></tt>, which is a primitive <p>Start by compiling <tt class="docutils literal"><span class="pre">plugins/Simple/Simple.td</span></tt>, which is a primitive
wrapper for <tt class="docutils literal"><span class="pre">gcc</span></tt>:</p> wrapper for <tt class="docutils literal"><span class="pre">gcc</span></tt>:</p>
@ -102,29 +98,20 @@ and is used for deciding which toolchain corresponds to a given input
file.</p> file.</p>
<p>To learn more about LLVMC customization, refer to the reference <p>To learn more about LLVMC customization, refer to the reference
manual and plugin source code in the <tt class="docutils literal"><span class="pre">plugins</span></tt> directory.</p> manual and plugin source code in the <tt class="docutils literal"><span class="pre">plugins</span></tt> directory.</p>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id5" id="references" name="references">References</a></h1>
<table class="docutils footnote" frame="void" id="id2" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id1" name="id2">[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>
<hr /> <hr />
<address> <address>
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="http://jigsaw.w3.org/css-validator/images/vcss-blue" <a href="http://jigsaw.w3.org/css-validator/check/referer">
alt="Valid CSS" /></a> <img src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid CSS" /></a>
alt="Valid XHTML 1.0 Transitional"/></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="mailto:foldr@codedgers.com">Mikhail Glushenkov</a><br />
<a href="http://llvm.org">LLVM Compiler Infrastructure</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) $ Last modified: $Date: 2008-12-11 11:34:48 -0600 (Thu, 11 Dec 2008) $
</address> </address></div>
</div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -41,7 +41,10 @@ h1 {
margin: 20pt 0pt 5pt 0pt; margin: 20pt 0pt 5pt 0pt;
} }
.title { padding-top: 0; margin-top: 0; text-align: left; font-size: 25pt } .title { padding-top: 0; margin-top: 0; text-align: left;
font-size: 25pt }
#contents { font-weight: bold; }
h2 { width: 75%; h2 { width: 75%;
text-align: left; font-size: 12pt; padding: 4pt 4pt 4pt 4pt; text-align: left; font-size: 12pt; padding: 4pt 4pt 4pt 4pt;
margin: 1.5em 0.5em 0.5em 0.5em } margin: 1.5em 0.5em 0.5em 0.5em }
@ -67,7 +70,7 @@ h3 { margin: 2.0em 0.5em 0.5em 0.5em;
.literal-block { border: solid 1px gray; background: #eeeeee; .literal-block { border: solid 1px gray; background: #eeeeee;
margin: 0 1em 0 1em; margin: 0 1em 0 1em;
padding: 0 1em 0 1em; padding: 1em 2em 1em 1em;
display:table; display:table;
} }
.doc_notes { background: #fafafa; border: 1px solid #cecece; padding: 0.1em } .doc_notes { background: #fafafa; border: 1px solid #cecece; padding: 0.1em }

View File

@ -1,7 +1,17 @@
=================================== ===================================
Customizing LLVMC: Reference Manual Customizing LLVMC: Reference Manual
=================================== ===================================
:Author: Mikhail Glushenkov <foldr@codedegers.com>
.. contents::
.. raw:: html
<div class="doc_author">
<p>Written by <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a></p>
</div>
Introduction
============
LLVMC is a generic compiler driver, designed to be customizable and LLVMC is a generic compiler driver, designed to be customizable and
extensible. It plays the same role for LLVM as the ``gcc`` program extensible. It plays the same role for LLVM as the ``gcc`` program
@ -16,11 +26,10 @@ by plugins, which can be either statically or dynamically linked. This
makes it possible to easily adapt LLVMC for other purposes - for makes it possible to easily adapt LLVMC for other purposes - for
example, as a build tool for game resources. example, as a build tool for game resources.
Because LLVMC employs TableGen [1]_ as its configuration language, you Because LLVMC employs TableGen_ as its configuration language, you
need to be familiar with it to customize LLVMC. need to be familiar with it to customize LLVMC.
.. _TableGen: http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html
.. contents::
Compiling with LLVMC Compiling with LLVMC
@ -580,23 +589,27 @@ Debugging
When writing LLVMC plugins, it can be useful to get a visual view of 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 the resulting compilation graph. This can be achieved via the command
line option ``--view-graph``. This command assumes that Graphviz [2]_ and line option ``--view-graph``. This command assumes that Graphviz_ and
Ghostview [3]_ are installed. There is also a ``--dump-graph`` option that Ghostview_ are installed. There is also a ``--dump-graph`` option that
creates a Graphviz source file(``compilation-graph.dot``) in the creates a Graphviz source file (``compilation-graph.dot``) in the
current directory. current directory.
.. _Graphviz: http://www.graphviz.org/
References .. _Ghostview: http://pages.cs.wisc.edu/~ghost/
==========
.. [1] TableGen Fundamentals
http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html
.. [2] Graphviz
http://www.graphviz.org/
.. [3] Ghostview
http://pages.cs.wisc.edu/~ghost/
.. raw:: html .. raw:: html
:file: footer.html
<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="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>

View File

@ -1,7 +1,17 @@
====================== ======================
Tutorial - Using LLVMC Tutorial - Using LLVMC
====================== ======================
:Author: Mikhail Glushenkov <foldr@codedegers.com>
.. contents::
.. raw:: html
<div class="doc_author">
<p>Written by <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a></p>
</div>
Introduction
============
LLVMC is a generic compiler driver, which plays the same role for LLVM LLVMC is a generic compiler driver, which plays the same role for LLVM
as the ``gcc`` program does for GCC - the difference being that LLVMC as the ``gcc`` program does for GCC - the difference being that LLVMC
@ -11,9 +21,6 @@ dynamically or compiled in. This tutorial describes the basic usage
and configuration of LLVMC. and configuration of LLVMC.
.. contents::
Compiling with LLVMC Compiling with LLVMC
==================== ====================
@ -32,9 +39,11 @@ command-line LLVMC usage, refer to the ``llvmc --help`` output.
Using LLVMC to generate toolchain drivers Using LLVMC to generate toolchain drivers
========================================= =========================================
LLVMC plugins are written mostly using TableGen [1]_, so you need to LLVMC plugins are written mostly using TableGen_, so you need to
be familiar with it to get anything done. be familiar with it to get anything done.
.. _TableGen: http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html
Start by compiling ``plugins/Simple/Simple.td``, which is a primitive Start by compiling ``plugins/Simple/Simple.td``, which is a primitive
wrapper for ``gcc``:: wrapper for ``gcc``::
@ -93,11 +102,19 @@ file.
To learn more about LLVMC customization, refer to the reference To learn more about LLVMC customization, refer to the reference
manual and plugin source code in the ``plugins`` directory. manual and plugin source code in the ``plugins`` directory.
References
==========
.. [1] TableGen Fundamentals
http://llvm.cs.uiuc.edu/docs/TableGenFundamentals.html
.. raw:: html .. raw:: html
:file: footer.html
<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="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>

View File

@ -1,12 +0,0 @@
<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="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>

View File

@ -41,7 +41,10 @@ h1 {
margin: 20pt 0pt 5pt 0pt; margin: 20pt 0pt 5pt 0pt;
} }
.title { padding-top: 0; margin-top: 0; text-align: left; font-size: 25pt } .title { padding-top: 0; margin-top: 0; text-align: left;
font-size: 25pt }
#contents { font-weight: bold; }
h2 { width: 75%; h2 { width: 75%;
text-align: left; font-size: 12pt; padding: 4pt 4pt 4pt 4pt; text-align: left; font-size: 12pt; padding: 4pt 4pt 4pt 4pt;
margin: 1.5em 0.5em 0.5em 0.5em } margin: 1.5em 0.5em 0.5em 0.5em }
@ -67,7 +70,7 @@ h3 { margin: 2.0em 0.5em 0.5em 0.5em;
.literal-block { border: solid 1px gray; background: #eeeeee; .literal-block { border: solid 1px gray; background: #eeeeee;
margin: 0 1em 0 1em; margin: 0 1em 0 1em;
padding: 0 1em 0 1em; padding: 1em 2em 1em 1em;
display:table; display:table;
} }
.doc_notes { background: #fafafa; border: 1px solid #cecece; padding: 0.1em } .doc_notes { background: #fafafa; border: 1px solid #cecece; padding: 0.1em }