annotate llvm/docs/Packaging.rst @ 235:edfff9242030 cbc-llvm13

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 21 Jul 2021 11:30:30 +0900
parents 0572611fdcc8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ========================
anatofuz
parents:
diff changeset
2 Advice on Packaging LLVM
anatofuz
parents:
diff changeset
3 ========================
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 .. contents::
anatofuz
parents:
diff changeset
6 :local:
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 Overview
anatofuz
parents:
diff changeset
9 ========
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 LLVM sets certain default configure options to make sure our developers don't
anatofuz
parents:
diff changeset
12 break things for constrained platforms. These settings are not optimal for most
anatofuz
parents:
diff changeset
13 desktop systems, and we hope that packagers (e.g., Redhat, Debian, MacPorts,
anatofuz
parents:
diff changeset
14 etc.) will tweak them. This document lists settings we suggest you tweak.
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 LLVM's API changes with each release, so users are likely to want, for example,
anatofuz
parents:
diff changeset
17 both LLVM-2.6 and LLVM-2.7 installed at the same time to support apps developed
anatofuz
parents:
diff changeset
18 against each.
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 Compile Flags
anatofuz
parents:
diff changeset
21 =============
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 LLVM runs much more quickly when it's optimized and assertions are removed.
anatofuz
parents:
diff changeset
24 However, such a build is currently incompatible with users who build without
anatofuz
parents:
diff changeset
25 defining ``NDEBUG``, and the lack of assertions makes it hard to debug problems
anatofuz
parents:
diff changeset
26 in user code. We recommend allowing users to install both optimized and debug
anatofuz
parents:
diff changeset
27 versions of LLVM in parallel. The following configure flags are relevant:
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 ``--disable-assertions``
anatofuz
parents:
diff changeset
30 Builds LLVM with ``NDEBUG`` defined. Changes the LLVM ABI. Also available
anatofuz
parents:
diff changeset
31 by setting ``DISABLE_ASSERTIONS=0|1`` in ``make``'s environment. This
anatofuz
parents:
diff changeset
32 defaults to enabled regardless of the optimization setting, but it slows
anatofuz
parents:
diff changeset
33 things down.
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 ``--enable-debug-symbols``
anatofuz
parents:
diff changeset
36 Builds LLVM with ``-g``. Also available by setting ``DEBUG_SYMBOLS=0|1`` in
anatofuz
parents:
diff changeset
37 ``make``'s environment. This defaults to disabled when optimizing, so you
anatofuz
parents:
diff changeset
38 should turn it back on to let users debug their programs.
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 ``--enable-optimized``
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
41 (For git checkouts) Builds LLVM with ``-O2`` and, by default, turns off
150
anatofuz
parents:
diff changeset
42 debug symbols. Also available by setting ``ENABLE_OPTIMIZED=0|1`` in
anatofuz
parents:
diff changeset
43 ``make``'s environment. This defaults to enabled when not in a
anatofuz
parents:
diff changeset
44 checkout.
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 C++ Features
anatofuz
parents:
diff changeset
47 ============
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 RTTI
anatofuz
parents:
diff changeset
50 LLVM disables RTTI by default. Add ``REQUIRES_RTTI=1`` to your environment
anatofuz
parents:
diff changeset
51 while running ``make`` to re-enable it. This will allow users to build with
anatofuz
parents:
diff changeset
52 RTTI enabled and still inherit from LLVM classes.
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 Shared Library
anatofuz
parents:
diff changeset
55 ==============
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 Configure with ``--enable-shared`` to build
anatofuz
parents:
diff changeset
58 ``libLLVM-<major>.<minor>.(so|dylib)`` and link the tools against it. This
anatofuz
parents:
diff changeset
59 saves lots of binary size at the cost of some startup time.
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 Dependencies
anatofuz
parents:
diff changeset
62 ============
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 ``--enable-libffi``
anatofuz
parents:
diff changeset
65 Depend on `libffi <http://sources.redhat.com/libffi/>`_ to allow the LLVM
anatofuz
parents:
diff changeset
66 interpreter to call external functions.
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 ``--with-oprofile``
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 Depend on `libopagent
anatofuz
parents:
diff changeset
71 <http://oprofile.sourceforge.net/doc/devel/index.html>`_ (>=version 0.9.4)
anatofuz
parents:
diff changeset
72 to let the LLVM JIT tell oprofile about function addresses and line
anatofuz
parents:
diff changeset
73 numbers.