@@ -9,7 +9,7 @@ Introduction
9
9
============
10
10
11
11
This document is geared toward people who want to build and package LLVM and any
12
- combination of LLVM sub-project tools for distribution. This document covers
12
+ combination of its sub-project tools for distribution. This document covers
13
13
useful features of the LLVM build system as well as best practices and general
14
14
information about packaging LLVM.
15
15
@@ -20,7 +20,7 @@ workings of the builds described in the :doc:`AdvancedBuilds` document.
20
20
General Distribution Guidance
21
21
=============================
22
22
23
- When building a distribution of a compiler it is generally advised to perform a
23
+ When building a distribution of a compiler, it is generally advised to perform a
24
24
bootstrap build of the compiler. That means building a "stage 1" compiler with
25
25
your host toolchain, then building the "stage 2" compiler using the "stage 1"
26
26
compiler. This is done so that the compiler you distribute benefits from all the
@@ -57,7 +57,7 @@ at process launch time, which can be very slow for C++ code.
57
57
58
58
The simplest example of building a distribution with reasonable performance is
59
59
captured in the DistributionExample CMake cache file located at
60
- clang/cmake/caches/DistributionExample.cmake. The following command will perform
60
+ `` clang/cmake/caches/DistributionExample.cmake `` . The following commands will perform
61
61
and install the distribution build:
62
62
63
63
.. code-block :: console
@@ -69,7 +69,7 @@ and install the distribution build:
69
69
Difference between ``install `` and ``install-distribution ``
70
70
-----------------------------------------------------------
71
71
72
- One subtle but important thing to note is the difference between the ``install ``
72
+ One subtle but important difference to note is between the ``install ``
73
73
and ``install-distribution `` targets. The ``install `` target is expected to
74
74
install every part of LLVM that your build is configured to generate except the
75
75
LLVM testing tools. Alternatively the ``install-distribution `` target, which is
@@ -137,7 +137,7 @@ Special Notes for Library-only Distributions
137
137
138
138
One of the most powerful features of LLVM is its library-first design mentality
139
139
and the way you can compose a wide variety of tools using different portions of
140
- LLVM. Even in this situation using *BUILD_SHARED_LIBS * is not supported. If you
140
+ LLVM. Even in this situation, using *BUILD_SHARED_LIBS * is not supported. If you
141
141
want to distribute LLVM as a shared library for use in a tool, the recommended
142
142
method is using *LLVM_BUILD_LLVM_DYLIB *, and you can use *LLVM_DYLIB_COMPONENTS *
143
143
to configure which LLVM components are part of libLLVM.
@@ -147,7 +147,7 @@ Options for Optimizing LLVM
147
147
===========================
148
148
149
149
There are four main build optimizations that our CMake build system supports.
150
- When performing a bootstrap build it is not beneficial to do anything other than
150
+ When performing a bootstrap build, it is not beneficial to do anything other than
151
151
setting *CMAKE_BUILD_TYPE * to ``Release `` for the stage-1 compiler. This is
152
152
because the more intensive optimizations are expensive to perform and the
153
153
stage-1 compiler is thrown away. All of the further options described should be
@@ -162,7 +162,7 @@ debug information and use ``-O3`` you can override the
162
162
*CMAKE_<LANG>_FLAGS_RELWITHDEBINFO * option for C and CXX.
163
163
DistributionExample.cmake does this.
164
164
165
- Another easy to use option is Link-Time-Optimization. You can set the
165
+ Another easy-to- use option is Link-Time-Optimization. You can set the
166
166
*LLVM_ENABLE_LTO * option on your stage-2 build to ``Thin `` or ``Full `` to enable
167
167
building LLVM with LTO. These options will significantly increase link time of
168
168
the binaries in the distribution, but it will create much faster binaries. This
@@ -175,7 +175,7 @@ in-tree profiling tests are very limited, and generating the profile takes a
175
175
significant amount of time, but it can result in a significant improvement in
176
176
the performance of the generated binaries.
177
177
178
- In addition to PGO profiling we also have limited support in-tree for generating
178
+ In addition to PGO profiling, we also have limited in-tree support for generating
179
179
linker order files. These files provide the linker with a suggested ordering for
180
180
functions in the final binary layout. This can measurably speed up clang by
181
181
physically grouping functions that are called temporally close to each other.
@@ -187,7 +187,7 @@ Options for Reducing Size
187
187
=========================
188
188
189
189
.. warning ::
190
- Any steps taken to reduce the binary size will come at a cost of runtime
190
+ Any steps taken to reduce binary size will come at the cost of runtime
191
191
performance in the generated binaries.
192
192
193
193
The simplest and least significant way to reduce binary size is to set the
@@ -197,7 +197,7 @@ both the least benefit to size and the least impact on performance.
197
197
198
198
The most impactful way to reduce binary size is to dynamically link LLVM into
199
199
all the tools. This reduces code size by decreasing duplication of common code
200
- between the LLVM-based tools. This can be done by setting the following two
200
+ among the LLVM-based tools. This can be done by setting the following two
201
201
CMake options to ``On ``: *LLVM_BUILD_LLVM_DYLIB * and *LLVM_LINK_LLVM_DYLIB *.
202
202
203
203
.. warning ::
@@ -214,35 +214,35 @@ that are already documented include: *LLVM_TARGETS_TO_BUILD*, *LLVM_ENABLE_PROJE
214
214
*LLVM_ENABLE_RUNTIMES *, *LLVM_BUILD_LLVM_DYLIB *, and *LLVM_LINK_LLVM_DYLIB *.
215
215
216
216
**LLVM_ENABLE_RUNTIMES **:STRING
217
- When building a distribution that includes LLVM runtime projects (i.e. libcxx,
217
+ When building a distribution that includes LLVM runtime projects (i.e., libcxx,
218
218
compiler-rt, libcxxabi, libunwind...), it is important to build those projects
219
219
with the just-built compiler.
220
220
221
221
**LLVM_DISTRIBUTION_COMPONENTS **:STRING
222
- This variable can be set to a semi-colon separated list of LLVM build system
222
+ This variable can be set to a semicolon- separated list of LLVM build system
223
223
components to install. All LLVM-based tools are components, as well as most
224
224
of the libraries and runtimes. Component names match the names of the build
225
225
system targets.
226
226
227
227
**LLVM_DISTRIBUTIONS **:STRING
228
- This variable can be set to a semi-colon separated list of distributions. See
228
+ This variable can be set to a semicolon- separated list of distributions. See
229
229
the :ref: `Multi-distribution configurations ` section above for details on this
230
230
and other CMake variables to configure multiple distributions.
231
231
232
232
**LLVM_RUNTIME_DISTRIBUTION_COMPONENTS **:STRING
233
- This variable can be set to a semi-colon separated list of runtime library
233
+ This variable can be set to a semicolon- separated list of runtime library
234
234
components. This is used in conjunction with *LLVM_ENABLE_RUNTIMES * to specify
235
235
components of runtime libraries that you want to include in your distribution.
236
236
Just like with *LLVM_DISTRIBUTION_COMPONENTS *, component names match the names
237
237
of the build system targets.
238
238
239
239
**LLVM_DYLIB_COMPONENTS **:STRING
240
- This variable can be set to a semi-colon separated name of LLVM library
240
+ This variable can be set to a semicolon- separated name of LLVM library
241
241
components. LLVM library components are either library names with the LLVM
242
- prefix removed (i.e. Support, Demangle...), LLVM target names, or special
242
+ prefix removed (i.e., Support, Demangle...), LLVM target names, or special
243
243
purpose component names. The special purpose component names are:
244
244
245
- #. ``all `` - All LLVM available component libraries
245
+ #. ``all `` - All available LLVM component libraries
246
246
#. ``Native `` - The LLVM target for the Native system
247
247
#. ``AllTargetsAsmParsers `` - All the included target ASM parsers libraries
248
248
#. ``AllTargetsDescs `` - All the included target descriptions libraries
0 commit comments