You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
|   | ========================
 | ||
|  | Advice on Packaging LLVM
 | ||
|  | ========================
 | ||
|  | 
 | ||
|  | .. contents::
 | ||
|  |    :local: | ||
|  | 
 | ||
|  | Overview
 | ||
|  | ========
 | ||
|  | 
 | ||
|  | 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.
 | ||
|  | 
 | ||
|  | 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.
 | ||
|  | 
 | ||
|  | Compile Flags
 | ||
|  | =============
 | ||
|  | 
 | ||
|  | 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:
 | ||
|  | 
 | ||
|  | ``--disable-assertions``
 | ||
|  |     Builds LLVM with ``NDEBUG`` defined.  Changes the LLVM ABI.  Also available
 | ||
|  |     by setting ``DISABLE_ASSERTIONS=0|1`` in ``make``'s environment.  This
 | ||
|  |     defaults to enabled regardless of the optimization setting, but it slows
 | ||
|  |     things down.
 | ||
|  | 
 | ||
|  | ``--enable-debug-symbols``
 | ||
|  |     Builds LLVM with ``-g``.  Also available by setting ``DEBUG_SYMBOLS=0|1`` in
 | ||
|  |     ``make``'s environment.  This defaults to disabled when optimizing, so you
 | ||
|  |     should turn it back on to let users debug their programs.
 | ||
|  | 
 | ||
|  | ``--enable-optimized``
 | ||
|  |     (For svn checkouts) Builds LLVM with ``-O2`` and, by default, turns off
 | ||
|  |     debug symbols.  Also available by setting ``ENABLE_OPTIMIZED=0|1`` in
 | ||
|  |     ``make``'s environment.  This defaults to enabled when not in a
 | ||
|  |     checkout.
 | ||
|  | 
 | ||
|  | C++ Features
 | ||
|  | ============
 | ||
|  | 
 | ||
|  | RTTI
 | ||
|  |     LLVM disables RTTI by default.  Add ``REQUIRES_RTTI=1`` to your environment
 | ||
|  |     while running ``make`` to re-enable it.  This will allow users to build with
 | ||
|  |     RTTI enabled and still inherit from LLVM classes.
 | ||
|  | 
 | ||
|  | Shared Library
 | ||
|  | ==============
 | ||
|  | 
 | ||
|  | Configure with ``--enable-shared`` to build
 | ||
|  | ``libLLVM-<major>.<minor>.(so|dylib)`` and link the tools against it.  This
 | ||
|  | saves lots of binary size at the cost of some startup time.
 | ||
|  | 
 | ||
|  | Dependencies
 | ||
|  | ============
 | ||
|  | 
 | ||
|  | ``--enable-libffi``
 | ||
|  |     Depend on `libffi <http://sources.redhat.com/libffi/>`_ to allow the LLVM
 | ||
|  |     interpreter to call external functions.
 | ||
|  | 
 | ||
|  | ``--with-oprofile``
 | ||
|  | 
 | ||
|  |     Depend on `libopagent
 | ||
|  |     <http://oprofile.sourceforge.net/doc/devel/index.html>`_ (>=version 0.9.4)
 | ||
|  |     to let the LLVM JIT tell oprofile about function addresses and line
 | ||
|  |     numbers.
 |