Support -[weak_]framework and -F in llvmc.
[oota-llvm.git] / docs / CompilerDriverTutorial.html
index 47a9d090044f93048c3d1f96ef22e4fe5b6203b5..317b1d1271276190e907d7d89068bb884a4c78b5 100644 (file)
@@ -3,38 +3,38 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <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.5: http://docutils.sourceforge.net/" />
 <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.css" type="text/css" />
 </head>
 <body>
 <div class="document" id="tutorial-using-llvmc">
 <h1 class="title">Tutorial - Using LLVMC</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 &lt;<a class="reference" href="mailto:foldr&#64;codedegers.com">foldr&#64;codedegers.com</a>&gt;</td></tr>
-</tbody>
-</table>
+
+<!-- This file was automatically generated by rst2html.
+Please do not edit directly!
+The ReST source lives in the directory 'tools/llvmc/doc'. -->
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#introduction" id="id1">Introduction</a></li>
+<li><a class="reference internal" href="#compiling-with-llvmc" id="id2">Compiling with LLVMC</a></li>
+<li><a class="reference internal" href="#using-llvmc-to-generate-toolchain-drivers" id="id3">Using LLVMC to generate toolchain drivers</a></li>
+</ul>
+</div>
+<div class="doc_author">
+<p>Written by <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a></p>
+</div><div class="section" id="introduction">
+<h1><a class="toc-backref" href="#id1">Introduction</a></h1>
 <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
 is designed to be more adaptable and easier to customize. Most of
 LLVMC functionality is implemented via plugins, which can be loaded
 dynamically or compiled in. This tutorial describes the basic usage
 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 class="section">
-<h1><a class="toc-backref" href="#id3" id="compiling-with-llvmc" name="compiling-with-llvmc">Compiling with LLVMC</a></h1>
+<div class="section" id="compiling-with-llvmc">
+<h1><a class="toc-backref" href="#id2">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
 much as possible, so most of the familiar options work:</p>
 <pre class="literal-block">
@@ -46,25 +46,30 @@ hello
 commands are executed by using the <tt class="docutils literal"><span class="pre">-v</span></tt> option). For further help on
 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 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>
-<p>LLVMC plugins are written mostly using TableGen <a class="footnote-reference" href="#id2" id="id1" name="id1">[1]</a>, so you need to
+<div class="section" id="using-llvmc-to-generate-toolchain-drivers">
+<h1><a class="toc-backref" href="#id3">Using LLVMC to generate toolchain drivers</a></h1>
+<p>LLVMC plugins are written mostly using <a class="reference external" href="http://llvm.org/docs/TableGenFundamentals.html">TableGen</a>, so you need to
 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
-wrapper for <tt class="docutils literal"><span class="pre">gcc</span></tt>:</p>
+<p>Start by compiling <tt class="docutils literal"><span class="pre">example/Simple</span></tt>, which is a primitive wrapper for
+<tt class="docutils literal"><span class="pre">gcc</span></tt>:</p>
 <pre class="literal-block">
 $ cd $LLVM_DIR/tools/llvmc
-$ make DRIVER_NAME=mygcc BUILTIN_PLUGINS=Simple
+$ cp -r example/Simple plugins/Simple
+
+  # NB: A less verbose way to compile standalone LLVMC-based drivers is
+  # described in the reference manual.
+
+$ make LLVMC_BASED_DRIVER_NAME=mygcc LLVMC_BUILTIN_PLUGINS=Simple
 $ cat &gt; hello.c
 [...]
 $ mygcc hello.c
 $ ./hello.out
 Hello
 </pre>
-<p>Here we link our plugin with the LLVMC core statically to form an
-executable file called <tt class="docutils literal"><span class="pre">mygcc</span></tt>. It is also possible to build our
-plugin as a standalone dynamic library; this is described in the
-reference manual.</p>
+<p>Here we link our plugin with the LLVMC core statically to form an executable
+file called <tt class="docutils literal"><span class="pre">mygcc</span></tt>. It is also possible to build our plugin as a dynamic
+library to be loaded by the <tt class="docutils literal"><span class="pre">llvmc</span></tt> executable (or any other LLVMC-based
+standalone driver); this is described in the reference manual.</p>
 <p>Contents of the file <tt class="docutils literal"><span class="pre">Simple.td</span></tt> look like this:</p>
 <pre class="literal-block">
 // Include common definitions
@@ -102,29 +107,20 @@ and is used for deciding which toolchain corresponds to a given input
 file.</p>
 <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>
-</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 />
 <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>
-</div>
+Last modified: $Date: 2008-12-11 11:34:48 -0600 (Thu, 11 Dec 2008) $
+</address></div>
 </div>
 </body>
 </html>