0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 ========================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 Building LLVM with CMake
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 ========================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 .. contents::
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 :local:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 Introduction
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 ============
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 `CMake <http://www.cmake.org/>`_ is a cross-platform build-generator tool. CMake
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 does not build the project, it generates the files needed by your build tool
|
95
|
13 (GNU make, Visual Studio, etc.) for building LLVM.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14
|
120
|
15 If **you are a new contributor**, please start with the :doc:`GettingStarted`
|
|
16 page. This page is geared for existing contributors moving from the
|
|
17 legacy configure/make system.
|
|
18
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 If you are really anxious about getting a functional LLVM build, go to the
|
95
|
20 `Quick start`_ section. If you are a CMake novice, start with `Basic CMake usage`_
|
|
21 and then go back to the `Quick start`_ section once you know what you are doing. The
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 `Options and variables`_ section is a reference for customizing your build. If
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 you already have experience with CMake, this is the recommended starting point.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24
|
120
|
25 This page is geared towards users of the LLVM CMake build. If you're looking for
|
|
26 information about modifying the LLVM CMake build system you may want to see the
|
|
27 :doc:`CMakePrimer` page. It has a basic overview of the CMake language.
|
|
28
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 .. _Quick start:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 Quick start
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 ===========
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 We use here the command-line, non-interactive CMake interface.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 #. `Download <http://www.cmake.org/cmake/resources/software.html>`_ and install
|
120
|
37 CMake. Version 3.4.3 is the minimum required.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 #. Open a shell. Your development tools must be reachable from this shell
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 through the PATH environment variable.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41
|
95
|
42 #. Create a build directory. Building LLVM in the source
|
|
43 directory is not supported. cd to this directory:
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 $ mkdir mybuilddir
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 $ cd mybuilddir
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49
|
95
|
50 #. Execute this command in the shell replacing `path/to/llvm/source/root` with
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 the path to the root of your LLVM source tree:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 $ cmake path/to/llvm/source/root
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56
|
95
|
57 CMake will detect your development environment, perform a series of tests, and
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 generate the files required for building LLVM. CMake will use default values
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 for all build parameters. See the `Options and variables`_ section for
|
95
|
60 a list of build parameters that you can modify.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 This can fail if CMake can't detect your toolset, or if it thinks that the
|
95
|
63 environment is not sane enough. In this case, make sure that the toolset that
|
|
64 you intend to use is the only one reachable from the shell, and that the shell
|
|
65 itself is the correct one for your development environment. CMake will refuse
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66 to build MinGW makefiles if you have a POSIX shell reachable through the PATH
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67 environment variable, for instance. You can force CMake to use a given build
|
95
|
68 tool; for instructions, see the `Usage`_ section, below.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69
|
95
|
70 #. After CMake has finished running, proceed to use IDE project files, or start
|
83
|
71 the build from the build directory:
|
|
72
|
|
73 .. code-block:: console
|
|
74
|
|
75 $ cmake --build .
|
|
76
|
|
77 The ``--build`` option tells ``cmake`` to invoke the underlying build
|
95
|
78 tool (``make``, ``ninja``, ``xcodebuild``, ``msbuild``, etc.)
|
83
|
79
|
95
|
80 The underlying build tool can be invoked directly, of course, but
|
83
|
81 the ``--build`` option is portable.
|
|
82
|
|
83 #. After LLVM has finished building, install it from the build directory:
|
|
84
|
|
85 .. code-block:: console
|
|
86
|
|
87 $ cmake --build . --target install
|
|
88
|
|
89 The ``--target`` option with ``install`` parameter in addition to
|
|
90 the ``--build`` option tells ``cmake`` to build the ``install`` target.
|
|
91
|
|
92 It is possible to set a different install prefix at installation time
|
|
93 by invoking the ``cmake_install.cmake`` script generated in the
|
|
94 build directory:
|
|
95
|
|
96 .. code-block:: console
|
|
97
|
|
98 $ cmake -DCMAKE_INSTALL_PREFIX=/tmp/llvm -P cmake_install.cmake
|
|
99
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
100 .. _Basic CMake usage:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 .. _Usage:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 Basic CMake usage
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104 =================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
105
|
95
|
106 This section explains basic aspects of CMake
|
|
107 which you may need in your day-to-day usage.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
108
|
95
|
109 CMake comes with extensive documentation, in the form of html files, and as
|
|
110 online help accessible via the ``cmake`` executable itself. Execute ``cmake
|
|
111 --help`` for further help options.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
112
|
95
|
113 CMake allows you to specify a build tool (e.g., GNU make, Visual Studio,
|
|
114 or Xcode). If not specified on the command line, CMake tries to guess which
|
|
115 build tool to use, based on your environment. Once it has identified your
|
|
116 build tool, CMake uses the corresponding *Generator* to create files for your
|
|
117 build tool (e.g., Makefiles or Visual Studio or Xcode project files). You can
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 explicitly specify the generator with the command line option ``-G "Name of the
|
95
|
119 generator"``. To see a list of the available generators on your system, execute
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
120
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
123 $ cmake --help
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
124
|
95
|
125 This will list the generator names at the end of the help text.
|
|
126
|
|
127 Generators' names are case-sensitive, and may contain spaces. For this reason,
|
|
128 you should enter them exactly as they are listed in the ``cmake --help``
|
|
129 output, in quotes. For example, to generate project files specifically for
|
|
130 Visual Studio 12, you can execute:
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133
|
95
|
134 $ cmake -G "Visual Studio 12" path/to/llvm/source/root
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
135
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
136 For a given development platform there can be more than one adequate
|
95
|
137 generator. If you use Visual Studio, "NMake Makefiles" is a generator you can use
|
|
138 for building with NMake. By default, CMake chooses the most specific generator
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 supported by your development environment. If you want an alternative generator,
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140 you must tell this to CMake with the ``-G`` option.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
141
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
142 .. todo::
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
143
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
144 Explain variables and cache. Move explanation here from #options section.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
145
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
146 .. _Options and variables:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
147
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
148 Options and variables
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
149 =====================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
150
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
151 Variables customize how the build will be generated. Options are boolean
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
152 variables, with possible values ON/OFF. Options and variables are defined on the
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
153 CMake command line like this:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
154
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
155 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
156
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
157 $ cmake -DVARIABLE=value path/to/llvm/source
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
158
|
95
|
159 You can set a variable after the initial CMake invocation to change its
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
160 value. You can also undefine a variable:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
161
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
162 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
163
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
164 $ cmake -UVARIABLE path/to/llvm/source
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
165
|
95
|
166 Variables are stored in the CMake cache. This is a file named ``CMakeCache.txt``
|
|
167 stored at the root of your build directory that is generated by ``cmake``.
|
|
168 Editing it yourself is not recommended.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
169
|
95
|
170 Variables are listed in the CMake cache and later in this document with
|
|
171 the variable name and type separated by a colon. You can also specify the
|
|
172 variable and type on the CMake command line:
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
173
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
174 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
175
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
176 $ cmake -DVARIABLE:TYPE=value path/to/llvm/source
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
177
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
178 Frequently-used CMake variables
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
179 -------------------------------
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
180
|
77
|
181 Here are some of the CMake variables that are used often, along with a
|
95
|
182 brief explanation and LLVM-specific notes. For full documentation, consult the
|
|
183 CMake manual, or execute ``cmake --help-variable VARIABLE_NAME``.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
184
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
185 **CMAKE_BUILD_TYPE**:STRING
|
95
|
186 Sets the build type for ``make``-based generators. Possible values are
|
|
187 Release, Debug, RelWithDebInfo and MinSizeRel. If you are using an IDE such as
|
|
188 Visual Studio, you should use the IDE settings to set the build type.
|
121
|
189 Be aware that Release and RelWithDebInfo use different optimization levels on
|
|
190 most platforms.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
191
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 **CMAKE_INSTALL_PREFIX**:PATH
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 Path where LLVM will be installed if "make install" is invoked or the
|
95
|
194 "install" target is built.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
195
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
196 **LLVM_LIBDIR_SUFFIX**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
197 Extra suffix to append to the directory where libraries are to be
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
198 installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
199 to install libraries to ``/usr/lib64``.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
200
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
201 **CMAKE_C_FLAGS**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
202 Extra flags to use when compiling C source files.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
203
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
204 **CMAKE_CXX_FLAGS**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
205 Extra flags to use when compiling C++ source files.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
206
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
207 .. _LLVM-specific variables:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
208
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
209 LLVM-specific variables
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
210 -----------------------
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
211
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
212 **LLVM_TARGETS_TO_BUILD**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
213 Semicolon-separated list of targets to build, or *all* for building all
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
214 targets. Case-sensitive. Defaults to *all*. Example:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
215 ``-DLLVM_TARGETS_TO_BUILD="X86;PowerPC"``.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
216
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217 **LLVM_BUILD_TOOLS**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
218 Build LLVM tools. Defaults to ON. Targets for building each tool are generated
|
95
|
219 in any case. You can build a tool separately by invoking its target. For
|
|
220 example, you can build *llvm-as* with a Makefile-based system by executing *make
|
|
221 llvm-as* at the root of your build directory.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
222
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
223 **LLVM_INCLUDE_TOOLS**:BOOL
|
95
|
224 Generate build targets for the LLVM tools. Defaults to ON. You can use this
|
|
225 option to disable the generation of build targets for the LLVM tools.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
226
|
134
|
227 **LLVM_INSTALL_BINUTILS_SYMLINKS**:BOOL
|
|
228 Install symlinks from the binutils tool names to the corresponding LLVM tools.
|
|
229 For example, ar will be symlinked to llvm-ar.
|
|
230
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
231 **LLVM_BUILD_EXAMPLES**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
232 Build LLVM examples. Defaults to OFF. Targets for building each example are
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
233 generated in any case. See documentation for *LLVM_BUILD_TOOLS* above for more
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
234 details.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
235
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
236 **LLVM_INCLUDE_EXAMPLES**:BOOL
|
95
|
237 Generate build targets for the LLVM examples. Defaults to ON. You can use this
|
|
238 option to disable the generation of build targets for the LLVM examples.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
239
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
240 **LLVM_BUILD_TESTS**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
241 Build LLVM unit tests. Defaults to OFF. Targets for building each unit test
|
95
|
242 are generated in any case. You can build a specific unit test using the
|
|
243 targets defined under *unittests*, such as ADTTests, IRTests, SupportTests,
|
|
244 etc. (Search for ``add_llvm_unittest`` in the subdirectories of *unittests*
|
|
245 for a complete list of unit tests.) It is possible to build all unit tests
|
|
246 with the target *UnitTests*.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
247
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
248 **LLVM_INCLUDE_TESTS**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
249 Generate build targets for the LLVM unit tests. Defaults to ON. You can use
|
95
|
250 this option to disable the generation of build targets for the LLVM unit
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 tests.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
252
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
253 **LLVM_APPEND_VC_REV**:BOOL
|
121
|
254 Embed version control revision info (svn revision number or Git revision id).
|
|
255 The version info is provided by the ``LLVM_REVISION`` macro in
|
|
256 ``llvm/include/llvm/Support/VCSRevision.h``. Developers using git who don't
|
|
257 need revision info can disable this option to avoid re-linking most binaries
|
|
258 after a branch switch. Defaults to ON.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
259
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
260 **LLVM_ENABLE_THREADS**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
261 Build with threads support, if available. Defaults to ON.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
262
|
77
|
263 **LLVM_ENABLE_CXX1Y**:BOOL
|
|
264 Build in C++1y mode, if available. Defaults to OFF.
|
33
|
265
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
266 **LLVM_ENABLE_ASSERTIONS**:BOOL
|
83
|
267 Enables code assertions. Defaults to ON if and only if ``CMAKE_BUILD_TYPE``
|
|
268 is *Debug*.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
269
|
77
|
270 **LLVM_ENABLE_EH**:BOOL
|
95
|
271 Build LLVM with exception-handling support. This is necessary if you wish to
|
77
|
272 link against LLVM libraries and make use of C++ exceptions in your own code
|
|
273 that need to propagate through LLVM code. Defaults to OFF.
|
|
274
|
120
|
275 **LLVM_ENABLE_EXPENSIVE_CHECKS**:BOOL
|
|
276 Enable additional time/memory expensive checking. Defaults to OFF.
|
|
277
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
278 **LLVM_ENABLE_PIC**:BOOL
|
95
|
279 Add the ``-fPIC`` flag to the compiler command-line, if the compiler supports
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
280 this flag. Some systems, like Windows, do not need this flag. Defaults to ON.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
281
|
77
|
282 **LLVM_ENABLE_RTTI**:BOOL
|
95
|
283 Build LLVM with run-time type information. Defaults to OFF.
|
77
|
284
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
285 **LLVM_ENABLE_WARNINGS**:BOOL
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
286 Enable all compiler warnings. Defaults to ON.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
287
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
288 **LLVM_ENABLE_PEDANTIC**:BOOL
|
95
|
289 Enable pedantic mode. This disables compiler-specific extensions, if
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
290 possible. Defaults to ON.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
291
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
292 **LLVM_ENABLE_WERROR**:BOOL
|
95
|
293 Stop and fail the build, if a compiler warning is triggered. Defaults to OFF.
|
|
294
|
|
295 **LLVM_ABI_BREAKING_CHECKS**:STRING
|
|
296 Used to decide if LLVM should be built with ABI breaking checks or
|
|
297 not. Allowed values are `WITH_ASSERTS` (default), `FORCE_ON` and
|
|
298 `FORCE_OFF`. `WITH_ASSERTS` turns on ABI breaking checks in an
|
|
299 assertion enabled build. `FORCE_ON` (`FORCE_OFF`) turns them on
|
|
300 (off) irrespective of whether normal (`NDEBUG`-based) assertions are
|
|
301 enabled or not. A version of LLVM built with ABI breaking checks
|
|
302 is not ABI compatible with a version built without it.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
303
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
304 **LLVM_BUILD_32_BITS**:BOOL
|
95
|
305 Build 32-bit executables and libraries on 64-bit systems. This option is
|
|
306 available only on some 64-bit Unix systems. Defaults to OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
307
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
308 **LLVM_TARGET_ARCH**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
309 LLVM target to use for native code generation. This is required for JIT
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
310 generation. It defaults to "host", meaning that it shall pick the architecture
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
311 of the machine where LLVM is being built. If you are cross-compiling, set it
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
312 to the target architecture name.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
313
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
314 **LLVM_TABLEGEN**:STRING
|
95
|
315 Full path to a native TableGen executable (usually named ``llvm-tblgen``). This is
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
316 intended for cross-compiling: if the user sets this variable, no native
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
317 TableGen will be created.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
318
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
319 **LLVM_LIT_ARGS**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
320 Arguments given to lit. ``make check`` and ``make clang-test`` are affected.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
321 By default, ``'-sv --no-progress-bar'`` on Visual C++ and Xcode, ``'-sv'`` on
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
322 others.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
323
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
324 **LLVM_LIT_TOOLS_DIR**:PATH
|
95
|
325 The path to GnuWin32 tools for tests. Valid on Windows host. Defaults to
|
|
326 the empty string, in which case lit will look for tools needed for tests
|
|
327 (e.g. ``grep``, ``sort``, etc.) in your %PATH%. If GnuWin32 is not in your
|
|
328 %PATH%, then you can set this variable to the GnuWin32 directory so that
|
|
329 lit can find tools needed for tests in that directory.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
330
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
331 **LLVM_ENABLE_FFI**:BOOL
|
95
|
332 Indicates whether the LLVM Interpreter will be linked with the Foreign Function
|
|
333 Interface library (libffi) in order to enable calling external functions.
|
|
334 If the library or its headers are installed in a custom
|
|
335 location, you can also set the variables FFI_INCLUDE_DIR and
|
|
336 FFI_LIBRARY_DIR to the directories where ffi.h and libffi.so can be found,
|
|
337 respectively. Defaults to OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
338
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
339 **LLVM_EXTERNAL_{CLANG,LLD,POLLY}_SOURCE_DIR**:PATH
|
95
|
340 These variables specify the path to the source directory for the external
|
|
341 LLVM projects Clang, lld, and Polly, respectively, relative to the top-level
|
|
342 source directory. If the in-tree subdirectory for an external project
|
|
343 exists (e.g., llvm/tools/clang for Clang), then the corresponding variable
|
|
344 will not be used. If the variable for an external project does not point
|
|
345 to a valid path, then that project will not be built.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
346
|
120
|
347 **LLVM_ENABLE_PROJECTS**:STRING
|
|
348 Semicolon-separated list of projects to build, or *all* for building all
|
|
349 (clang, libcxx, libcxxabi, lldb, compiler-rt, lld, polly) projects.
|
|
350 This flag assumes that projects are checked out side-by-side and not nested,
|
|
351 i.e. clang needs to be in parallel of llvm instead of nested in `llvm/tools`.
|
|
352 This feature allows to have one build for only LLVM and another for clang+llvm
|
|
353 using the same source checkout.
|
|
354
|
|
355 **LLVM_EXTERNAL_PROJECTS**:STRING
|
|
356 Semicolon-separated list of additional external projects to build as part of
|
|
357 llvm. For each project LLVM_EXTERNAL_<NAME>_SOURCE_DIR have to be specified
|
|
358 with the path for the source code of the project. Example:
|
|
359 ``-DLLVM_EXTERNAL_PROJECTS="Foo;Bar"
|
|
360 -DLLVM_EXTERNAL_FOO_SOURCE_DIR=/src/foo
|
|
361 -DLLVM_EXTERNAL_BAR_SOURCE_DIR=/src/bar``.
|
|
362
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
363 **LLVM_USE_OPROFILE**:BOOL
|
95
|
364 Enable building OProfile JIT support. Defaults to OFF.
|
|
365
|
|
366 **LLVM_PROFDATA_FILE**:PATH
|
|
367 Path to a profdata file to pass into clang's -fprofile-instr-use flag. This
|
|
368 can only be specified if you're building with clang.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
369
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
370 **LLVM_USE_INTEL_JITEVENTS**:BOOL
|
95
|
371 Enable building support for Intel JIT Events API. Defaults to OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
372
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
373 **LLVM_ENABLE_ZLIB**:BOOL
|
95
|
374 Enable building with zlib to support compression/uncompression in LLVM tools.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
375 Defaults to ON.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
376
|
121
|
377 **LLVM_ENABLE_DIA_SDK**:BOOL
|
|
378 Enable building with MSVC DIA SDK for PDB debugging support. Available
|
|
379 only with MSVC. Defaults to ON.
|
|
380
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
381 **LLVM_USE_SANITIZER**:STRING
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
382 Define the sanitizer used to build LLVM binaries and tests. Possible values
|
95
|
383 are ``Address``, ``Memory``, ``MemoryWithOrigins``, ``Undefined``, ``Thread``,
|
|
384 and ``Address;Undefined``. Defaults to empty string.
|
77
|
385
|
120
|
386 **LLVM_ENABLE_LTO**:STRING
|
|
387 Add ``-flto`` or ``-flto=`` flags to the compile and link command
|
|
388 lines, enabling link-time optimization. Possible values are ``Off``,
|
|
389 ``On``, ``Thin`` and ``Full``. Defaults to OFF.
|
|
390
|
121
|
391 **LLVM_USE_LINKER**:STRING
|
|
392 Add ``-fuse-ld={name}`` to the link invocation. The possible value depend on
|
|
393 your compiler, for clang the value can be an absolute path to your custom
|
|
394 linker, otherwise clang will prefix the name with ``ld.`` and apply its usual
|
|
395 search. For example to link LLVM with the Gold linker, cmake can be invoked
|
|
396 with ``-DLLVM_USE_LINKER=gold``.
|
|
397
|
|
398 **LLVM_ENABLE_LLD**:BOOL
|
|
399 This option is equivalent to `-DLLVM_USE_LINKER=lld`, except during a 2-stage
|
|
400 build where a dependency is added from the first stage to the second ensuring
|
|
401 that lld is built before stage2 begins.
|
|
402
|
83
|
403 **LLVM_PARALLEL_COMPILE_JOBS**:STRING
|
|
404 Define the maximum number of concurrent compilation jobs.
|
|
405
|
|
406 **LLVM_PARALLEL_LINK_JOBS**:STRING
|
|
407 Define the maximum number of concurrent link jobs.
|
|
408
|
77
|
409 **LLVM_BUILD_DOCS**:BOOL
|
120
|
410 Adds all *enabled* documentation targets (i.e. Doxgyen and Sphinx targets) as
|
|
411 dependencies of the default build targets. This results in all of the (enabled)
|
|
412 documentation targets being as part of a normal build. If the ``install``
|
|
413 target is run then this also enables all built documentation targets to be
|
|
414 installed. Defaults to OFF. To enable a particular documentation target, see
|
|
415 see LLVM_ENABLE_SPHINX and LLVM_ENABLE_DOXYGEN.
|
77
|
416
|
|
417 **LLVM_ENABLE_DOXYGEN**:BOOL
|
|
418 Enables the generation of browsable HTML documentation using doxygen.
|
|
419 Defaults to OFF.
|
|
420
|
|
421 **LLVM_ENABLE_DOXYGEN_QT_HELP**:BOOL
|
|
422 Enables the generation of a Qt Compressed Help file. Defaults to OFF.
|
|
423 This affects the make target ``doxygen-llvm``. When enabled, apart from
|
|
424 the normal HTML output generated by doxygen, this will produce a QCH file
|
|
425 named ``org.llvm.qch``. You can then load this file into Qt Creator.
|
|
426 This option is only useful in combination with ``-DLLVM_ENABLE_DOXYGEN=ON``;
|
|
427 otherwise this has no effect.
|
|
428
|
|
429 **LLVM_DOXYGEN_QCH_FILENAME**:STRING
|
83
|
430 The filename of the Qt Compressed Help file that will be generated when
|
|
431 ``-DLLVM_ENABLE_DOXYGEN=ON`` and
|
77
|
432 ``-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON`` are given. Defaults to
|
|
433 ``org.llvm.qch``.
|
|
434 This option is only useful in combination with
|
|
435 ``-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON``;
|
95
|
436 otherwise it has no effect.
|
77
|
437
|
|
438 **LLVM_DOXYGEN_QHP_NAMESPACE**:STRING
|
|
439 Namespace under which the intermediate Qt Help Project file lives. See `Qt
|
|
440 Help Project`_
|
|
441 for more information. Defaults to "org.llvm". This option is only useful in
|
|
442 combination with ``-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON``; otherwise
|
95
|
443 it has no effect.
|
83
|
444
|
77
|
445 **LLVM_DOXYGEN_QHP_CUST_FILTER_NAME**:STRING
|
|
446 See `Qt Help Project`_ for
|
|
447 more information. Defaults to the CMake variable ``${PACKAGE_STRING}`` which
|
|
448 is a combination of the package name and version string. This filter can then
|
|
449 be used in Qt Creator to select only documentation from LLVM when browsing
|
|
450 through all the help files that you might have loaded. This option is only
|
|
451 useful in combination with ``-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON``;
|
95
|
452 otherwise it has no effect.
|
77
|
453
|
|
454 .. _Qt Help Project: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters
|
|
455
|
|
456 **LLVM_DOXYGEN_QHELPGENERATOR_PATH**:STRING
|
|
457 The path to the ``qhelpgenerator`` executable. Defaults to whatever CMake's
|
|
458 ``find_program()`` can find. This option is only useful in combination with
|
95
|
459 ``-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON``; otherwise it has no
|
77
|
460 effect.
|
|
461
|
95
|
462 **LLVM_DOXYGEN_SVG**:BOOL
|
|
463 Uses .svg files instead of .png files for graphs in the Doxygen output.
|
|
464 Defaults to OFF.
|
|
465
|
120
|
466 **LLVM_INSTALL_DOXYGEN_HTML_DIR**:STRING
|
|
467 The path to install Doxygen-generated HTML documentation to. This path can
|
|
468 either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
|
469 `share/doc/llvm/doxygen-html`.
|
|
470
|
77
|
471 **LLVM_ENABLE_SPHINX**:BOOL
|
120
|
472 If specified, CMake will search for the ``sphinx-build`` executable and will make
|
77
|
473 the ``SPHINX_OUTPUT_HTML`` and ``SPHINX_OUTPUT_MAN`` CMake options available.
|
|
474 Defaults to OFF.
|
|
475
|
|
476 **SPHINX_EXECUTABLE**:STRING
|
|
477 The path to the ``sphinx-build`` executable detected by CMake.
|
121
|
478 For installation instructions, see
|
|
479 http://www.sphinx-doc.org/en/latest/install.html
|
77
|
480
|
|
481 **SPHINX_OUTPUT_HTML**:BOOL
|
|
482 If enabled (and ``LLVM_ENABLE_SPHINX`` is enabled) then the targets for
|
|
483 building the documentation as html are added (but not built by default unless
|
|
484 ``LLVM_BUILD_DOCS`` is enabled). There is a target for each project in the
|
|
485 source tree that uses sphinx (e.g. ``docs-llvm-html``, ``docs-clang-html``
|
|
486 and ``docs-lld-html``). Defaults to ON.
|
|
487
|
|
488 **SPHINX_OUTPUT_MAN**:BOOL
|
|
489 If enabled (and ``LLVM_ENABLE_SPHINX`` is enabled) the targets for building
|
|
490 the man pages are added (but not built by default unless ``LLVM_BUILD_DOCS``
|
|
491 is enabled). Currently the only target added is ``docs-llvm-man``. Defaults
|
|
492 to ON.
|
|
493
|
|
494 **SPHINX_WARNINGS_AS_ERRORS**:BOOL
|
|
495 If enabled then sphinx documentation warnings will be treated as
|
|
496 errors. Defaults to ON.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
497
|
120
|
498 **LLVM_INSTALL_SPHINX_HTML_DIR**:STRING
|
|
499 The path to install Sphinx-generated HTML documentation to. This path can
|
|
500 either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
|
501 `share/doc/llvm/html`.
|
|
502
|
|
503 **LLVM_INSTALL_OCAMLDOC_HTML_DIR**:STRING
|
|
504 The path to install OCamldoc-generated HTML documentation to. This path can
|
|
505 either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
|
|
506 `share/doc/llvm/ocaml-html`.
|
|
507
|
100
|
508 **LLVM_CREATE_XCODE_TOOLCHAIN**:BOOL
|
|
509 OS X Only: If enabled CMake will generate a target named
|
|
510 'install-xcode-toolchain'. This target will create a directory at
|
|
511 $CMAKE_INSTALL_PREFIX/Toolchains containing an xctoolchain directory which can
|
|
512 be used to override the default system tools.
|
|
513
|
|
514 **LLVM_BUILD_LLVM_DYLIB**:BOOL
|
|
515 If enabled, the target for building the libLLVM shared library is added.
|
|
516 This library contains all of LLVM's components in a single shared library.
|
|
517 Defaults to OFF. This cannot be used in conjunction with BUILD_SHARED_LIBS.
|
|
518 Tools will only be linked to the libLLVM shared library if LLVM_LINK_LLVM_DYLIB
|
|
519 is also ON.
|
|
520 The components in the library can be customised by setting LLVM_DYLIB_COMPONENTS
|
|
521 to a list of the desired components.
|
|
522
|
|
523 **LLVM_LINK_LLVM_DYLIB**:BOOL
|
|
524 If enabled, tools will be linked with the libLLVM shared library. Defaults
|
|
525 to OFF. Setting LLVM_LINK_LLVM_DYLIB to ON also sets LLVM_BUILD_LLVM_DYLIB
|
|
526 to ON.
|
|
527
|
|
528 **BUILD_SHARED_LIBS**:BOOL
|
|
529 Flag indicating if each LLVM component (e.g. Support) is built as a shared
|
|
530 library (ON) or as a static library (OFF). Its default value is OFF. On
|
|
531 Windows, shared libraries may be used when building with MinGW, including
|
|
532 mingw-w64, but not when building with the Microsoft toolchain.
|
|
533
|
|
534 .. note:: BUILD_SHARED_LIBS is only recommended for use by LLVM developers.
|
|
535 If you want to build LLVM as a shared library, you should use the
|
|
536 ``LLVM_BUILD_LLVM_DYLIB`` option.
|
|
537
|
120
|
538 **LLVM_OPTIMIZED_TABLEGEN**:BOOL
|
|
539 If enabled and building a debug or asserts build the CMake build system will
|
|
540 generate a Release build tree to build a fully optimized tablegen for use
|
|
541 during the build. Enabling this option can significantly speed up build times
|
|
542 especially when building LLVM in Debug configurations.
|
|
543
|
121
|
544 **LLVM_REVERSE_ITERATION**:BOOL
|
|
545 If enabled, all supported unordered llvm containers would be iterated in
|
|
546 reverse order. This is useful for uncovering non-determinism caused by
|
|
547 iteration of unordered containers.
|
|
548
|
|
549 **LLVM_BUILD_INSTRUMENTED_COVERAGE**:BOOL
|
|
550 If enabled, `source-based code coverage
|
|
551 <http://clang.llvm.org/docs/SourceBasedCodeCoverage.html>`_ instrumentation
|
|
552 is enabled while building llvm.
|
|
553
|
134
|
554 **LLVM_CCACHE_BUILD**:BOOL
|
|
555 If enabled and the ``ccache`` program is available, then LLVM will be
|
|
556 built using ``ccache`` to speed up rebuilds of LLVM and its components.
|
|
557 Defaults to OFF. The size and location of the cache maintained
|
|
558 by ``ccache`` can be adjusted via the LLVM_CCACHE_MAXSIZE and LLVM_CCACHE_DIR
|
|
559 options, which are passed to the CCACHE_MAXSIZE and CCACHE_DIR environment
|
|
560 variables, respectively.
|
|
561
|
120
|
562 CMake Caches
|
|
563 ============
|
|
564
|
|
565 Recently LLVM and Clang have been adding some more complicated build system
|
|
566 features. Utilizing these new features often involves a complicated chain of
|
|
567 CMake variables passed on the command line. Clang provides a collection of CMake
|
|
568 cache scripts to make these features more approachable.
|
|
569
|
|
570 CMake cache files are utilized using CMake's -C flag:
|
|
571
|
|
572 .. code-block:: console
|
|
573
|
|
574 $ cmake -C <path to cache file> <path to sources>
|
|
575
|
|
576 CMake cache scripts are processed in an isolated scope, only cached variables
|
|
577 remain set when the main configuration runs. CMake cached variables do not reset
|
|
578 variables that are already set unless the FORCE option is specified.
|
|
579
|
|
580 A few notes about CMake Caches:
|
|
581
|
|
582 - Order of command line arguments is important
|
|
583
|
|
584 - -D arguments specified before -C are set before the cache is processed and
|
|
585 can be read inside the cache file
|
|
586 - -D arguments specified after -C are set after the cache is processed and
|
|
587 are unset inside the cache file
|
|
588
|
|
589 - All -D arguments will override cache file settings
|
|
590 - CMAKE_TOOLCHAIN_FILE is evaluated after both the cache file and the command
|
|
591 line arguments
|
|
592 - It is recommended that all -D options should be specified *before* -C
|
|
593
|
|
594 For more information about some of the advanced build configurations supported
|
|
595 via Cache files see :doc:`AdvancedBuilds`.
|
|
596
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
597 Executing the test suite
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
598 ========================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
599
|
95
|
600 Testing is performed when the *check-all* target is built. For instance, if you are
|
|
601 using Makefiles, execute this command in the root of your build directory:
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
602
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
603 .. code-block:: console
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
604
|
95
|
605 $ make check-all
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
606
|
95
|
607 On Visual Studio, you may run tests by building the project "check-all".
|
|
608 For more information about testing, see the :doc:`TestingGuide`.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
609
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
610 Cross compiling
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
611 ===============
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
612
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
613 See `this wiki page <http://www.vtk.org/Wiki/CMake_Cross_Compiling>`_ for
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
614 generic instructions on how to cross-compile with CMake. It goes into detailed
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
615 explanations and may seem daunting, but it is not. On the wiki page there are
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
616 several examples including toolchain files. Go directly to `this section
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
617 <http://www.vtk.org/Wiki/CMake_Cross_Compiling#Information_how_to_set_up_various_cross_compiling_toolchains>`_
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
618 for a quick solution.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
619
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
620 Also see the `LLVM-specific variables`_ section for variables used when
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
621 cross-compiling.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
622
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
623 Embedding LLVM in your project
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
624 ==============================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
625
|
77
|
626 From LLVM 3.5 onwards both the CMake and autoconf/Makefile build systems export
|
|
627 LLVM libraries as importable CMake targets. This means that clients of LLVM can
|
95
|
628 now reliably use CMake to develop their own LLVM-based projects against an
|
77
|
629 installed version of LLVM regardless of how it was built.
|
|
630
|
95
|
631 Here is a simple example of a CMakeLists.txt file that imports the LLVM libraries
|
77
|
632 and uses them to build a simple application ``simple-tool``.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
633
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
634 .. code-block:: cmake
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
635
|
120
|
636 cmake_minimum_required(VERSION 3.4.3)
|
77
|
637 project(SimpleProject)
|
|
638
|
|
639 find_package(LLVM REQUIRED CONFIG)
|
|
640
|
|
641 message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
642 message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
643
|
77
|
644 # Set your project compile flags.
|
|
645 # E.g. if using the C++ header files
|
|
646 # you will need to enable C++11 support
|
|
647 # for your compiler.
|
|
648
|
|
649 include_directories(${LLVM_INCLUDE_DIRS})
|
|
650 add_definitions(${LLVM_DEFINITIONS})
|
|
651
|
|
652 # Now build our tools
|
83
|
653 add_executable(simple-tool tool.cpp)
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
654
|
77
|
655 # Find the libraries that correspond to the LLVM components
|
|
656 # that we wish to use
|
|
657 llvm_map_components_to_libnames(llvm_libs support core irreader)
|
|
658
|
|
659 # Link against LLVM libraries
|
|
660 target_link_libraries(simple-tool ${llvm_libs})
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
661
|
77
|
662 The ``find_package(...)`` directive when used in CONFIG mode (as in the above
|
|
663 example) will look for the ``LLVMConfig.cmake`` file in various locations (see
|
|
664 cmake manual for details). It creates a ``LLVM_DIR`` cache entry to save the
|
|
665 directory where ``LLVMConfig.cmake`` is found or allows the user to specify the
|
120
|
666 directory (e.g. by passing ``-DLLVM_DIR=/usr/lib/cmake/llvm`` to
|
77
|
667 the ``cmake`` command or by setting it directly in ``ccmake`` or ``cmake-gui``).
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
668
|
77
|
669 This file is available in two different locations.
|
|
670
|
120
|
671 * ``<INSTALL_PREFIX>/lib/cmake/llvm/LLVMConfig.cmake`` where
|
77
|
672 ``<INSTALL_PREFIX>`` is the install prefix of an installed version of LLVM.
|
120
|
673 On Linux typically this is ``/usr/lib/cmake/llvm/LLVMConfig.cmake``.
|
77
|
674
|
120
|
675 * ``<LLVM_BUILD_ROOT>/lib/cmake/llvm/LLVMConfig.cmake`` where
|
95
|
676 ``<LLVM_BUILD_ROOT>`` is the root of the LLVM build tree. **Note: this is only
|
|
677 available when building LLVM with CMake.**
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
678
|
77
|
679 If LLVM is installed in your operating system's normal installation prefix (e.g.
|
|
680 on Linux this is usually ``/usr/``) ``find_package(LLVM ...)`` will
|
|
681 automatically find LLVM if it is installed correctly. If LLVM is not installed
|
|
682 or you wish to build directly against the LLVM build tree you can use
|
|
683 ``LLVM_DIR`` as previously mentioned.
|
|
684
|
|
685 The ``LLVMConfig.cmake`` file sets various useful variables. Notable variables
|
|
686 include
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
687
|
77
|
688 ``LLVM_CMAKE_DIR``
|
|
689 The path to the LLVM CMake directory (i.e. the directory containing
|
|
690 LLVMConfig.cmake).
|
|
691
|
|
692 ``LLVM_DEFINITIONS``
|
|
693 A list of preprocessor defines that should be used when building against LLVM.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
694
|
77
|
695 ``LLVM_ENABLE_ASSERTIONS``
|
|
696 This is set to ON if LLVM was built with assertions, otherwise OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
697
|
77
|
698 ``LLVM_ENABLE_EH``
|
|
699 This is set to ON if LLVM was built with exception handling (EH) enabled,
|
|
700 otherwise OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
701
|
77
|
702 ``LLVM_ENABLE_RTTI``
|
|
703 This is set to ON if LLVM was built with run time type information (RTTI),
|
|
704 otherwise OFF.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
705
|
77
|
706 ``LLVM_INCLUDE_DIRS``
|
|
707 A list of include paths to directories containing LLVM header files.
|
|
708
|
|
709 ``LLVM_PACKAGE_VERSION``
|
95
|
710 The LLVM version. This string can be used with CMake conditionals, e.g., ``if
|
77
|
711 (${LLVM_PACKAGE_VERSION} VERSION_LESS "3.5")``.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
712
|
77
|
713 ``LLVM_TOOLS_BINARY_DIR``
|
|
714 The path to the directory containing the LLVM tools (e.g. ``llvm-as``).
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
715
|
77
|
716 Notice that in the above example we link ``simple-tool`` against several LLVM
|
|
717 libraries. The list of libraries is determined by using the
|
|
718 ``llvm_map_components_to_libnames()`` CMake function. For a list of available
|
|
719 components look at the output of running ``llvm-config --components``.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
720
|
77
|
721 Note that for LLVM < 3.5 ``llvm_map_components_to_libraries()`` was
|
|
722 used instead of ``llvm_map_components_to_libnames()``. This is now deprecated
|
|
723 and will be removed in a future version of LLVM.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
724
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
725 .. _cmake-out-of-source-pass:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
726
|
77
|
727 Developing LLVM passes out of source
|
|
728 ------------------------------------
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
729
|
77
|
730 It is possible to develop LLVM passes out of LLVM's source tree (i.e. against an
|
|
731 installed or built LLVM). An example of a project layout is provided below.
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
732
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
733 .. code-block:: none
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
734
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
735 <project dir>/
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
736 |
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
737 CMakeLists.txt
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
738 <pass name>/
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
739 |
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
740 CMakeLists.txt
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
741 Pass.cpp
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
742 ...
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
743
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
744 Contents of ``<project dir>/CMakeLists.txt``:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
745
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
746 .. code-block:: cmake
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
747
|
77
|
748 find_package(LLVM REQUIRED CONFIG)
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
749
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
750 add_definitions(${LLVM_DEFINITIONS})
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
751 include_directories(${LLVM_INCLUDE_DIRS})
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
752
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
753 add_subdirectory(<pass name>)
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
754
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
755 Contents of ``<project dir>/<pass name>/CMakeLists.txt``:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
756
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
757 .. code-block:: cmake
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
758
|
77
|
759 add_library(LLVMPassname MODULE Pass.cpp)
|
|
760
|
|
761 Note if you intend for this pass to be merged into the LLVM source tree at some
|
|
762 point in the future it might make more sense to use LLVM's internal
|
95
|
763 ``add_llvm_loadable_module`` function instead by...
|
77
|
764
|
|
765
|
|
766 Adding the following to ``<project dir>/CMakeLists.txt`` (after
|
|
767 ``find_package(LLVM ...)``)
|
|
768
|
|
769 .. code-block:: cmake
|
|
770
|
|
771 list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
|
|
772 include(AddLLVM)
|
|
773
|
|
774 And then changing ``<project dir>/<pass name>/CMakeLists.txt`` to
|
|
775
|
|
776 .. code-block:: cmake
|
|
777
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
778 add_llvm_loadable_module(LLVMPassname
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
779 Pass.cpp
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
780 )
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
781
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
782 When you are done developing your pass, you may wish to integrate it
|
95
|
783 into the LLVM source tree. You can achieve it in two easy steps:
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
784
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
785 #. Copying ``<pass name>`` folder into ``<LLVM root>/lib/Transform`` directory.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
786
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
787 #. Adding ``add_subdirectory(<pass name>)`` line into
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
788 ``<LLVM root>/lib/Transform/CMakeLists.txt``.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
789
|
77
|
790 Compiler/Platform-specific topics
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
791 =================================
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
792
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
793 Notes for specific compilers and/or platforms.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
794
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
795 Microsoft Visual C++
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
796 --------------------
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
797
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
798 **LLVM_COMPILER_JOBS**:STRING
|
95
|
799 Specifies the maximum number of parallel compiler jobs to use per project
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
800 when building with msbuild or Visual Studio. Only supported for the Visual
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
801 Studio 2010 CMake generator. 0 means use all processors. Default is 0.
|