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