119 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 | |
|                       "http://www.w3.org/TR/html4/strict.dtd">
 | |
| <html>
 | |
| <head>
 | |
|   <title>Advice on Packaging LLVM</title>
 | |
|   <link rel="stylesheet" href="llvm.css" type="text/css">
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
| <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>
 | |
| 
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_section"><a name="overview">Overview</a></div>
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_text">
 | |
| 
 | |
| <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 (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>
 | |
| 
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_section"><a name="cxx-features">C++ Features</a></div>
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_text">
 | |
| 
 | |
| <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 still inherit from LLVM
 | |
|   classes.</dd>
 | |
| </dl>
 | |
| </div>
 | |
| 
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_section"><a name="shared-library">Shared Library</a></div>
 | |
| <!--=========================================================================-->
 | |
| <div class="doc_text">
 | |
| 
 | |
| <p>Configure with <tt>--enable-shared</tt> to build
 | |
| <tt>libLLVM-<var>major</var>.<var>minor</var>.(so|dylib)</tt> and link the tools
 | |
| 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>
 | |
|   <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/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$
 | |
| </address>
 | |
| </body>
 | |
| </html>
 |