<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>LLVM Makefile Guide</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">LLVM Makefile Guide</div>

<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#general">General Concepts</a>
    <ol>
      <li><a href="#projects">Projects</a></li>
      <li><a href="#varvals">Variable Values</a></li>
      <li><a href="#including">Including Makefiles</a>
        <ol>
          <li><a href="#Makefile">Makefile</a></li>
          <li><a href="#Makefile.common">Makefile.common</a></li>
          <li><a href="#Makefile.config">Makefile.config</a></li>
          <li><a href="#Makefile.rules">Makefile.rules</a></li>
        </ol>
      </li>
      <li><a href="#Comments">Comments</a></li>
    </ol>
  </li>
  <li><a href="#tutorial">Tutorial</a>
    <ol>
      <li><a href="#libraries">Libraries</a>
        <ol>
	  <li><a href="#BCModules">Bitcode Modules</a></li>
	  <li><a href="#LoadableModules">Loadable Modules</a></li>
	</ol>
      </li>
      <li><a href="#tools">Tools</a>
        <ol>
	  <li><a href="#JIT">JIT Tools</a></li>
	</ol>
      </li>
      <li><a href="#projects">Projects</a></li>
    </ol>
  </li>
  <li><a href="#targets">Targets Supported</a>
    <ol>
      <li><a href="#all">all</a></li>
      <li><a href="#all-local">all-local</a></li>
      <li><a href="#check">check</a></li>
      <li><a href="#check-local">check-local</a></li>
      <li><a href="#clean">clean</a></li>
      <li><a href="#clean-local">clean-local</a></li>
      <li><a href="#dist">dist</a></li>
      <li><a href="#dist-check">dist-check</a></li>
      <li><a href="#dist-clean">dist-clean</a></li>
      <li><a href="#install">install</a></li>
      <li><a href="#preconditions">preconditions</a></li>
      <li><a href="#printvars">printvars</a></li>
      <li><a href="#reconfigure">reconfigure</a></li>
      <li><a href="#spotless">spotless</a></li>
      <li><a href="#tags">tags</a></li>
      <li><a href="#uninstall">uninstall</a></li>
    </ol>
  </li>
  <li><a href="#variables">Using Variables</a>
    <ol>
      <li><a href="#setvars">Control Variables</a></li>
      <li><a href="#overvars">Override Variables</a></li>
      <li><a href="#getvars">Readable Variables</a></li>
      <li><a href="#intvars">Internal Variables</a></li>
    </ol>
  </li>
</ol>

<div class="doc_author">    
  <p>Written by <a href="mailto:reid@x10sys.com">Reid Spencer</a></p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction </a></div>
<!-- *********************************************************************** -->

<div class="doc_text">
  <p>This document provides <em>usage</em> information about the LLVM makefile 
  system. While loosely patterned after the BSD makefile system, LLVM has taken 
  a departure from BSD in order to implement additional features needed by LLVM.
  Although makefile systems such as automake were attempted at one point, it
  has become clear that the features needed by LLVM and the Makefile norm are 
  too great to use a more limited tool. Consequently, LLVM requires simply GNU 
  Make 3.79, a widely portable makefile processor. LLVM unabashedly makes heavy 
  use of the features of GNU Make so the dependency on GNU Make is firm. If 
  you're not familiar with <tt>make</tt>, it is recommended that you read the 
  <a href="http://www.gnu.org/software/make/manual/make.html">GNU Makefile 
  Manual</a>.</p>
  <p>While this document is rightly part of the 
  <a href="ProgrammersManual.html">LLVM Programmer's Manual</a>, it is treated
  separately here because of the volume of content and because it is often an
  early source of bewilderment for new developers.</p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="general">General Concepts</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">
  <p>The LLVM Makefile System is the component of LLVM that is responsible for
  building the software, testing it,  generating distributions, checking those
  distributions, installing and uninstalling, etc. It consists of a several
  files throughout the source tree. These files and other general concepts are
  described in this section.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="projects">Projects</a></div>
<div class="doc_text">
  <p>The LLVM Makefile System is quite generous. It not only builds its own
  software, but it can build yours too. Built into the system is knowledge of
  the <tt>llvm/projects</tt> directory. Any directory under <tt>projects</tt>
  that has both a <tt>configure</tt> script and a <tt>Makefile</tt> is assumed
  to be a project that uses the LLVM Makefile system.  Building software that
  uses LLVM does not require the LLVM Makefile System nor even placement in the
  <tt>llvm/projects</tt> directory. However, doing so will allow your project
  to get up and running quickly by utilizing the built-in features that are used
  to compile LLVM. LLVM compiles itself using the same features of the makefile
  system as used for projects.</p>
  <p>For complete details on setting up your projects configuration, simply
  mimic the <tt>llvm/projects/sample</tt> project or for further details, 
  consult the <a href="Projects.html">Projects.html</a> page.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="varvalues">Variable Values</a></div>
<div class="doc_text">
  <p>To use the makefile system, you simply create a file named 
  <tt>Makefile</tt> in your directory and declare values for certain variables. 
  The variables and values that you select determine what the makefile system
  will do. These variables enable rules and processing in the makefile system
  that automatically Do The Right Thing&trade;. 
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="including">Including Makefiles</a></div>
<div class="doc_text">
  <p>Setting variables alone is not enough. You must include into your Makefile
  additional files that provide the rules of the LLVM Makefile system. The 
  various files involved are described in the sections that follow.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile">Makefile</a></div>
