Move the handling of PassRegistrationListener's to PassRegistry.
[oota-llvm.git] / docs / Packaging.html
index c6eea38ed6d6d81e4f6423da03e409f9ecd53f33..217590e6c24ed6a0563bcd31b1f860fb2c92d489 100644 (file)
 <div class="doc_title">Advice on Packaging LLVM</div>
 <ol>
   <li><a href="#overview">Overview</a></li>
+  <li><a href="#compilation">Compile Flags</a></li>
   <li><a href="#cxx-features">C++ Features</a></li>
   <li><a href="#shared-library">Shared Library</a></li>
+  <li><a href="#deps">Dependencies</a></li>
 </ol>
 
 <!--=========================================================================-->
 
 <p>LLVM sets certain default configure options to make sure our developers don't
 break things for constrained platforms.  These settings are not optimal for most
-desktop systems, and we hope that packagers (i.e., Redhat, Debian, MacPorts,
+desktop systems, and we hope that packagers (e.g., Redhat, Debian, MacPorts,
 etc.) will tweak them.  This document lists settings we suggest you tweak.
 </p>
+
+<p>LLVM's API changes with each release, so users are likely to want, for
+example, both LLVM-2.6 and LLVM-2.7 installed at the same time to support apps
+developed against each.
+</p>
+</div>
+
+<!--=========================================================================-->
+<div class="doc_section"><a name="compilation">Compile Flags</a></div>
+<!--=========================================================================-->
+<div class="doc_text">
+
+<p>LLVM runs much more quickly when it's optimized and assertions are removed.
+However, such a build is currently incompatible with users who build without
+defining NDEBUG, and the lack of assertions makes it hard to debug problems in
+user code.  We recommend allowing users to install both optimized and debug
+versions of LLVM in parallel.  The following configure flags are relevant:
+</p>
+
+<dl>
+  <dt><tt>--disable-assertions</tt></dt><dd>Builds LLVM with <tt>NDEBUG</tt>
+  defined.  Changes the LLVM ABI.  Also available by setting
+  <tt>DISABLE_ASSERTIONS=0|1</tt> in <tt>make</tt>'s environment.  This defaults
+  to enabled regardless of the optimization setting, but it slows things
+  down.</dd>
+
+  <dt><tt>--enable-debug-symbols</tt></dt><dd>Builds LLVM with <tt>-g</tt>.
+  Also available by setting <tt>DEBUG_SYMBOLS=0|1</tt> in <tt>make</tt>'s
+  environment.  This defaults to disabled when optimizing, so you should turn it
+  back on to let users debug their programs.</dd>
+
+  <dt><tt>--enable-optimized</tt></dt><dd>(For svn checkouts) Builds LLVM with
+  <tt>-O2</tt> and, by default, turns off debug symbols.  Also available by
+  setting <tt>ENABLE_OPTIMIZED=0|1</tt> in <tt>make</tt>'s environment.  This
+  defaults to enabled when not in a checkout.</dd>
+</dl>
 </div>
 
 <!--=========================================================================-->
@@ -34,11 +72,8 @@ etc.) will tweak them.  This document lists settings we suggest you tweak.
 <dl>
   <dt>RTTI</dt><dd>LLVM disables RTTI by default.  Add <tt>REQUIRES_RTTI=1</tt>
   to your environment while running <tt>make</tt> to re-enable it.  This will
-  allow users to build with RTTI enabled and inherit from LLVM classes.</dd>
-  <dt>Exceptions</dt><dd>LLVM disables exceptions by default.  Add
-  <tt>REQUIRES_EH=1</tt> to your environment while running <tt>make</tt> to
-  re-enable them.  This will allow users to link LLVM and exception-using code.
-  It also re-enables RTTI.</dd>
+  allow users to build with RTTI enabled and still inherit from LLVM
+  classes.</dd>
 </dl>
 </div>
 
@@ -53,6 +88,22 @@ against it.  This saves lots of binary size at the cost of some startup time.
 </p>
 </div>
 
+<!--=========================================================================-->
+<div class="doc_section"><a name="deps">Dependencies</a></div>
+<!--=========================================================================-->
+<div class="doc_text">
+
+<dl>
+<dt><tt>--enable-libffi</tt></dt><dd>Depend on <a
+href="http://sources.redhat.com/libffi/">libffi</a> to allow the LLVM
+interpreter to call external functions.</dd>
+<dt><tt>--with-oprofile</tt></dt><dd>Depend on <a
+href="http://oprofile.sourceforge.net/doc/devel/index.html">libopagent</a>
+(>=version 0.9.4) to let the LLVM JIT tell oprofile about function addresses and
+line numbers.</dd>
+</dl>
+</div>
+
 <!-- *********************************************************************** -->
 <hr>
 <address>
@@ -61,7 +112,7 @@ against it.  This saves lots of binary size at the cost of some startup time.
   <a href="http://validator.w3.org/check/referer"><img
   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-01-01 23:10:51 -0800 (Thu, 01 Jan 2009) $
+  Last modified: $Date$
 </address>
 </body>
 </html>