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.
 |