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