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