<div class="doc_text">
  <p>Each directory to participate in the build needs to have a file named
  <tt>Makefile</tt>. This is the file first read by <tt>make</tt>. It has three
  sections:</p>
  <ol>
    <li><a href="#setvars">Settable Variables</a> - Required that must be set
    first.</li>
    <li><a href="#Makefile.common">include <tt>$(LEVEL)/Makefile.common</tt></a>
    - include the LLVM Makefile system.
    <li><a href="#overvars">Override Variables</a> - Override variables set by
    the LLVM Makefile system.
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.common">Makefile.common</a>
</div>
<div class="doc_text">
  <p>Every project must have a <tt>Makefile.common</tt> file at its top source 
  directory. This file serves three purposes:</p>
  <ol>
    <li>It includes the project's configuration makefile to obtain values
    determined by the <tt>configure</tt> script. This is done by including the
    <a href="#Makefile.config"><tt>$(LEVEL)/Makefile.config</tt></a> file.</li>
    <li>It specifies any other (static) values that are needed throughout the
    project. Only values that are used in all or a large proportion of the
    project's directories should be placed here.</li>
    <li>It includes the standard rules for the LLVM Makefile system,
    <a href="#Makefile.rules"><tt>$(LLVM_SRC_ROOT)/Makefile.rules</tt></a>. 
    This file is the "guts" of the LLVM Makefile system.</li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.config">Makefile.config</a>
