Mercurial > hg > CbC > CbC_llvm
comparison docs/MakefileGuide.rst @ 0:95c75e76d11b LLVM3.4
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | 54457678186b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:95c75e76d11b |
---|---|
1 =================== | |
2 LLVM Makefile Guide | |
3 =================== | |
4 | |
5 .. contents:: | |
6 :local: | |
7 | |
8 Introduction | |
9 ============ | |
10 | |
11 This document provides *usage* information about the LLVM makefile system. While | |
12 loosely patterned after the BSD makefile system, LLVM has taken a departure from | |
13 BSD in order to implement additional features needed by LLVM. Although makefile | |
14 systems, such as ``automake``, were attempted at one point, it has become clear | |
15 that the features needed by LLVM and the ``Makefile`` norm are too great to use | |
16 a more limited tool. Consequently, LLVM requires simply GNU Make 3.79, a widely | |
17 portable makefile processor. LLVM unabashedly makes heavy use of the features of | |
18 GNU Make so the dependency on GNU Make is firm. If you're not familiar with | |
19 ``make``, it is recommended that you read the `GNU Makefile Manual | |
20 <http://www.gnu.org/software/make/manual/make.html>`_. | |
21 | |
22 While this document is rightly part of the `LLVM Programmer's | |
23 Manual <ProgrammersManual.html>`_, it is treated separately here because of the | |
24 volume of content and because it is often an early source of bewilderment for | |
25 new developers. | |
26 | |
27 General Concepts | |
28 ================ | |
29 | |
30 The LLVM Makefile System is the component of LLVM that is responsible for | |
31 building the software, testing it, generating distributions, checking those | |
32 distributions, installing and uninstalling, etc. It consists of a several files | |
33 throughout the source tree. These files and other general concepts are described | |
34 in this section. | |
35 | |
36 Projects | |
37 -------- | |
38 | |
39 The LLVM Makefile System is quite generous. It not only builds its own software, | |
40 but it can build yours too. Built into the system is knowledge of the | |
41 ``llvm/projects`` directory. Any directory under ``projects`` that has both a | |
42 ``configure`` script and a ``Makefile`` is assumed to be a project that uses the | |
43 LLVM Makefile system. Building software that uses LLVM does not require the | |
44 LLVM Makefile System nor even placement in the ``llvm/projects`` | |
45 directory. However, doing so will allow your project to get up and running | |
46 quickly by utilizing the built-in features that are used to compile LLVM. LLVM | |
47 compiles itself using the same features of the makefile system as used for | |
48 projects. | |
49 | |
50 For complete details on setting up your projects configuration, simply mimic the | |
51 ``llvm/projects/sample`` project. Or for further details, consult the | |
52 `Projects <Projects.html>`_ page. | |
53 | |
54 Variable Values | |
55 --------------- | |
56 | |
57 To use the makefile system, you simply create a file named ``Makefile`` in your | |
58 directory and declare values for certain variables. The variables and values | |
59 that you select determine what the makefile system will do. These variables | |
60 enable rules and processing in the makefile system that automatically Do The | |
61 Right Thing (C). | |
62 | |
63 Including Makefiles | |
64 ------------------- | |
65 | |
66 Setting variables alone is not enough. You must include into your Makefile | |
67 additional files that provide the rules of the LLVM Makefile system. The various | |
68 files involved are described in the sections that follow. | |
69 | |
70 ``Makefile`` | |
71 ^^^^^^^^^^^^ | |
72 | |
73 Each directory to participate in the build needs to have a file named | |
74 ``Makefile``. This is the file first read by ``make``. It has three | |
75 sections: | |
76 | |
77 #. Settable Variables --- Required that must be set first. | |
78 #. ``include $(LEVEL)/Makefile.common`` --- include the LLVM Makefile system. | |
79 #. Override Variables --- Override variables set by the LLVM Makefile system. | |
80 | |
81 .. _$(LEVEL)/Makefile.common: | |
82 | |
83 ``Makefile.common`` | |
84 ^^^^^^^^^^^^^^^^^^^ | |
85 | |
86 Every project must have a ``Makefile.common`` file at its top source | |
87 directory. This file serves three purposes: | |
88 | |
89 #. It includes the project's configuration makefile to obtain values determined | |
90 by the ``configure`` script. This is done by including the | |
91 `$(LEVEL)/Makefile.config`_ file. | |
92 | |
93 #. It specifies any other (static) values that are needed throughout the | |
94 project. Only values that are used in all or a large proportion of the | |
95 project's directories should be placed here. | |
96 | |
97 #. It includes the standard rules for the LLVM Makefile system, | |
98 `$(LLVM_SRC_ROOT)/Makefile.rules`_. This file is the *guts* of the LLVM | |
99 ``Makefile`` system. | |
100 | |
101 .. _$(LEVEL)/Makefile.config: | |
102 | |
103 ``Makefile.config`` | |
104 ^^^^^^^^^^^^^^^^^^^ | |
105 | |
106 Every project must have a ``Makefile.config`` at the top of its *build* | |
107 directory. This file is **generated** by the ``configure`` script from the | |
108 pattern provided by the ``Makefile.config.in`` file located at the top of the | |
109 project's *source* directory. The contents of this file depend largely on what | |
110 configuration items the project uses, however most projects can get what they | |
111 need by just relying on LLVM's configuration found in | |
112 ``$(LLVM_OBJ_ROOT)/Makefile.config``. | |
113 | |
114 .. _$(LLVM_SRC_ROOT)/Makefile.rules: | |
115 | |
116 ``Makefile.rules`` | |
117 ^^^^^^^^^^^^^^^^^^ | |
118 | |
119 This file, located at ``$(LLVM_SRC_ROOT)/Makefile.rules`` is the heart of the | |
120 LLVM Makefile System. It provides all the logic, dependencies, and rules for | |
121 building the targets supported by the system. What it does largely depends on | |
122 the values of ``make`` `variables`_ that have been set *before* | |
123 ``Makefile.rules`` is included. | |
124 | |
125 Comments | |
126 ^^^^^^^^ | |
127 | |
128 User ``Makefile``\s need not have comments in them unless the construction is | |
129 unusual or it does not strictly follow the rules and patterns of the LLVM | |
130 makefile system. Makefile comments are invoked with the pound (``#``) character. | |
131 The ``#`` character and any text following it, to the end of the line, are | |
132 ignored by ``make``. | |
133 | |
134 Tutorial | |
135 ======== | |
136 | |
137 This section provides some examples of the different kinds of modules you can | |
138 build with the LLVM makefile system. In general, each directory you provide will | |
139 build a single object although that object may be composed of additionally | |
140 compiled components. | |
141 | |
142 Libraries | |
143 --------- | |
144 | |
145 Only a few variable definitions are needed to build a regular library. | |
146 Normally, the makefile system will build all the software into a single | |
147 ``libname.o`` (pre-linked) object. This means the library is not searchable and | |
148 that the distinction between compilation units has been dissolved. Optionally, | |
149 you can ask for a shared library (.so) or archive library (.a) built. Archive | |
150 libraries are the default. For example: | |
151 | |
152 .. code-block:: makefile | |
153 | |
154 LIBRARYNAME = mylib | |
155 SHARED_LIBRARY = 1 | |
156 BUILD_ARCHIVE = 1 | |
157 | |
158 says to build a library named ``mylib`` with both a shared library | |
159 (``mylib.so``) and an archive library (``mylib.a``) version. The contents of all | |
160 the libraries produced will be the same, they are just constructed differently. | |
161 Note that you normally do not need to specify the sources involved. The LLVM | |
162 Makefile system will infer the source files from the contents of the source | |
163 directory. | |
164 | |
165 The ``LOADABLE_MODULE=1`` directive can be used in conjunction with | |
166 ``SHARED_LIBRARY=1`` to indicate that the resulting shared library should be | |
167 openable with the ``dlopen`` function and searchable with the ``dlsym`` function | |
168 (or your operating system's equivalents). While this isn't strictly necessary on | |
169 Linux and a few other platforms, it is required on systems like HP-UX and | |
170 Darwin. You should use ``LOADABLE_MODULE`` for any shared library that you | |
171 intend to be loaded into an tool via the ``-load`` option. :ref:`Pass | |
172 documentation <writing-an-llvm-pass-makefile>` has an example of why you might | |
173 want to do this. | |
174 | |
175 Loadable Modules | |
176 ^^^^^^^^^^^^^^^^ | |
177 | |
178 In some situations, you need to create a loadable module. Loadable modules can | |
179 be loaded into programs like ``opt`` or ``llc`` to specify additional passes to | |
180 run or targets to support. Loadable modules are also useful for debugging a | |
181 pass or providing a pass with another package if that pass can't be included in | |
182 LLVM. | |
183 | |
184 LLVM provides complete support for building such a module. All you need to do is | |
185 use the ``LOADABLE_MODULE`` variable in your ``Makefile``. For example, to build | |
186 a loadable module named ``MyMod`` that uses the LLVM libraries ``LLVMSupport.a`` | |
187 and ``LLVMSystem.a``, you would specify: | |
188 | |
189 .. code-block:: makefile | |
190 | |
191 LIBRARYNAME := MyMod | |
192 LOADABLE_MODULE := 1 | |
193 LINK_COMPONENTS := support system | |
194 | |
195 Use of the ``LOADABLE_MODULE`` facility implies several things: | |
196 | |
197 #. There will be no "``lib``" prefix on the module. This differentiates it from | |
198 a standard shared library of the same name. | |
199 | |
200 #. The `SHARED_LIBRARY`_ variable is turned on. | |
201 | |
202 #. The `LINK_LIBS_IN_SHARED`_ variable is turned on. | |
203 | |
204 A loadable module is loaded by LLVM via the facilities of libtool's libltdl | |
205 library which is part of ``lib/System`` implementation. | |
206 | |
207 Tools | |
208 ----- | |
209 | |
210 For building executable programs (tools), you must provide the name of the tool | |
211 and the names of the libraries you wish to link with the tool. For example: | |
212 | |
213 .. code-block:: makefile | |
214 | |
215 TOOLNAME = mytool | |
216 USEDLIBS = mylib | |
217 LINK_COMPONENTS = support system | |
218 | |
219 says that we are to build a tool name ``mytool`` and that it requires three | |
220 libraries: ``mylib``, ``LLVMSupport.a`` and ``LLVMSystem.a``. | |
221 | |
222 Note that two different variables are used to indicate which libraries are | |
223 linked: ``USEDLIBS`` and ``LLVMLIBS``. This distinction is necessary to support | |
224 projects. ``LLVMLIBS`` refers to the LLVM libraries found in the LLVM object | |
225 directory. ``USEDLIBS`` refers to the libraries built by your project. In the | |
226 case of building LLVM tools, ``USEDLIBS`` and ``LLVMLIBS`` can be used | |
227 interchangeably since the "project" is LLVM itself and ``USEDLIBS`` refers to | |
228 the same place as ``LLVMLIBS``. | |
229 | |
230 Also note that there are two different ways of specifying a library: with a | |
231 ``.a`` suffix and without. Without the suffix, the entry refers to the re-linked | |
232 (.o) file which will include *all* symbols of the library. This is | |
233 useful, for example, to include all passes from a library of passes. If the | |
234 ``.a`` suffix is used then the library is linked as a searchable library (with | |
235 the ``-l`` option). In this case, only the symbols that are unresolved *at | |
236 that point* will be resolved from the library, if they exist. Other | |
237 (unreferenced) symbols will not be included when the ``.a`` syntax is used. Note | |
238 that in order to use the ``.a`` suffix, the library in question must have been | |
239 built with the ``BUILD_ARCHIVE`` option set. | |
240 | |
241 JIT Tools | |
242 ^^^^^^^^^ | |
243 | |
244 Many tools will want to use the JIT features of LLVM. To do this, you simply | |
245 specify that you want an execution 'engine', and the makefiles will | |
246 automatically link in the appropriate JIT for the host or an interpreter if none | |
247 is available: | |
248 | |
249 .. code-block:: makefile | |
250 | |
251 TOOLNAME = my_jit_tool | |
252 USEDLIBS = mylib | |
253 LINK_COMPONENTS = engine | |
254 | |
255 Of course, any additional libraries may be listed as other components. To get a | |
256 full understanding of how this changes the linker command, it is recommended | |
257 that you: | |
258 | |
259 .. code-block:: bash | |
260 | |
261 % cd examples/Fibonacci | |
262 % make VERBOSE=1 | |
263 | |
264 Targets Supported | |
265 ================= | |
266 | |
267 This section describes each of the targets that can be built using the LLVM | |
268 Makefile system. Any target can be invoked from any directory but not all are | |
269 applicable to a given directory (e.g. "check", "dist" and "install" will always | |
270 operate as if invoked from the top level directory). | |
271 | |
272 ================= =============== ================== | |
273 Target Name Implied Targets Target Description | |
274 ================= =============== ================== | |
275 ``all`` \ Compile the software recursively. Default target. | |
276 ``all-local`` \ Compile the software in the local directory only. | |
277 ``check`` \ Change to the ``test`` directory in a project and run the test suite there. | |
278 ``check-local`` \ Run a local test suite. Generally this is only defined in the ``Makefile`` of the project's ``test`` directory. | |
279 ``clean`` \ Remove built objects recursively. | |
280 ``clean-local`` \ Remove built objects from the local directory only. | |
281 ``dist`` ``all`` Prepare a source distribution tarball. | |
282 ``dist-check`` ``all`` Prepare a source distribution tarball and check that it builds. | |
283 ``dist-clean`` ``clean`` Clean source distribution tarball temporary files. | |
284 ``install`` ``all`` Copy built objects to installation directory. | |
285 ``preconditions`` ``all`` Check to make sure configuration and makefiles are up to date. | |
286 ``printvars`` ``all`` Prints variables defined by the makefile system (for debugging). | |
287 ``tags`` \ Make C and C++ tags files for emacs and vi. | |
288 ``uninstall`` \ Remove built objects from installation directory. | |
289 ================= =============== ================== | |
290 | |
291 .. _all: | |
292 | |
293 ``all`` (default) | |
294 ----------------- | |
295 | |
296 When you invoke ``make`` with no arguments, you are implicitly instructing it to | |
297 seek the ``all`` target (goal). This target is used for building the software | |
298 recursively and will do different things in different directories. For example, | |
299 in a ``lib`` directory, the ``all`` target will compile source files and | |
300 generate libraries. But, in a ``tools`` directory, it will link libraries and | |
301 generate executables. | |
302 | |
303 ``all-local`` | |
304 ------------- | |
305 | |
306 This target is the same as `all`_ but it operates only on the current directory | |
307 instead of recursively. | |
308 | |
309 ``check`` | |
310 --------- | |
311 | |
312 This target can be invoked from anywhere within a project's directories but | |
313 always invokes the `check-local`_ target in the project's ``test`` directory, if | |
314 it exists and has a ``Makefile``. A warning is produced otherwise. If | |
315 `TESTSUITE`_ is defined on the ``make`` command line, it will be passed down to | |
316 the invocation of ``make check-local`` in the ``test`` directory. The intended | |
317 usage for this is to assist in running specific suites of tests. If | |
318 ``TESTSUITE`` is not set, the implementation of ``check-local`` should run all | |
319 normal tests. It is up to the project to define what different values for | |
320 ``TESTSUTE`` will do. See the :doc:`Testing Guide <TestingGuide>` for further | |
321 details. | |
322 | |
323 ``check-local`` | |
324 --------------- | |
325 | |
326 This target should be implemented by the ``Makefile`` in the project's ``test`` | |
327 directory. It is invoked by the ``check`` target elsewhere. Each project is | |
328 free to define the actions of ``check-local`` as appropriate for that | |
329 project. The LLVM project itself uses the :doc:`Lit <CommandGuide/lit>` testing | |
330 tool to run a suite of feature and regression tests. Other projects may choose | |
331 to use :program:`lit` or any other testing mechanism. | |
332 | |
333 ``clean`` | |
334 --------- | |
335 | |
336 This target cleans the build directory, recursively removing all things that the | |
337 Makefile builds. The cleaning rules have been made guarded so they shouldn't go | |
338 awry (via ``rm -f $(UNSET_VARIABLE)/*`` which will attempt to erase the entire | |
339 directory structure). | |
340 | |
341 ``clean-local`` | |
342 --------------- | |
343 | |
344 This target does the same thing as ``clean`` but only for the current (local) | |
345 directory. | |
346 | |
347 ``dist`` | |
348 -------- | |
349 | |
350 This target builds a distribution tarball. It first builds the entire project | |
351 using the ``all`` target and then tars up the necessary files and compresses | |
352 it. The generated tarball is sufficient for a casual source distribution, but | |
353 probably not for a release (see ``dist-check``). | |
354 | |
355 ``dist-check`` | |
356 -------------- | |
357 | |
358 This target does the same thing as the ``dist`` target but also checks the | |
359 distribution tarball. The check is made by unpacking the tarball to a new | |
360 directory, configuring it, building it, installing it, and then verifying that | |
361 the installation results are correct (by comparing to the original build). This | |
362 target can take a long time to run but should be done before a release goes out | |
363 to make sure that the distributed tarball can actually be built into a working | |
364 release. | |
365 | |
366 ``dist-clean`` | |
367 -------------- | |
368 | |
369 This is a special form of the ``clean`` clean target. It performs a normal | |
370 ``clean`` but also removes things pertaining to building the distribution. | |
371 | |
372 ``install`` | |
373 ----------- | |
374 | |
375 This target finalizes shared objects and executables and copies all libraries, | |
376 headers, executables and documentation to the directory given with the | |
377 ``--prefix`` option to ``configure``. When completed, the prefix directory will | |
378 have everything needed to **use** LLVM. | |
379 | |
380 The LLVM makefiles can generate complete **internal** documentation for all the | |
381 classes by using ``doxygen``. By default, this feature is **not** enabled | |
382 because it takes a long time and generates a massive amount of data (>100MB). If | |
383 you want this feature, you must configure LLVM with the --enable-doxygen switch | |
384 and ensure that a modern version of doxygen (1.3.7 or later) is available in | |
385 your ``PATH``. You can download doxygen from `here | |
386 <http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc>`_. | |
387 | |
388 ``preconditions`` | |
389 ----------------- | |
390 | |
391 This utility target checks to see if the ``Makefile`` in the object directory is | |
392 older than the ``Makefile`` in the source directory and copies it if so. It also | |
393 reruns the ``configure`` script if that needs to be done and rebuilds the | |
394 ``Makefile.config`` file similarly. Users may overload this target to ensure | |
395 that sanity checks are run *before* any building of targets as all the targets | |
396 depend on ``preconditions``. | |
397 | |
398 ``printvars`` | |
399 ------------- | |
400 | |
401 This utility target just causes the LLVM makefiles to print out some of the | |
402 makefile variables so that you can double check how things are set. | |
403 | |
404 ``reconfigure`` | |
405 --------------- | |
406 | |
407 This utility target will force a reconfigure of LLVM or your project. It simply | |
408 runs ``$(PROJ_OBJ_ROOT)/config.status --recheck`` to rerun the configuration | |
409 tests and rebuild the configured files. This isn't generally useful as the | |
410 makefiles will reconfigure themselves whenever its necessary. | |
411 | |
412 ``spotless`` | |
413 ------------ | |
414 | |
415 .. warning:: | |
416 | |
417 Use with caution! | |
418 | |
419 This utility target, only available when ``$(PROJ_OBJ_ROOT)`` is not the same as | |
420 ``$(PROJ_SRC_ROOT)``, will completely clean the ``$(PROJ_OBJ_ROOT)`` directory | |
421 by removing its content entirely and reconfiguring the directory. This returns | |
422 the ``$(PROJ_OBJ_ROOT)`` directory to a completely fresh state. All content in | |
423 the directory except configured files and top-level makefiles will be lost. | |
424 | |
425 ``tags`` | |
426 -------- | |
427 | |
428 This target will generate a ``TAGS`` file in the top-level source directory. It | |
429 is meant for use with emacs, XEmacs, or ViM. The TAGS file provides an index of | |
430 symbol definitions so that the editor can jump you to the definition | |
431 quickly. | |
432 | |
433 ``uninstall`` | |
434 ------------- | |
435 | |
436 This target is the opposite of the ``install`` target. It removes the header, | |
437 library and executable files from the installation directories. Note that the | |
438 directories themselves are not removed because it is not guaranteed that LLVM is | |
439 the only thing installing there (e.g. ``--prefix=/usr``). | |
440 | |
441 .. _variables: | |
442 | |
443 Variables | |
444 ========= | |
445 | |
446 Variables are used to tell the LLVM Makefile System what to do and to obtain | |
447 information from it. Variables are also used internally by the LLVM Makefile | |
448 System. Variable names that contain only the upper case alphabetic letters and | |
449 underscore are intended for use by the end user. All other variables are | |
450 internal to the LLVM Makefile System and should not be relied upon nor | |
451 modified. The sections below describe how to use the LLVM Makefile | |
452 variables. | |
453 | |
454 Control Variables | |
455 ----------------- | |
456 | |
457 Variables listed in the table below should be set *before* the inclusion of | |
458 `$(LEVEL)/Makefile.common`_. These variables provide input to the LLVM make | |
459 system that tell it what to do for the current directory. | |
460 | |
461 ``BUILD_ARCHIVE`` | |
462 If set to any value, causes an archive (.a) library to be built. | |
463 | |
464 ``BUILT_SOURCES`` | |
465 Specifies a set of source files that are generated from other source | |
466 files. These sources will be built before any other target processing to | |
467 ensure they are present. | |
468 | |
469 ``CONFIG_FILES`` | |
470 Specifies a set of configuration files to be installed. | |
471 | |
472 ``DEBUG_SYMBOLS`` | |
473 If set to any value, causes the build to include debugging symbols even in | |
474 optimized objects, libraries and executables. This alters the flags | |
475 specified to the compilers and linkers. Debugging isn't fun in an optimized | |
476 build, but it is possible. | |
477 | |
478 ``DIRS`` | |
479 Specifies a set of directories, usually children of the current directory, | |
480 that should also be made using the same goal. These directories will be | |
481 built serially. | |
482 | |
483 ``DISABLE_AUTO_DEPENDENCIES`` | |
484 If set to any value, causes the makefiles to **not** automatically generate | |
485 dependencies when running the compiler. Use of this feature is discouraged | |
486 and it may be removed at a later date. | |
487 | |
488 ``ENABLE_OPTIMIZED`` | |
489 If set to 1, causes the build to generate optimized objects, libraries and | |
490 executables. This alters the flags specified to the compilers and | |
491 linkers. Generally debugging won't be a fun experience with an optimized | |
492 build. | |
493 | |
494 ``ENABLE_PROFILING`` | |
495 If set to 1, causes the build to generate both optimized and profiled | |
496 objects, libraries and executables. This alters the flags specified to the | |
497 compilers and linkers to ensure that profile data can be collected from the | |
498 tools built. Use the ``gprof`` tool to analyze the output from the profiled | |
499 tools (``gmon.out``). | |
500 | |
501 ``DISABLE_ASSERTIONS`` | |
502 If set to 1, causes the build to disable assertions, even if building a | |
503 debug or profile build. This will exclude all assertion check code from the | |
504 build. LLVM will execute faster, but with little help when things go | |
505 wrong. | |
506 | |
507 ``EXPERIMENTAL_DIRS`` | |
508 Specify a set of directories that should be built, but if they fail, it | |
509 should not cause the build to fail. Note that this should only be used | |
510 temporarily while code is being written. | |
511 | |
512 ``EXPORTED_SYMBOL_FILE`` | |
513 Specifies the name of a single file that contains a list of the symbols to | |
514 be exported by the linker. One symbol per line. | |
515 | |
516 ``EXPORTED_SYMBOL_LIST`` | |
517 Specifies a set of symbols to be exported by the linker. | |
518 | |
519 ``EXTRA_DIST`` | |
520 Specifies additional files that should be distributed with LLVM. All source | |
521 files, all built sources, all Makefiles, and most documentation files will | |
522 be automatically distributed. Use this variable to distribute any files that | |
523 are not automatically distributed. | |
524 | |
525 ``KEEP_SYMBOLS`` | |
526 If set to any value, specifies that when linking executables the makefiles | |
527 should retain debug symbols in the executable. Normally, symbols are | |
528 stripped from the executable. | |
529 | |
530 ``LEVEL`` (required) | |
531 Specify the level of nesting from the top level. This variable must be set | |
532 in each makefile as it is used to find the top level and thus the other | |
533 makefiles. | |
534 | |
535 ``LIBRARYNAME`` | |
536 Specify the name of the library to be built. (Required For Libraries) | |
537 | |
538 ``LINK_COMPONENTS`` | |
539 When specified for building a tool, the value of this variable will be | |
540 passed to the ``llvm-config`` tool to generate a link line for the | |
541 tool. Unlike ``USEDLIBS`` and ``LLVMLIBS``, not all libraries need to be | |
542 specified. The ``llvm-config`` tool will figure out the library dependencies | |
543 and add any libraries that are needed. The ``USEDLIBS`` variable can still | |
544 be used in conjunction with ``LINK_COMPONENTS`` so that additional | |
545 project-specific libraries can be linked with the LLVM libraries specified | |
546 by ``LINK_COMPONENTS``. | |
547 | |
548 .. _LINK_LIBS_IN_SHARED: | |
549 | |
550 ``LINK_LIBS_IN_SHARED`` | |
551 By default, shared library linking will ignore any libraries specified with | |
552 the `LLVMLIBS`_ or `USEDLIBS`_. This prevents shared libs from including | |
553 things that will be in the LLVM tool the shared library will be loaded | |
554 into. However, sometimes it is useful to link certain libraries into your | |
555 shared library and this option enables that feature. | |
556 | |
557 .. _LLVMLIBS: | |
558 | |
559 ``LLVMLIBS`` | |
560 Specifies the set of libraries from the LLVM ``$(ObjDir)`` that will be | |
561 linked into the tool or library. | |
562 | |
563 ``LOADABLE_MODULE`` | |
564 If set to any value, causes the shared library being built to also be a | |
565 loadable module. Loadable modules can be opened with the dlopen() function | |
566 and searched with dlsym (or the operating system's equivalent). Note that | |
567 setting this variable without also setting ``SHARED_LIBRARY`` will have no | |
568 effect. | |
569 | |
570 ``NO_INSTALL`` | |
571 Specifies that the build products of the directory should not be installed | |
572 but should be built even if the ``install`` target is given. This is handy | |
573 for directories that build libraries or tools that are only used as part of | |
574 the build process, such as code generators (e.g. ``tblgen``). | |
575 | |
576 ``OPTIONAL_DIRS`` | |
577 Specify a set of directories that may be built, if they exist, but it is | |
578 not an error for them not to exist. | |
579 | |
580 ``PARALLEL_DIRS`` | |
581 Specify a set of directories to build recursively and in parallel if the | |
582 ``-j`` option was used with ``make``. | |
583 | |
584 .. _SHARED_LIBRARY: | |
585 | |
586 ``SHARED_LIBRARY`` | |
587 If set to any value, causes a shared library (``.so``) to be built in | |
588 addition to any other kinds of libraries. Note that this option will cause | |
589 all source files to be built twice: once with options for position | |
590 independent code and once without. Use it only where you really need a | |
591 shared library. | |
592 | |
593 ``SOURCES`` (optional) | |
594 Specifies the list of source files in the current directory to be | |
595 built. Source files of any type may be specified (programs, documentation, | |
596 config files, etc.). If not specified, the makefile system will infer the | |
597 set of source files from the files present in the current directory. | |
598 | |
599 ``SUFFIXES`` | |
600 Specifies a set of filename suffixes that occur in suffix match rules. Only | |
601 set this if your local ``Makefile`` specifies additional suffix match | |
602 rules. | |
603 | |
604 ``TARGET`` | |
605 Specifies the name of the LLVM code generation target that the current | |
606 directory builds. Setting this variable enables additional rules to build | |
607 ``.inc`` files from ``.td`` files. | |
608 | |
609 .. _TESTSUITE: | |
610 | |
611 ``TESTSUITE`` | |
612 Specifies the directory of tests to run in ``llvm/test``. | |
613 | |
614 ``TOOLNAME`` | |
615 Specifies the name of the tool that the current directory should build. | |
616 | |
617 ``TOOL_VERBOSE`` | |
618 Implies ``VERBOSE`` and also tells each tool invoked to be verbose. This is | |
619 handy when you're trying to see the sub-tools invoked by each tool invoked | |
620 by the makefile. For example, this will pass ``-v`` to the GCC compilers | |
621 which causes it to print out the command lines it uses to invoke sub-tools | |
622 (compiler, assembler, linker). | |
623 | |
624 .. _USEDLIBS: | |
625 | |
626 ``USEDLIBS`` | |
627 Specifies the list of project libraries that will be linked into the tool or | |
628 library. | |
629 | |
630 ``VERBOSE`` | |
631 Tells the Makefile system to produce detailed output of what it is doing | |
632 instead of just summary comments. This will generate a LOT of output. | |
633 | |
634 Override Variables | |
635 ------------------ | |
636 | |
637 Override variables can be used to override the default values provided by the | |
638 LLVM makefile system. These variables can be set in several ways: | |
639 | |
640 * In the environment (e.g. setenv, export) --- not recommended. | |
641 * On the ``make`` command line --- recommended. | |
642 * On the ``configure`` command line. | |
643 * In the Makefile (only *after* the inclusion of `$(LEVEL)/Makefile.common`_). | |
644 | |
645 The override variables are given below: | |
646 | |
647 ``AR`` (defaulted) | |
648 Specifies the path to the ``ar`` tool. | |
649 | |
650 ``PROJ_OBJ_DIR`` | |
651 The directory into which the products of build rules will be placed. This | |
652 might be the same as `PROJ_SRC_DIR`_ but typically is not. | |
653 | |
654 .. _PROJ_SRC_DIR: | |
655 | |
656 ``PROJ_SRC_DIR`` | |
657 The directory which contains the source files to be built. | |
658 | |
659 ``BUILD_EXAMPLES`` | |
660 If set to 1, build examples in ``examples`` and (if building Clang) | |
661 ``tools/clang/examples`` directories. | |
662 | |
663 ``BZIP2`` (configured) | |
664 The path to the ``bzip2`` tool. | |
665 | |
666 ``CC`` (configured) | |
667 The path to the 'C' compiler. | |
668 | |
669 ``CFLAGS`` | |
670 Additional flags to be passed to the 'C' compiler. | |
671 | |
672 ``CPPFLAGS`` | |
673 Additional flags passed to the C/C++ preprocessor. | |
674 | |
675 ``CXX`` | |
676 Specifies the path to the C++ compiler. | |
677 | |
678 ``CXXFLAGS`` | |
679 Additional flags to be passed to the C++ compiler. | |
680 | |
681 ``DATE`` (configured) | |
682 Specifies the path to the ``date`` program or any program that can generate | |
683 the current date and time on its standard output. | |
684 | |
685 ``DOT`` (configured) | |
686 Specifies the path to the ``dot`` tool or ``false`` if there isn't one. | |
687 | |
688 ``ECHO`` (configured) | |
689 Specifies the path to the ``echo`` tool for printing output. | |
690 | |
691 ``EXEEXT`` (configured) | |
692 Provides the extension to be used on executables built by the makefiles. | |
693 The value may be empty on platforms that do not use file extensions for | |
694 executables (e.g. Unix). | |
695 | |
696 ``INSTALL`` (configured) | |
697 Specifies the path to the ``install`` tool. | |
698 | |
699 ``LDFLAGS`` (configured) | |
700 Allows users to specify additional flags to pass to the linker. | |
701 | |
702 ``LIBS`` (configured) | |
703 The list of libraries that should be linked with each tool. | |
704 | |
705 ``LIBTOOL`` (configured) | |
706 Specifies the path to the ``libtool`` tool. This tool is renamed ``mklib`` | |
707 by the ``configure`` script. | |
708 | |
709 ``LLVMAS`` (defaulted) | |
710 Specifies the path to the ``llvm-as`` tool. | |
711 | |
712 ``LLVMGCC`` (defaulted) | |
713 Specifies the path to the LLVM version of the GCC 'C' Compiler. | |
714 | |
715 ``LLVMGXX`` (defaulted) | |
716 Specifies the path to the LLVM version of the GCC C++ Compiler. | |
717 | |
718 ``LLVMLD`` (defaulted) | |
719 Specifies the path to the LLVM bitcode linker tool | |
720 | |
721 ``LLVM_OBJ_ROOT`` (configured) | |
722 Specifies the top directory into which the output of the build is placed. | |
723 | |
724 ``LLVM_SRC_ROOT`` (configured) | |
725 Specifies the top directory in which the sources are found. | |
726 | |
727 ``LLVM_TARBALL_NAME`` (configured) | |
728 Specifies the name of the distribution tarball to create. This is configured | |
729 from the name of the project and its version number. | |
730 | |
731 ``MKDIR`` (defaulted) | |
732 Specifies the path to the ``mkdir`` tool that creates directories. | |
733 | |
734 ``ONLY_TOOLS`` | |
735 If set, specifies the list of tools to build. | |
736 | |
737 ``PLATFORMSTRIPOPTS`` | |
738 The options to provide to the linker to specify that a stripped (no symbols) | |
739 executable should be built. | |
740 | |
741 ``RANLIB`` (defaulted) | |
742 Specifies the path to the ``ranlib`` tool. | |
743 | |
744 ``RM`` (defaulted) | |
745 Specifies the path to the ``rm`` tool. | |
746 | |
747 ``SED`` (defaulted) | |
748 Specifies the path to the ``sed`` tool. | |
749 | |
750 ``SHLIBEXT`` (configured) | |
751 Provides the filename extension to use for shared libraries. | |
752 | |
753 ``TBLGEN`` (defaulted) | |
754 Specifies the path to the ``tblgen`` tool. | |
755 | |
756 ``TAR`` (defaulted) | |
757 Specifies the path to the ``tar`` tool. | |
758 | |
759 ``ZIP`` (defaulted) | |
760 Specifies the path to the ``zip`` tool. | |
761 | |
762 Readable Variables | |
763 ------------------ | |
764 | |
765 Variables listed in the table below can be used by the user's Makefile but | |
766 should not be changed. Changing the value will generally cause the build to go | |
767 wrong, so don't do it. | |
768 | |
769 ``bindir`` | |
770 The directory into which executables will ultimately be installed. This | |
771 value is derived from the ``--prefix`` option given to ``configure``. | |
772 | |
773 ``BuildMode`` | |
774 The name of the type of build being performed: Debug, Release, or | |
775 Profile. | |
776 | |
777 ``bytecode_libdir`` | |
778 The directory into which bitcode libraries will ultimately be installed. | |
779 This value is derived from the ``--prefix`` option given to ``configure``. | |
780 | |
781 ``ConfigureScriptFLAGS`` | |
782 Additional flags given to the ``configure`` script when reconfiguring. | |
783 | |
784 ``DistDir`` | |
785 The *current* directory for which a distribution copy is being made. | |
786 | |
787 .. _Echo: | |
788 | |
789 ``Echo`` | |
790 The LLVM Makefile System output command. This provides the ``llvm[n]`` | |
791 prefix and starts with ``@`` so the command itself is not printed by | |
792 ``make``. | |
793 | |
794 ``EchoCmd`` | |
795 Same as `Echo`_ but without the leading ``@``. | |
796 | |
797 ``includedir`` | |
798 The directory into which include files will ultimately be installed. This | |
799 value is derived from the ``--prefix`` option given to ``configure``. | |
800 | |
801 ``libdir`` | |
802 The directory into which native libraries will ultimately be installed. | |
803 This value is derived from the ``--prefix`` option given to | |
804 ``configure``. | |
805 | |
806 ``LibDir`` | |
807 The configuration specific directory into which libraries are placed before | |
808 installation. | |
809 | |
810 ``MakefileConfig`` | |
811 Full path of the ``Makefile.config`` file. | |
812 | |
813 ``MakefileConfigIn`` | |
814 Full path of the ``Makefile.config.in`` file. | |
815 | |
816 ``ObjDir`` | |
817 The configuration and directory specific directory where build objects | |
818 (compilation results) are placed. | |
819 | |
820 ``SubDirs`` | |
821 The complete list of sub-directories of the current directory as | |
822 specified by other variables. | |
823 | |
824 ``Sources`` | |
825 The complete list of source files. | |
826 | |
827 ``sysconfdir`` | |
828 The directory into which configuration files will ultimately be | |
829 installed. This value is derived from the ``--prefix`` option given to | |
830 ``configure``. | |
831 | |
832 ``ToolDir`` | |
833 The configuration specific directory into which executables are placed | |
834 before they are installed. | |
835 | |
836 ``TopDistDir`` | |
837 The top most directory into which the distribution files are copied. | |
838 | |
839 ``Verb`` | |
840 Use this as the first thing on your build script lines to enable or disable | |
841 verbose mode. It expands to either an ``@`` (quiet mode) or nothing (verbose | |
842 mode). | |
843 | |
844 Internal Variables | |
845 ------------------ | |
846 | |
847 Variables listed below are used by the LLVM Makefile System and considered | |
848 internal. You should not use these variables under any circumstances. | |
849 | |
850 .. code-block:: makefile | |
851 | |
852 Archive | |
853 AR.Flags | |
854 BaseNameSources | |
855 BCLinkLib | |
856 C.Flags | |
857 Compile.C | |
858 CompileCommonOpts | |
859 Compile.CXX | |
860 ConfigStatusScript | |
861 ConfigureScript | |
862 CPP.Flags | |
863 CPP.Flags | |
864 CXX.Flags | |
865 DependFiles | |
866 DestArchiveLib | |
867 DestBitcodeLib | |
868 DestModule | |
869 DestSharedLib | |
870 DestTool | |
871 DistAlways | |
872 DistCheckDir | |
873 DistCheckTop | |
874 DistFiles | |
875 DistName | |
876 DistOther | |
877 DistSources | |
878 DistSubDirs | |
879 DistTarBZ2 | |
880 DistTarGZip | |
881 DistZip | |
882 ExtraLibs | |
883 FakeSources | |
884 INCFiles | |
885 InternalTargets | |
886 LD.Flags | |
887 LibName.A | |
888 LibName.BC | |
889 LibName.LA | |
890 LibName.O | |
891 LibTool.Flags | |
892 Link | |
893 LinkModule | |
894 LLVMLibDir | |
895 LLVMLibsOptions | |
896 LLVMLibsPaths | |
897 LLVMToolDir | |
898 LLVMUsedLibs | |
899 LocalTargets | |
900 Module | |
901 ObjectsLO | |
902 ObjectsO | |
903 ObjMakefiles | |
904 ParallelTargets | |
905 PreConditions | |
906 ProjLibsOptions | |
907 ProjLibsPaths | |
908 ProjUsedLibs | |
909 Ranlib | |
910 RecursiveTargets | |
911 SrcMakefiles | |
912 Strip | |
913 StripWarnMsg | |
914 TableGen | |
915 TDFiles | |
916 ToolBuildPath | |
917 TopLevelTargets | |
918 UserTargets |