<!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 debug 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="BUILD_EXAMPLES"><tt>BUILD_EXAMPLES</tt></a></dt>
    <dd>If set to 1, build examples in <tt>examples</tt> and (if building
    Clang) <tt>tools/clang/examples</tt> directories.</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="LLVMCC"><tt>LLVMCC</tt></a></dt>
    <dd>Specifies the path to the LLVM capable compiler.</dd>
    <dt><a name="LLVMCXX"><tt>LLVMCXX</tt></a></dt>
    <dd>Specifies the path to the LLVM C++ capable compiler.</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>