</div>
<div class="doc_text">
  <p>Every project must have a <tt>Makefile.config</tt> at the top of its
  <em>build</em> directory. This file is <b>generated</b> by the
  <tt>configure</tt> script from the pattern provided by the
  <tt>Makefile.config.in</tt> file located at the top of the project's
  <em>source</em> directory. The contents of this file depend largely on what
  configuration items the project uses, however most projects can get what they
  need by just relying on LLVM's configuration found in
  <tt>$(LLVM_OBJ_ROOT)/Makefile.config</tt>.
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.rules">Makefile.rules</a></div>
<div class="doc_text">
  <p>This file, located at <tt>$(LLVM_SRC_ROOT)/Makefile.rules</tt> is the heart
  of the LLVM Makefile System. It provides all the logic, dependencies, and
  rules for building the targets supported by the system. What it does largely
  depends on the values of <tt>make</tt> <a href="#variables">variables</a> that
  have been set <em>before</em> <tt>Makefile.rules</tt> is included.
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="Comments">Comments</a></div>
<div class="doc_text">
  <p>User Makefiles need not have comments in them unless the construction is
  unusual or it does not strictly follow the rules and patterns of the LLVM
  makefile system. Makefile comments are invoked with the pound (#) character.
  The # character and any text following it, to the end of the line, are ignored
  by <tt>make</tt>.</p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="tutorial">Tutorial</a></div>
<!-- *********************************************************************** -->
<div class="doc_text">
  <p>This section provides some examples of the different kinds of modules you
  can build with the LLVM makefile system. In general, each directory you 
  provide will build a single object although that object may be composed of
  additionally compiled components.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="libraries">Libraries</a></div>
<div class="doc_text">
  <p>Only a few variable definitions are needed to build a regular library.
  Normally, the makefile system will build all the software into a single
  <tt>libname.o</tt> (pre-linked) object. This means the library is not
  searchable and that the distinction between compilation units has been
  dissolved. Optionally, you can ask for a shared library (.so) or archive
  library (.a) built.  Archive libraries are the default. For example:</p>
  <pre><tt>
      LIBRARYNAME = mylib
      SHARED_LIBRARY = 1
      ARCHIVE_LIBRARY = 1
  </tt></pre>
  <p>says to build a library named "mylib" with both a shared library 
  (<tt>mylib.so</tt>) and an archive library (<tt>mylib.a</tt>) version. The
  contents of all the
  libraries produced will be the same, they are just constructed differently.
  Note that you normally do not need to specify the sources involved. The LLVM
  Makefile system will infer the source files from the contents of the source
  directory.</p>
  <p>The <tt>LOADABLE_MODULE=1</tt> directive can be used in conjunction with
  <tt>SHARED_LIBRARY=1</tt> to indicate that the resulting shared library should
  be openable with the <tt>dlopen</tt> function and searchable with the
  <tt>dlsym</tt> function (or your operating system's equivalents). While this
  isn't strictly necessary on Linux and a few other platforms, it is required
  on systems like HP-UX and Darwin. You should use <tt>LOADABLE_MODULE</tt> for
  any shared library that you intend to be loaded into an tool via the
  <tt>-load</tt> option. See the 
  <a href="WritingAnLLVMPass.html#makefile">WritingAnLLVMPass.html</a> document
  for an example of why you might want to do this.
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="BCModules">Bitcode Modules</a></div>
<div class="doc_text">
  <p>In some situations, it is desirable to build a single bitcode module from
  a variety of sources, instead of an archive, shared library, or bitcode 
  library. Bitcode modules can be specified in addition to any of the other
  types of libraries by defining the <a href="#MODULE_NAME">MODULE_NAME</a>
  variable. For example:</p>
  <pre><tt>
      LIBRARYNAME = mylib
      BYTECODE_LIBRARY = 1
      MODULE_NAME = mymod
  </tt></pre>
  <p>will build a module named <tt>mymod.bc</tt> from the sources in the
  directory. This module will be an aggregation of all the bitcode modules 
  derived from the sources. The example will also build a bitcode archive 
  containing a bitcode module for each compiled source file. The difference is
  subtle, but important depending on how the module or library is to be linked.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection">
  <a name="LoadableModules">Loadable Modules</a>
</div>
<div class="doc_text">
  <p>In some situations, you need to create a loadable module. Loadable modules
  can be loaded into programs like <tt>opt</tt> or <tt>llc</tt> to specify
  additional passes to run or targets to support.  Loadable modules are also
  useful for debugging a pass or providing a pass with another package if that
  pass can't be included in LLVM.</p>
  <p>LLVM provides complete support for building such a module. All you need to
  do is use the LOADABLE_MODULE variable in your Makefile. For example, to 
  build a loadable module named <tt>MyMod</tt> that uses the LLVM libraries
  <tt>LLVMSupport.a</tt> and <tt>LLVMSystem.a</tt>, you would specify:</p>
  <pre><tt>
     LIBRARYNAME := MyMod
     LOADABLE_MODULE := 1
     LINK_COMPONENTS := support system
  </tt></pre>
  <p>Use of the <tt>LOADABLE_MODULE</tt> facility implies several things:</p>
  <ol>
    <li>There will be no "lib" prefix on the module. This differentiates it from
    a standard shared library of the same name.</li>
    <li>The <a href="#SHARED_LIBRARY">SHARED_LIBRARY</a> variable is turned 
    on.</li>
    <li>The <a href="#LINK_LIBS_IN_SHARED">LINK_LIBS_IN_SHARED</a> variable
    is turned on.</li>
  </ol>
  <p>A loadable module is loaded by LLVM via the facilities of libtool's libltdl
  library which is part of <tt>lib/System</tt> implementation.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tools">Tools</a></div>
<div class="doc_text">
  <p>For building executable programs (tools), you must provide the name of the
  tool and the names of the libraries you wish to link with the tool. For
  example:</p>
  <pre><tt>
      TOOLNAME = mytool
      USEDLIBS = mylib
      LINK_COMPONENTS = support system
  </tt></pre>
  <p>says that we are to build a tool name <tt>mytool</tt> and that it requires
  three libraries: <tt>mylib</tt>, <tt>LLVMSupport.a</tt> and
  <tt>LLVMSystem.a</tt>.</p>
  <p>Note that two different variables are use to indicate which libraries are
  linked: <tt>USEDLIBS</tt> and <tt>LLVMLIBS</tt>. This distinction is necessary
  to support projects. <tt>LLVMLIBS</tt> refers to the LLVM libraries found in 
  the LLVM object directory. <tt>USEDLIBS</tt> refers to the libraries built by 
  your project. In the case of building LLVM tools, <tt>USEDLIBS</tt> and 
  <tt>LLVMLIBS</tt> can be used interchangeably since the "project" is LLVM 
  itself and <tt>USEDLIBS</tt> refers to the same place as <tt>LLVMLIBS</tt>.
  </p>
  <p>Also note that there are two different ways of specifying a library: with a
  <tt>.a</tt> suffix and without. Without the suffix, the entry refers to the
  re-linked (.o) file which will include <em>all</em> symbols of the library.
  This is useful, for example, to include all passes from a library of passes.
  If the <tt>.a</tt> suffix is used then the library is linked as a searchable
  library (with the <tt>-l</tt> option). In this case, only the symbols that are
  unresolved <em>at that point</em> will be resolved from the library, if they
  exist. Other (unreferenced) symbols will not be included when the <tt>.a</tt>
  syntax is used. Note that in order to use the <tt>.a</tt> suffix, the library
  in question must have been built with the <tt>ARCHIVE_LIBRARY</tt> option set.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="JIT">JIT Tools</a></div>
<div class="doc_text">
  <p>Many tools will want to use the JIT features of LLVM.  To do this, you
     simply specify that you want an execution 'engine', and the makefiles will
     automatically link in the appropriate JIT for the host or an interpreter
     if none is available:</p>
  <pre><tt>
      TOOLNAME = my_jit_tool
      USEDLIBS = mylib
      LINK_COMPONENTS = engine
  </tt></pre>
  <p>Of course, any additional libraries may be listed as other components.  To
  get a full understanding of how this changes the linker command, it is
  recommended that you:</p>
  <pre><tt>
      cd examples/Fibonacci
      make VERBOSE=1
  </tt></pre>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="targets">Targets Supported</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">
  <p>This section describes each of the targets that can be built using the LLVM
  Makefile system. Any target can be invoked from any directory but not all are
  applicable to a given directory (e.g. "check", "dist" and "install" will
  always operate as if invoked from the top level directory).</p>

  <table style="text-align:left">
    <tr>
      <th>Target Name</th><th>Implied Targets</th><th>Target Description</th>
    </tr>
    <tr><td><a href="#all"><tt>all</tt></a></td><td></td>
      <td>Compile the software recursively. Default target.
    </td></tr>
    <tr><td><a href="#all-local"><tt>all-local</tt></a></td><td></td>
      <td>Compile the software in the local directory only.
    </td></tr>
    <tr><td><a href="#check"><tt>check</tt></a></td><td></td>
      <td>Change to the <tt>test</tt> directory in a project and run the
      test suite there.
    </td></tr>
    <tr><td><a href="#check-local"><tt>check-local</tt></a></td><td></td>
      <td>Run a local test suite. Generally this is only defined in the 
        <tt>Makefile</tt> of the project's <tt>test</tt> directory.
    </td></tr>
    <tr><td><a href="#clean"><tt>clean</tt></a></td><td></td>
      <td>Remove built objects recursively.
    </td></tr>
    <tr><td><a href="#clean-local"><tt>clean-local</tt></a></td><td></td>
      <td>Remove built objects from the local directory only.
    </td></tr>
    <tr><td><a href="#dist"><tt>dist</tt></a></td><td>all</td>
      <td>Prepare a source distribution tarball.
    </td></tr>
    <tr><td><a href="#dist-check"><tt>dist-check</tt></a></td><td>all</td>
      <td>Prepare a source distribution tarball and check that it builds.
    </td></tr>
    <tr><td><a href="#dist-clean"><tt>dist-clean</tt></a></td><td>clean</td>
      <td>Clean source distribution tarball temporary files.
    </td></tr>
    <tr><td><a href="#install"><tt>install</tt></a></td><td>all</td>
      <td>Copy built objects to installation directory.
    </td></tr>
    <tr><td><a href="#preconditions"><tt>preconditions</tt></a></td><td>all</td>
      <td>Check to make sure configuration and makefiles are up to date.
    </td></tr>
    <tr><td><a href="#printvars"><tt>printvars</tt></a></td><td>all</td>
      <td>Prints variables defined by the makefile system (for debugging).
    </td></tr>
    <tr><td><a href="#tags"><tt>tags</tt></a></td><td></td>
      <td>Make C and C++ tags files for emacs and vi.
    </td></tr>
    <tr><td><a href="#uninstall"><tt>uninstall</tt></a></td><td></td>
      <td>Remove built objects from installation directory.
    </td></tr>
  </table>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="all">all (default)</a></div>
<div class="doc_text">
  <p>When you invoke <tt>make</tt> with no arguments, you are implicitly
  instructing it to seek the "all" target (goal). This target is used for
  building the software recursively and will do different things in different 
  directories.  For example, in a <tt>lib</tt> directory, the "all" target will 
  compile source files and generate libraries. But, in a <tt>tools</tt> 
  directory, it will link libraries and generate executables.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="all-local">all-local</a></div>
<div class="doc_text">
  <p>This target is the same as <a href="#all">all</a> but it operates only on
  the current directory instead of recursively.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check">check</a></div>
<div class="doc_text">
  <p>This target can be invoked from anywhere within a project's directories
  but always invokes the <a href="#check-local"><tt>check-local</tt></a> target 
  in the project's <tt>test</tt> directory, if it exists and has a 
  <tt>Makefile</tt>. A warning is produced otherwise.  If 
  <a href="#TESTSUITE"><tt>TESTSUITE</tt></a> is defined on the <tt>make</tt>
  command line, it will be passed down to the invocation of 
  <tt>make check-local</tt> in the <tt>test</tt> directory. The intended usage 
  for this is to assist in running specific suites of tests. If
  <tt>TESTSUITE</tt> is not set, the implementation of <tt>check-local</tt> 
  should run all normal tests.  It is up to the project to define what 
  different values for <tt>TESTSUTE</tt> will do. See the 
  <a href="TestingGuide.html">TestingGuide</a> for further details.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check-local">check-local</a></div>
<div class="doc_text">
  <p>This target should be implemented by the <tt>Makefile</tt> in the project's
  <tt>test</tt> directory. It is invoked by the <tt>check</tt> target elsewhere.
  Each project is free to define the actions of <tt>check-local</tt> as 
  appropriate for that project. The LLVM project itself uses dejagnu to run a 
  suite of feature and regresson tests. Other projects may choose to use 
  dejagnu or any other testing mechanism.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="clean">clean</a></div>
<div class="doc_text">
  <p>This target cleans the build directory, recursively removing all things
  that the Makefile builds. The cleaning rules have been made guarded so they 
  shouldn't go awry (via <tt>rm -f $(UNSET_VARIABLE)/*</tt> which will attempt
  to erase the entire directory structure.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="clean-local">clean-local</a></div>
<div class="doc_text">
  <p>This target does the same thing as <tt>clean</tt> but only for the current
  (local) directory.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist">dist</a></div>
<div class="doc_text">
  <p>This target builds a distribution tarball. It first builds the entire
  project using the <tt>all</tt> target and then tars up the necessary files and
  compresses it. The generated tarball is sufficient for a casual source 
  distribution, but probably not for a release (see <tt>dist-check</tt>).</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist-check">dist-check</a></div>
<div class="doc_text">
  <p>This target does the same thing as the <tt>dist</tt> target but also checks
  the distribution tarball. The check is made by unpacking the tarball to a new
  directory, configuring it, building it, installing it, and then verifying that
  the installation results are correct (by comparing to the original build).
  This target can take a long time to run but should be done before a release
  goes out to make sure that the distributed tarball can actually be built into
  a working release.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist-clean">dist-clean</a></div>
<div class="doc_text">
  <p>This is a special form of the <tt>clean</tt> clean target. It performs a
  normal <tt>clean</tt> but also removes things pertaining to building the
  distribution.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="install">install</a></div>
<div class="doc_text">
  <p>This target finalizes shared objects and executables and copies all
  libraries, headers, executables and documentation to the directory given 
  with the <tt>--prefix</tt> option to <tt>configure</tt>.  When completed, 
  the prefix directory will have everything needed to <b>use</b> LLVM. </p>
  <p>The LLVM makefiles can generate complete <b>internal</b> documentation 
  for all the classes by using <tt>doxygen</tt>. By default, this feature is 
  <b>not</b> enabled because it takes a long time and generates a massive 
  amount of data (>100MB). If you want this feature, you must configure LLVM
  with the --enable-doxygen switch and ensure that a modern version of doxygen
  (1.3.7 or later) is available in your <tt>PATH</tt>. You can download 
  doxygen from 
  <a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc">
  here</a>.
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="preconditions">preconditions</a></div>
<div class="doc_text">
  <p>This utility target checks to see if the <tt>Makefile</tt> in the object
  directory is older than the <tt>Makefile</tt> in the source directory and
  copies it if so. It also reruns the <tt>configure</tt> script if that needs to
  be done and rebuilds the <tt>Makefile.config</tt> file similarly. Users may
  overload this target to ensure that sanity checks are run <em>before</em> any
  building of targets as all the targets depend on <tt>preconditions</tt>.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="printvars">printvars</a></div>
<div class="doc_text">
  <p>This utility target just causes the LLVM makefiles to print out some of 
  the makefile variables so that you can double check how things are set. </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="reconfigure">reconfigure</a></div>
<div class="doc_text">
  <p>This utility target will force a reconfigure of LLVM or your project. It 
  simply runs <tt>$(PROJ_OBJ_ROOT)/config.status --recheck</tt> to rerun the
  configuration tests and rebuild the configured files. This isn't generally
  useful as the makefiles will reconfigure themselves whenever its necessary.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="spotless">spotless</a></div>
<div class="doc_text">
  <p>This utility target, only available when <tt>$(PROJ_OBJ_ROOT)</tt> is not 
  the same as <tt>$(PROJ_SRC_ROOT)</tt>, will completely clean the
  <tt>$(PROJ_OBJ_ROOT)</tt> directory by removing its content entirely and 
  reconfiguring the directory. This returns the <tt>$(PROJ_OBJ_ROOT)</tt> 
  directory to a completely fresh state. All content in the directory except 
  configured files and top-level makefiles will be lost.</p>
  <div class="doc_warning"><p>Use with caution.</p></div>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tags">tags</a></div>
<div class="doc_text">
  <p>This target will generate a <tt>TAGS</tt> file in the top-level source
  directory. It is meant for use with emacs, XEmacs, or ViM. The TAGS file
  provides an index of symbol definitions so that the editor can jump you to the
  definition quickly. </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="uninstall">uninstall</a></div>
<div class="doc_text">
  <p>This target is the opposite of the <tt>install</tt> target. It removes the
  header, library and executable files from the installation directories. Note
  that the directories themselves are not removed because it is not guaranteed
  that LLVM is the only thing installing there (e.g. --prefix=/usr).</p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="variables">Variables</a></div>
<!-- *********************************************************************** -->
<div class="doc_text">
  <p>Variables are used to tell the LLVM Makefile System what to do and to
  obtain information from it. Variables are also used internally by the LLVM
  Makefile System. Variable names that contain only the upper case alphabetic
  letters and underscore are intended for use by the end user. All other
  variables are internal to the LLVM Makefile System and should not be relied
  upon nor modified. The sections below describe how to use the LLVM Makefile 
  variables.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="setvars">Control Variables</a></div>
<div class="doc_text">
  <p>Variables listed in the table below should be set <em>before</em> the 
  inclusion of <a href="#Makefile.common"><tt>$(LEVEL)/Makefile.common</tt></a>.
  These variables provide input to the LLVM make system that tell it what to do 
  for the current directory.</p>
  <dl>
    <dt><a name="BUILD_ARCHIVE"><tt>BUILD_ARCHIVE</tt></a></dt>
    <dd>If set to any value, causes an archive (.a) library to be built.</dd>
    <dt><a name="BUILT_SOURCES"><tt>BUILT_SOURCES</tt></a></dt>
    <dd>Specifies a set of source files that are generated from other source
    files. These sources will be built before any other target processing to 
    ensure they are present.</dd>
    <dt><a name="BYTECODE_LIBRARY"><tt>BYTECODE_LIBRARY</tt></a></dt>
    <dd>If set to any value, causes a bitcode library (.bc) to be built.</dd>
    <dt><a name="CONFIG_FILES"><tt>CONFIG_FILES</tt></a></dt>
    <dd>Specifies a set of configuration files to be installed.</dd>
    <dt><a name="DEBUG_SYMBOLS"><tt>DEBUG_SYMBOLS</tt></a></dt>
    <dd>If set to any value, causes the build to include debugging
    symbols even in optimized objects, libraries and executables. This
    alters the flags specified to the compilers and linkers. Debugging
    isn't fun in an optimized build, but it is possible.</dd>
    <dt><a name="DIRS"><tt>DIRS</tt></a></dt>
    <dd>Specifies a set of directories, usually children of the current
    directory, that should also be made using the same goal. These directories 
    will be built serially.</dd>
    <dt><a name="DISABLE_AUTO_DEPENDENCIES"><tt>DISABLE_AUTO_DEPENDENCIES</tt></a></dt>
    <dd>If set to any value, causes the makefiles to <b>not</b> automatically
    generate dependencies when running the compiler. Use of this feature is
    discouraged and it may be removed at a later date.</dd>
    <dt><a name="ENABLE_OPTIMIZED"><tt>ENABLE_OPTIMIZED</tt></a></dt>
    <dd>If set to any value, causes the build to generate optimized objects,
    libraries and executables. This alters the flags specified to the compilers
    and linkers. Generally debugging won't be a fun experience with an optimized
    build.</dd>
    <dt><a name="ENABLE_PROFILING"><tt>ENABLE_PROFILING</tt></a></dt>
    <dd>If set to any value, causes the build to generate both optimized and 
    profiled objects, libraries and executables. This alters the flags specified
    to the compilers and linkers to ensure that profile data can be collected
    from the tools built. Use the <tt>gprof</tt> tool to analyze the output from
    the profiled tools (<tt>gmon.out</tt>).</dd>
    <dt><a name="DISABLE_ASSERTIONS"><tt>DISABLE_ASSERTIONS</tt></a></dt>
    <dd>If set to any value, causes the build to disable assertions, even if 
    building a release or profile build.  This will exclude all assertion check
    code from the build. LLVM will execute faster, but with little help when
    things go wrong.</dd>
    <dt><a name="EXPERIMENTAL_DIRS"><tt>EXPERIMENTAL_DIRS</tt></a></dt>
    <dd>Specify a set of directories that should be built, but if they fail, it
    should not cause the build to fail. Note that this should only be used 
    temporarily while code is being written.</dd> 
    <dt><a name="EXPORTED_SYMBOL_FILE"><tt>EXPORTED_SYMBOL_FILE</tt></a></dt>
    <dd>Specifies the name of a single file that contains a list of the 
    symbols to be exported by the linker. One symbol per line.</dd>
    <dt><a name="EXPORTED_SYMBOL_LIST"><tt>EXPORTED_SYMBOL_LIST</tt></a></dt>
    <dd>Specifies a set of symbols to be exported by the linker.</dd>
    <dt><a name="EXTRA_DIST"><tt>EXTRA_DIST</tt></a></dt>
    <dd>Specifies additional files that should be distributed with LLVM. All
    source files, all built sources, all Makefiles, and most documentation files
    will be automatically distributed. Use this variable to distribute any 
    files that are not automatically distributed.</dd>
    <dt><a name="KEEP_SYMBOLS"><tt>KEEP_SYMBOLS</tt></a></dt>
    <dd>If set to any value, specifies that when linking executables the
    makefiles should retain debug symbols in the executable. Normally, symbols
    are stripped from the executable.</dd>
    <dt><a name="LEVEL"><tt>LEVEL</tt></a><small>(required)</small></dt>
    <dd>Specify the level of nesting from the top level. This variable must be
    set in each makefile as it is used to find the top level and thus the other
    makefiles.</dd>
    <dt><a name="LIBRARYNAME"><tt>LIBRARYNAME</tt></a></dt>
    <dd>Specify the name of the library to be built. (Required For
    Libraries)</dd>
    <dt><a name="LINK_COMPONENTS"><tt>LINK_COMPONENTS</tt></a></dt>
    <dd>When specified for building a tool, the value of this variable will be
    passed to the <tt>llvm-config</tt> tool to generate a link line for the
    tool. Unlike <tt>USEDLIBS</tt> and <tt>LLVMLIBS</tt>, not all libraries need
    to be specified. The <tt>llvm-config</tt> tool will figure out the library
    dependencies and add any libraries that are needed. The <tt>USEDLIBS</tt>
    variable can still be used in conjunction with <tt>LINK_COMPONENTS</tt> so
    that additional project-specific libraries can be linked with the LLVM 
    libraries specified by <tt>LINK_COMPONENTS</tt></dd>
    <dt><a name="LINK_LIBS_IN_SHARED"><tt>LINK_LIBS_IN_SHARED</tt></a></dt>
    <dd>By default, shared library linking will ignore any libraries specified
    with the <a href="LLVMLIBS">LLVMLIBS</a> or <a href="USEDLIBS">USEDLIBS</a>.
    This prevents shared libs from including things that will be in the LLVM
    tool the shared library will be loaded into. However, sometimes it is useful
    to link certain libraries into your shared library and this option enables
    that feature.</dd>
    <dt><a name="LLVMLIBS"><tt>LLVMLIBS</tt></a></dt>
    <dd>Specifies the set of libraries from the LLVM $(ObjDir) that will be
    linked into the tool or library.</dd>
    <dt><a name="LOADABLE_MODULE"><tt>LOADABLE_MODULE</tt></a></dt>
    <dd>If set to any value, causes the shared library being built to also be
    a loadable module. Loadable modules can be opened with the dlopen() function
    and searched with dlsym (or the operating system's equivalent). Note that
    setting this variable without also setting <tt>SHARED_LIBRARY</tt> will have
    no effect.</dd>
    <dt><a name="MODULE_NAME"><tt>MODULE_NAME</tt></a></dt>
    <dd>Specifies the name of a bitcode module to be created. A bitcode 
    module can be specified in conjunction with other kinds of library builds 
    or by itself. It constructs from the sources a single linked bitcode 
    file.</dd>
    <dt><a name="NO_INSTALL"><tt>NO_INSTALL</tt></a></dt>
    <dd>Specifies that the build products of the directory should not be
    installed but should be built even if the <tt>install</tt> target is given.
    This is handy for directories that build libraries or tools that are only
    used as part of the build process, such as code generators (e.g.
    <tt>tblgen</tt>).</dd>
    <dt><a name="OPTIONAL_DIRS"><tt>OPTIONAL_DIRS</tt></a></dt>
    <dd>Specify a set of directories that may be built, if they exist, but its
    not an error for them not to exist.</dd>
    <dt><a name="PARALLEL_DIRS"><tt>PARALLEL_DIRS</tt></a></dt>
    <dd>Specify a set of directories to build recursively and in parallel if
    the -j option was used with <tt>make</tt>.</dd>
    <dt><a name="SHARED_LIBRARY"><tt>SHARED_LIBRARY</tt></a></dt>
    <dd>If set to any value, causes a shared library (.so) to be built in
    addition to any other kinds of libraries. Note that this option will cause
    all source files to be built twice: once with options for position
    independent code and once without. Use it only where you really need a
    shared library.</dd>
    <dt><a name="SOURCES"><tt>SOURCES</tt><small>(optional)</small></a></dt>
    <dd>Specifies the list of source files in the current directory to be
    built. Source files of any type may be specified (programs, documentation, 
    config files, etc.). If not specified, the makefile system will infer the
    set of source files from the files present in the current directory.</dd>
    <dt><a name="SUFFIXES"><tt>SUFFIXES</tt></a></dt>
    <dd>Specifies a set of filename suffixes that occur in suffix match rules.
    Only set this if your local <tt>Makefile</tt> specifies additional suffix
    match rules.</dd> 
    <dt><a name="TARGET"><tt>TARGET</tt></a></dt>
    <dd>Specifies the name of the LLVM code generation target that the
    current directory builds. Setting this variable enables additional rules to
    build <tt>.inc</tt> files from <tt>.td</tt> files. </dd>
    <dt><a name="TESTSUITE"><tt>TESTSUITE</tt></a></dt>
    <dd>Specifies the directory of tests to run in <tt>llvm/test</tt>.</dd>
    <dt><a name="TOOLNAME"><tt>TOOLNAME</tt></a></dt>
    <dd>Specifies the name of the tool that the current directory should
    build.</dd>
    <dt><a name="TOOL_VERBOSE"><tt>TOOL_VERBOSE</tt></a></dt>
    <dd>Implies VERBOSE and also tells each tool invoked to be verbose. This is
    handy when you're trying to see the sub-tools invoked by each tool invoked 
    by the makefile. For example, this will pass <tt>-v</tt> to the GCC 
    compilers which causes it to print out the command lines it uses to invoke
    sub-tools (compiler, assembler, linker).</dd>
    <dt><a name="USEDLIBS"><tt>USEDLIBS</tt></a></dt>
    <dd>Specifies the list of project libraries that will be linked into the
    tool or library.</dd>
    <dt><a name="VERBOSE"><tt>VERBOSE</tt></a></dt>
    <dd>Tells the Makefile system to produce detailed output of what it is doing
    instead of just summary comments. This will generate a LOT of output.</dd>
  </dl>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="overvars">Override Variables</a></div>
<div class="doc_text">
  <p>Override variables can be used to override the default
  values provided by the LLVM makefile system. These variables can be set in 
  several ways:</p>
  <ul>
    <li>In the environment (e.g. setenv, export) -- not recommended.</li>
    <li>On the <tt>make</tt> command line -- recommended.</li>
    <li>On the <tt>configure</tt> command line</li>
    <li>In the Makefile (only <em>after</em> the inclusion of <a
    href="#Makefile.common"><tt>$(LEVEL)/Makefile.common</tt></a>).</li>
  </ul>
  <p>The override variables are given below:</p>
  <dl>
    <dt><a name="AR"><tt>AR</tt></a> <small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>ar</tt> tool.</dd>
    <dt><a name="PROJ_OBJ_DIR"><tt>PROJ_OBJ_DIR</tt></a></dt>
    <dd>The directory into which the products of build rules will be placed.
    This might be the same as 
    <a href="#PROJ_SRC_DIR"><tt>PROJ_SRC_DIR</tt></a> but typically is
    not.</dd>
    <dt><a name="PROJ_SRC_DIR"><tt>PROJ_SRC_DIR</tt></a></dt>
    <dd>The directory which contains the source files to be built.</dd>
    <dt><a name="BZIP2"><tt>BZIP2</tt></a><small>(configured)</small></dt>
    <dd>The path to the <tt>bzip2</tt> tool.</dd>
    <dt><a name="CC"><tt>CC</tt></a><small>(configured)</small></dt>
    <dd>The path to the 'C' compiler.</dd>
    <dt><a name="CFLAGS"><tt>CFLAGS</tt></a></dt>
    <dd>Additional flags to be passed to the 'C' compiler.</dd>
    <dt><a name="CXX"><tt>CXX</tt></a></dt>
    <dd>Specifies the path to the C++ compiler.</dd>
    <dt><a name="CXXFLAGS"><tt>CXXFLAGS</tt></a></dt>
    <dd>Additional flags to be passed to the C++ compiler.</dd>
    <dt><a name="DATE"><tt>DATE<small>(configured)</small></tt></a></dt>
    <dd>Specifies the path to the <tt>date</tt> program or any program that can
    generate the current date and time on its standard output</dd>
    <dt><a name="DOT"><tt>DOT</tt></a><small>(configured)</small></dt>
    <dd>Specifies the path to the <tt>dot</tt> tool or <tt>false</tt> if there
    isn't one.</dd>
    <dt><a name="ECHO"><tt>ECHO</tt></a><small>(configured)</small></dt>
    <dd>Specifies the path to the <tt>echo</tt> tool for printing output.</dd>
    <dt><a name="EXEEXT"><tt>EXEEXT</tt></a><small>(configured)</small></dt>
    <dd>Provides the extension to be used on executables built by the makefiles.
    The value may be empty on platforms that do not use file extensions for
    executables (e.g. Unix).</dd>
    <dt><a name="INSTALL"><tt>INSTALL</tt></a><small>(configured)</small></dt>
    <dd>Specifies the path to the <tt>install</tt> tool.</dd>
    <dt><a name="LDFLAGS"><tt>LDFLAGS</tt></a><small>(configured)</small></dt>
    <dd>Allows users to specify additional flags to pass to the linker.</dd>
    <dt><a name="LIBS"><tt>LIBS</tt></a><small>(configured)</small></dt>
    <dd>The list of libraries that should be linked with each tool.</dd>
    <dt><a name="LIBTOOL"><tt>LIBTOOL</tt></a><small>(configured)</small></dt>
    <dd>Specifies the path to the <tt>libtool</tt> tool. This tool is renamed
    <tt>mklib</tt> by the <tt>configure</tt> script and always located in the 
    <dt><a name="LLVMAS"><tt>LLVMAS</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>llvm-as</tt> tool.</dd>
    <dt><a name="LLVMGCC"><tt>LLVMGCC</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the LLVM version of the GCC 'C' Compiler</dd>
    <dt><a name="LLVMGXX"><tt>LLVMGXX</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the LLVM version of the GCC C++ Compiler</dd>
    <dt><a name="LLVMLD"><tt>LLVMLD</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the LLVM bitcode linker tool</dd>
    <dt><a name="LLVM_OBJ_ROOT"><tt>LLVM_OBJ_ROOT</tt></a><small>(configured)
    </small></dt>
    <dd>Specifies the top directory into which the output of the build is
    placed.</dd>
    <dt><a name="LLVM_SRC_ROOT"><tt>LLVM_SRC_ROOT</tt></a><small>(configured)
    </small></dt>
    <dd>Specifies the top directory in which the sources are found.</dd>
    <dt><a name="LLVM_TARBALL_NAME"><tt>LLVM_TARBALL_NAME</tt></a>
    <small>(configured)</small></dt>
    <dd>Specifies the name of the distribution tarball to create. This is
    configured from the name of the project and its version number.</dd>
    <dt><a name="MKDIR"><tt>MKDIR</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>mkdir</tt> tool that creates
    directories.</dd>
    <dt><a name="ONLY_TOOLS"><tt>ONLY_TOOLS</tt></a></dt>
    <dd>If set, specifies the list of tools to build.</dd>
    <dt><a name="PLATFORMSTRIPOPTS"><tt>PLATFORMSTRIPOPTS</tt></a></dt>
    <dd>The options to provide to the linker to specify that a stripped (no
    symbols) executable should be built.</dd>
    <dt><a name="RANLIB"><tt>RANLIB</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>ranlib</tt> tool.</dd>
    <dt><a name="RM"><tt>RM</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>rm</tt> tool.</dd>
    <dt><a name="SED"><tt>SED</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>sed</tt> tool.</dd>
    <dt><a name="SHLIBEXT"><tt>SHLIBEXT</tt></a><small>(configured)</small></dt>
    <dd>Provides the filename extension to use for shared libraries.</dd>
    <dt><a name="TBLGEN"><tt>TBLGEN</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>tblgen</tt> tool.</dd>
    <dt><a name="TAR"><tt>TAR</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>tar</tt> tool.</dd>
    <dt><a name="ZIP"><tt>ZIP</tt></a><small>(defaulted)</small></dt>
    <dd>Specifies the path to the <tt>zip</tt> tool.</dd>
  </dl>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="getvars">Readable Variables</a></div>
<div class="doc_text">
  <p>Variables listed in the table below can be used by the user's Makefile but
  should not be changed. Changing the value will generally cause the build to go
  wrong, so don't do it.</p>
  <dl>
    <dt><a name="bindir"><tt>bindir</tt></a></dt>
    <dd>The directory into which executables will ultimately be installed. This
    value is derived from the <tt>--prefix</tt> option given to
    <tt>configure</tt>.</dd>
    <dt><a name="BuildMode"><tt>BuildMode</tt></a></dt>
    <dd>The name of the type of build being performed: Debug, Release, or 
    Profile</dd>
    <dt><a name="bitcode_libdir"><tt>bytecode_libdir</tt></a></dt>
    <dd>The directory into which bitcode libraries will ultimately be 
    installed.  This value is derived from the <tt>--prefix</tt> option given to
    <tt>configure</tt>.</dd>
    <dt><a name="ConfigureScriptFLAGS"><tt>ConfigureScriptFLAGS</tt></a></dt>
    <dd>Additional flags given to the <tt>configure</tt> script when
    reconfiguring.</dd>
    <dt><a name="DistDir"><tt>DistDir</tt></a></dt>
    <dd>The <em>current</em> directory for which a distribution copy is being
    made.</dd>
    <dt><a name="Echo"><tt>Echo</tt></a></dt>
    <dd>The LLVM Makefile System output command. This provides the
    <tt>llvm[n]</tt> prefix and starts with @ so the command itself is not
    printed by <tt>make</tt>.</dd>
    <dt><a name="EchoCmd"><tt>EchoCmd</tt></a></dt>
    <dd> Same as <a href="#Echo"><tt>Echo</tt></a> but without the leading @.
    </dd>
    <dt><a name="includedir"><tt>includedir</tt></a></dt>
    <dd>The directory into which include files will ultimately be installed. 
    This value is derived from the <tt>--prefix</tt> option given to
    <tt>configure</tt>.</dd>
    <dt><a name="libdir"><tt>libdir</tt></a></dt><dd></dd>
    <dd>The directory into which native libraries will ultimately be installed. 
    This value is derived from the <tt>--prefix</tt> option given to
    <tt>configure</tt>.</dd>
    <dt><a name="LibDir"><tt>LibDir</tt></a></dt>
    <dd>The configuration specific directory into which libraries are placed
    before installation.</dd>
    <dt><a name="MakefileConfig"><tt>MakefileConfig</tt></a></dt>
    <dd>Full path of the <tt>Makefile.config</tt> file.</dd>
    <dt><a name="MakefileConfigIn"><tt>MakefileConfigIn</tt></a></dt>
    <dd>Full path of the <tt>Makefile.config.in</tt> file.</dd>
    <dt><a name="ObjDir"><tt>ObjDir</tt></a></dt>
    <dd>The configuration and directory specific directory where build objects
    (compilation results) are placed.</dd>
    <dt><a name="SubDirs"><tt>SubDirs</tt></a></dt>
    <dd>The complete list of sub-directories of the current directory as
    specified by other variables.</dd>
    <dt><a name="Sources"><tt>Sources</tt></a></dt>
    <dd>The complete list of source files.</dd>
    <dt><a name="sysconfdir"><tt>sysconfdir</tt></a></dt>
    <dd>The directory into which configuration files will ultimately be
    installed. This value is derived from the <tt>--prefix</tt> option given to
    <tt>configure</tt>.</dd>
    <dt><a name="ToolDir"><tt>ToolDir</tt></a></dt>
    <dd>The configuration specific directory into which executables are placed
    before they are installed.</dd>
    <dt><a name="TopDistDir"><tt>TopDistDir</tt></a></dt>
    <dd>The top most directory into which the distribution files are copied.
    </dd>
    <dt><a name="Verb"><tt>Verb</tt></a></dt>
    <dd>Use this as the first thing on your build script lines to enable or
    disable verbose mode. It expands to either an @ (quiet mode) or nothing
    (verbose mode). </dd>
  </dl>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="intvars">Internal Variables</a></div>
<div class="doc_text">
  <p>Variables listed below are used by the LLVM Makefile System 
  and considered internal. You should not use these variables under any
  circumstances.</p>
  <p><tt>
    Archive
    AR.Flags
    BaseNameSources
    BCCompile.C
    BCCompile.CXX
    BCLinkLib
    C.Flags
    Compile.C
    CompileCommonOpts
    Compile.CXX
    ConfigStatusScript
    ConfigureScript
    CPP.Flags
    CPP.Flags 
    CXX.Flags
    DependFiles
    DestArchiveLib
    DestBitcodeLib
    DestModule
    DestSharedLib
    DestTool
    DistAlways
    DistCheckDir
    DistCheckTop
    DistFiles
    DistName
    DistOther
    DistSources
    DistSubDirs
    DistTarBZ2
    DistTarGZip
    DistZip
    ExtraLibs
    FakeSources
    INCFiles
    InternalTargets
    LD.Flags
    LibName.A
    LibName.BC
    LibName.LA
    LibName.O
    LibTool.Flags
    Link
    LinkModule
    LLVMLibDir
    LLVMLibsOptions
    LLVMLibsPaths
    LLVMToolDir
    LLVMUsedLibs
    LocalTargets
    Module
    ObjectsBC
    ObjectsLO
    ObjectsO
    ObjMakefiles
    ParallelTargets
    PreConditions
    ProjLibsOptions
    ProjLibsPaths
    ProjUsedLibs
    Ranlib
    RecursiveTargets
    SrcMakefiles
    Strip
    StripWarnMsg
    TableGen
    TDFiles
    ToolBuildPath
    TopLevelTargets
    UserTargets
  </tt></p>
</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>

  <a href="mailto:rspencer@x10sys.com">Reid Spencer</a><br>
  <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>
</body>
</html>
