<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Getting Started with LLVM System</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">
  Getting Started with the LLVM System  
</div>

<ul>
  <li><a href="#overview">Overview</a>
  <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
  <li><a href="#requirements">Requirements</a>
    <ol>
      <li><a href="#hardware">Hardware</a>
      <li><a href="#software">Software</a>
    </ol></li>

  <li><a href="#starting">Getting Started with LLVM</a>
    <ol>
      <li><a href="#terminology">Terminology and Notation</a>
      <li><a href="#environment">Setting Up Your Environment</a>
      <li><a href="#unpack">Unpacking the LLVM Archives</a>
      <li><a href="#checkout">Checkout LLVM from CVS</a>
      <li><a href="#installcf">Install the GCC Front End</a>
      <li><a href="#config">Local LLVM Configuration</a>
      <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
      <li><a href="#objfiles">The Location of LLVM Object Files</a>
    </ol></li>

  <li><a href="#layout">Program layout</a>
    <ol>
      <li><a href="#cvsdir"><tt>CVS</tt> directories</a>
      <li><a href="#include"><tt>llvm/include</tt></a>
      <li><a href="#lib"><tt>llvm/lib</tt></a>
      <li><a href="#runtime"><tt>llvm/runtime</tt></a>  
      <li><a href="#test"><tt>llvm/test</tt></a>
      <li><a href="#tools"><tt>llvm/tools</tt></a>  
      <li><a href="#utils"><tt>llvm/utils</tt></a>
    </ol></li>

  <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
  <li><a href="#problems">Common Problems</a>
  <li><a href="#links">Links</a>
</ul>

<p>By: 
  <a href="mailto:gshi1@uiuc.edu">Guochun Shi</a>,
  <a href="mailto:sabre@nondot.org">Chris Lattner</a>,
  <a href="mailto:criswell@uiuc.edu">John Criswell</a>, 
  <a href="http://misha.brukman.net">Misha Brukman</a>, and
  <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>.</p>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="overview"><b>Overview</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Welcome to LLVM! In order to get started, you first need to know some
basic information.</p>

<p>First, LLVM comes in two pieces. The first piece is the LLVM suite. This
contains all of the tools, libraries, and header files needed to use the low
level virtual machine.  It contains an assembler, disassembler, bytecode
analyzer, and bytecode optimizer.  It also contains a test suite that can be
used to test the LLVM tools and the GCC front end.</p>

<p>The second piece is the GCC front end.  This component provides a version of
GCC that compiles C and C++ code into LLVM bytecode.  Currently, the GCC front
end is a modified version of GCC 3.4 (we track the GCC 3.4 development).  Once
compiled into LLVM bytecode, a program can be manipulated with the LLVM tools
from the LLVM suite.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="quickstart"><b>Getting Started Quickly (A Summary)</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Here's the short story for getting up and running quickly with LLVM:</p>

<ol>
  <li>Install the GCC front end:
    <ol>
      <li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt>
      <li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar -xvf -</tt>
      <li><b>Sparc and MacOS X Only:</b><br>
      <tt>cd cfrontend/<i>platform</i><br>
          ./fixheaders</tt>
    </ol></li>

  <li>Get the Source Code
  <ul>
    <li>With the distributed files:
    <ol>
      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
      <li><tt>gunzip --stdout llvm-<i>version</i>.tar.gz | tar -xvf -</tt>
      <li><tt>cd llvm</tt>
    </ol></li>

    <li>With anonymous CVS access:
    <ol>
      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
      <li><tt>cvs -d
          :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login</tt></li>
      <li>Hit the return key when prompted for the password.
      <li><tt>cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm 
          co llvm</tt></li>
      <li><tt>cd llvm</tt></li>
    </ol></li>
  </ul></li>

  <li>Configure the LLVM Build Environment
  <ol>
    <li>Change directory to where you want to store the LLVM object
        files and run <tt>configure</tt> to configure the Makefiles and
        header files for the default platform. Useful options include:
      <ul>
        <li><tt>--with-llvmgccdir=<i>directory</i></tt>
            <p>Specify the full pathname of where the LLVM GCC frontend is
            installed.</p></li>
        <li><tt>--enable-spec2000=<i>directory</i></tt>
            <p>Enable the SPEC2000 benchmarks for testing.  The SPEC2000
            benchmarks should be available in
            <tt><i>directory</i></tt>.</p></li>
      </ul>
  </ol></li>

  <li>Build the LLVM Suite:
  <ol>
      <li>Set your LLVM_LIB_SEARCH_PATH environment variable.
      <li><tt>gmake -k |& tee gnumake.out
      &nbsp;&nbsp;&nbsp;# this is csh or tcsh syntax</tt>
  </ol>

</ol>

<p>Consult the <a href="starting">Getting Started with LLVM</a> section for
detailed information on configuring and compiling LLVM.  See <a
href="#environment">Setting Up Your Environment</a> for tips that simplify
working with the GCC front end and LLVM tools.  Go to <a href="#layout">Program
Layout</a> to learn about the layout of the source code tree.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="requirements"><b>Requirements</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Before you begin to use the LLVM system, review the requirements given below.
This may save you some trouble by knowing ahead of time what hardware and
software you will need.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="hardware"><b>Hardware</b></a>
</div>

<div class="doc_text">

<p>LLVM is known to work on the following platforms:</p>

<ul>

  <li>Linux on x86 (Pentium and above)
  <ul>
    <li>Approximately 1.02 GB of Free Disk Space
    <ul>
      <li>Source code: 45 MB</li>
      <li>Object code: 956 MB</li>
      <li>GCC front end: 40 MB</li>
    </ul></li>
  </ul>
  </li>

  <li>Solaris on SparcV9 (Ultrasparc)
  <ul>
    <li>Approximately 1.75 GB of Free Disk Space
      <ul>
        <li>Source code: 45 MB</li>
        <li>Object code: 1705 MB</li>
        <li>GCC front end: 50 MB</li>
      </ul></li>
  </ul>
  </li>

  <li>FreeBSD on x86 (Pentium and above)
  <ul>
    <li>Approximately 935 MB of Free Disk Space
    <ul>
      <li>Source code: 45 MB</li>
      <li>Object code: 850 MB</li>
      <li>GCC front end: 40 MB</li>
    </ul></li>
  </ul>
  </li>

  <li>MacOS X on PowerPC
  <ul>
    <li>No native code generation
    <li>Approximately 1.25 GB of Free Disk Space
      <ul>
        <li>Source code: 45 MB</li>
        <li>Object code: 1160 MB</li>
        <li>GCC front end: 40 MB</li>
      </ul></li>
  </ul>

  </li>
</ul>

<p>The LLVM suite <i>may</i> compile on other platforms, but it is not
guaranteed to do so.  If compilation is successful, the LLVM utilities should be
able to assemble, disassemble, analyze, and optimize LLVM bytecode.  Code
generation should work as well, although the generated native code may not work
on your platform.</p>

<p>The GCC front end is not very portable at the moment.  If you want to get it
to work on another platform, you can download a copy of the source and try to
compile it on your platform.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="software"><b>Software</b></a>
</div>

<div class="doc_text">

<p>Compiling LLVM requires that you have several software packages
installed:</p>

<ul>
  <li><a href="http://gcc.gnu.org">GCC 3.x with C and C++ language
  support</a></li>

  <li><a href="http://savannah.gnu.org/projects/make">GNU Make</a></li>

  <li><a href="http://www.gnu.org/software/flex">Flex</a></li>

  <li><a href="http://www.gnu.org/software/bison/bison.html">Bison</a></li>
</ul>

<p>There are some additional tools that you may want to have when working with
LLVM:</p>

<ul>
  <li><A href="http://www.gnu.org/software/automake">GNU Automake</A></li>
  <li><A href="http://www.gnu.org/software/autoconf">GNU Autoconf</A></li>
  <li><A href="http://savannah.gnu.org/projects/m4">GNU M4</A>

      <p>If you want to make changes to the configure scripts, you will need GNU
      autoconf (2.57 or higher), and consequently, GNU M4 (version 1.4 or
      higher). You will also need automake. Any old version of
      automake from 1.4p5 on should work; we only use aclocal from that
      package.</p></li>

  <li><A href="http://www.codesourcery.com/qm/qmtest">QMTest 2.0.3</A></li>
  <li><A href="http://www.python.org">Python</A>

      <p>
      These are needed to use the LLVM test suite.  Please note that newer
      versions of QMTest may not work with the LLVM test suite.  QMTest 2.0.3
      can be retrieved from the QMTest CVS repository using the following
      commands:
      <ul>
        <li><tt>cvs -d :pserver:anoncvs@cvs.codesourcery.com:/home/qm/Repository login</tt>
        </li>
        <li>When prompted, use <tt>anoncvs</tt> as the password.
        </li>
        <li><tt>cvs -d :pserver:anoncvs@cvs.codesourcery.com:/home/qm/Repository co -r release-2-0-3 qm</tt>
        </li>
      </ul>
      </p></li>

</ul>

<p>The remainder of this guide is meant to get you up and running with
LLVM and to give you some basic information about the LLVM environment.
A <a href="#starting">complete guide to installation</a> is provided in the
next section.</p>

<p>The later sections of this guide describe the <a
href="#layout">general layout</a> of the the LLVM source tree, a <a
href="#tutorial">simple example</a> using the LLVM tool chain, and <a
href="#links">links</a> to find more information about LLVM or to get
help via e-mail.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="starting"><b>Getting Started with LLVM</b></a>
</div>
<!-- *********************************************************************** -->

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="terminology">Terminology and Notation</a>
</div>

<div class="doc_text">

<p>Throughout this manual, the following names are used to denote paths
specific to the local system and working environment.  <i>These are not
environment variables you need to set but just strings used in the rest
of this document below</i>.  In any of the examples below, simply replace
each of these names with the appropriate pathname on your local system.
All these paths are absolute:</p>

<dl>
    <dt>SRC_ROOT
    <dd>
    This is the top level directory of the LLVM source tree.
    <p>

    <dt>OBJ_ROOT
    <dd>
    This is the top level directory of the LLVM object tree (i.e. the
    tree where object files and compiled programs will be placed.  It
    can be the same as SRC_ROOT).
    <p>

    <dt>LLVMGCCDIR
    <dd>
    This is the where the LLVM GCC Front End is installed.
    <p>
    For the pre-built GCC front end binaries, the LLVMGCCDIR is
    <tt>cfrontend/<i>platform</i>/llvm-gcc</tt>.
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="environment">Setting Up Your Environment</a>
</div>

<div class="doc_text">

<p>
In order to compile and use LLVM, you will need to set some environment
variables.  There are also some shell aliases which you may find useful.
You can set these on the command line, or better yet, set them in your
<tt>.cshrc</tt> or <tt>.profile</tt>.

<dl>
    <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt><i>LLVMGCCDIR</i>/bytecode-libs</tt>
    <dd>
    This environment variable helps the LLVM GCC front end find bytecode
    libraries that it will need for compilation.
    <p>

    <dt>alias llvmgcc <i>LLVMGCCDIR</i><tt>/bin/gcc</tt>
    <dt>alias llvmg++ <i>LLVMGCCDIR</i><tt>/bin/g++</tt>
    <dd>
    This alias allows you to use the LLVM C and C++ front ends without putting
    them in your <tt>PATH</tt> or typing in their complete pathnames.
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="unpack">Unpacking the LLVM Archives</a>
</div>

<div class="doc_text">

<p>
If you have the LLVM distribution, you will need to unpack it before you
can begin to compile it.  LLVM is distributed as a set of two files: the LLVM
suite and the LLVM GCC front end compiled for your platform.  Each
file is a TAR archive that is compressed with the gzip program.
</p>

<p> The files are as follows:
<dl>
    <dt>llvm-1.2.tar.gz
    <dd>This is the source code to the LLVM suite.
    <p>

    <dt>cfrontend-1.2.sparc-sun-solaris2.8.tar.gz
    <dd>This is the binary release of the GCC front end for Solaris/Sparc.
    <p>

    <dt>cfrontend-1.2.i686-redhat-linux-gnu.tar.gz
    <dd>This is the binary release of the GCC front end for Linux/x86.
    <p>

    <dt>cfrontend-1.2.i386-unknown-freebsd5.1.tar.gz
    <dd>This is the binary release of the GCC front end for FreeBSD/x86.
    <p>

    <dt>cfrontend-1.2.powerpc-apple-darwin7.0.0.tar.gz
    <dd>This is the binary release of the GCC front end for MacOS X/PPC.
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="checkout">Checkout LLVM from CVS</a>
</div>

<div class="doc_text">

<p>If you have access to our CVS repository, you can get a fresh copy of
the entire source code.  All you need to do is check it out from CVS as
follows:</p>

<ul>
<li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
  <li><tt>cvs -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login</tt>
  <li>Hit the return key when prompted for the password.
  <li><tt>cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co
      llvm</tt>
</ul>

<p>This will create an '<tt>llvm</tt>' directory in the current
directory and fully populate it with the LLVM source code, Makefiles,
test directories, and local copies of documentation files.</p>

<p>If you want to get a specific release (as opposed to the most recent
revision), you can specify a label.  The following releases have the following
label:</p>

<ul>
  <li>
  Release 1.2: <b>RELEASE_12</b>
  </li>

  <li>
  Release 1.1: <b>RELEASE_11</b>
  </li>

  <li>
  Release 1.0: <b>RELEASE_1</b>
  </li>
</ul>

<p>
If you would like to get the GCC front end source code, you can also get it
from the CVS repository:
<ul>
  <li><tt>cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co
      llvm-gcc</tt>
</ul>
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="installcf">Install the GCC Front End</a>
</div>

<div class="doc_text">

<p>Before configuring and compiling the LLVM suite, you need to extract the LLVM
GCC front end from the binary distribution.  It is used for building the
bytecode libraries later used by the GCC front end for linking programs, and its
location must be specified when the LLVM suite is configured.</p>

<p>To install the GCC front end, do the following:</p>

<ol>
  <li><tt>cd <i>where-you-want-the-front-end-to-live</i></tt></li>
  <li><tt>gunzip --stdout cfrontend-<i>version</i>.<i>platform</i>.tar.gz | tar -xvf
      -</tt></li>
</ol>

<p>If you are using Solaris/Sparc or MacOS X/PPC, you will need to fix the
header files:</p>

<p><tt>cd cfrontend/<i>platform</i><br>
   ./fixheaders</tt></p>

<p>The binary versions of the GCC front end may not suit all of your needs.  For
example, the binary distribution may include an old version of a system header
file, not "fix" a header file that needs to be fixed for GCC, or it may be
linked with libraries not available on your system.</p>

<p>In cases like these, you may want to try <a
href="CFEBuildInstrs.html">building the GCC front end from source.</a> This is
not for the faint of heart, so be forewarned.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="config">Local LLVM Configuration</a>
</div>

<div class="doc_text">

<p>Once checked out from the CVS repository, the LLVM suite source code must be
configured via the <tt>configure</tt> script.  This script sets variables in
<tt>llvm/Makefile.config</tt> and <tt>llvm/include/Config/config.h</tt>.  It
also populates <i>OBJ_ROOT</i> with the Makefiles needed to begin building
LLVM.</p>

<p>The following environment variables are used by the <tt>configure</tt>
script to configure the build system:</p>

<table border=1>
  <tr>
   <th>Variable</th>
   <th>Purpose</th>
  </tr>

  <tr>
    <td>CC</td>
    <td>Tells <tt>configure</tt> which C compiler to use.  By default,
        <tt>configure</tt> will look for the first GCC C compiler in
        <tt>PATH</tt>.  Use this variable to override
        <tt>configure</tt>'s default behavior.</td>
  </tr>

  <tr>
    <td>CXX</td>
    <td>Tells <tt>configure</tt> which C++ compiler to use.  By default,
       <tt>configure</tt> will look for the first GCC C++ compiler in
       <tt>PATH</tt>.  Use this variable to override
       <tt>configure</tt>'s default behavior.</td>
  </tr>
</table>

<p>The following options can be used to set or enable LLVM specific options:</p>

<dl>
  <dt><i>--with-llvmgccdir=LLVMGCCDIR</i>
  <dd>
    Path to the location where the LLVM GCC front end binaries and
    associated libraries were installed.  This must be specified as an
    absolute pathname.
    <p>
  <dt><i>--enable-optimized</i>
  <dd>
    Enables optimized compilation by default (debugging symbols are removed
    and GCC optimization flags are enabled).  The default is to use an
    unoptimized build (also known as a debug build).
    <p>
  <dt><i>--enable-jit</i>
  <dd>
    Compile the Just In Time (JIT) compiler functionality.  This is not
    available
    on all platforms.  The default is dependent on platform, so it is best
    to explicitly enable it if you want it.
    <p>
  <dt><i>--enable-spec2000</i>
  <dt><i>--enable-spec2000=&lt;<tt>directory</tt>&gt;</i>
  <dd>
    Enable the use of SPEC2000 when testing LLVM.  This is disabled by default
    (unless <tt>configure</tt> finds SPEC2000 installed).  By specifying
    <tt>directory</tt>, you can tell configure where to find the SPEC2000
    benchmarks.  If <tt>directory</tt> is left unspecified, <tt>configure</tt>
    uses the default value
    <tt>/home/vadve/shared/benchmarks/speccpu2000/benchspec</tt>.
    <p>
  <dt><i>--enable-spec95</i>
  <dt><i>--enable-spec95=&lt;<tt>directory</tt>&gt;</i>
  <dd>
    Enable the use of SPEC95 when testing LLVM.  It is similar to the
    <i>--enable-spec2000</i> option.
    <p>
  <dt><i>--enable-povray</i>
  <dt><i>--enable-povray=&lt;<tt>directory</tt>&gt;</i>
  <dd>
    Enable the use of Povray as an external test.  Versions of Povray written
    in C should work.  This option is similar to the <i>--enable-spec2000</i>
    option.
</dl>

<p>To configure LLVM, follow these steps:</p>

<ol>
    <li>Change directory into the object root directory:
    <br>
    <tt>cd <i>OBJ_ROOT</i></tt>
    <p>

    <li>Run the <tt>configure</tt> script located in the LLVM source tree:
    <br>
    <tt><i>SRC_ROOT</i>/configure</tt>
    <p>
</ol>

<p>In addition to running <tt>configure</tt>, you must set the
<tt>LLVM_LIB_SEARCH_PATH</tt> environment variable in your startup scripts.
This environment variable is used to locate "system" libraries like
"<tt>-lc</tt>" and "<tt>-lm</tt>" when linking.  This variable should be set to
the absolute path of the <tt>bytecode-libs</tt> subdirectory of the GCC front
end, or <i>LLVMGCCDIR</i>/<tt>bytecode-libs</tt>.  For example, one might set
<tt>LLVM_LIB_SEARCH_PATH</tt> to
<tt>/home/vadve/lattner/local/x86/llvm-gcc/bytecode-libs</tt> for the x86
version of the GCC front end on our research machines.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="compile">Compiling the LLVM Suite Source Code</a>
</div>

<div class="doc_text">

<p>Once you have configured LLVM, you can build it.  There are three types of
builds:</p>

<dl>
    <dt>Debug Builds
    <dd>
    These builds are the default when one types <tt>gmake</tt> (unless the
    <tt>--enable-optimized</tt> option was used during configuration).  The
    build system will compile the tools and libraries with debugging
    information.
    <p>

    <dt>Release (Optimized) Builds
    <dd>
    These builds are enabled with the <tt>--enable-optimized</tt> option to
    <tt>configure</tt> or by specifying <tt>ENABLE_OPTIMIZED=1</tt> on the
    <tt>gmake</tt> command line.  For these builds, the build system will
    compile the tools and libraries with GCC optimizations enabled and strip
    debugging information from the libraries and executables it generates. 
    <p>

    <dt>Profile Builds
    <dd>
    These builds are for use with profiling.  They compile profiling
    information into the code for use with programs like <tt>gprof</tt>.
    Profile builds must be started by specifying <tt>ENABLE_PROFILING=1</tt>
    on the <tt>gmake</tt> command line.
</dl>

<p>Once you have LLVM configured, you can build it by entering the
<i>OBJ_ROOT</i> directory and issuing the following command:</p>

<p><tt>gmake</tt></p>

<p>If you have multiple processors in your machine, you may wish to use some of
the parallel build options provided by GNU Make.  For example, you could use the
command:</p>

<p><tt>gmake -j2</tt></p>

<p>There are several special targets which are useful when working with the LLVM
source code:</p>

<dl>
  <dt><tt>gmake clean</tt>
  <dd>
  Removes all files generated by the build.  This includes object files,
  generated C/C++ files, libraries, and executables.
  <p>

  <dt><tt>gmake distclean</tt>
  <dd>
  Removes everything that <tt>gmake clean</tt> does, but also removes
  files generated by <tt>configure</tt>.  It attempts to return the
  source tree to the original state in which it was shipped.
  <p>

  <dt><tt>gmake install</tt>
  <dd>
  Installs LLVM files into the proper location.  For the most part,
  this does nothing, but it does install bytecode libraries into the
  GCC front end's bytecode library directory.  If you need to update
  your bytecode libraries, this is the target to use once you've built
  them.
  <p>
</dl>

<p>It is also possible to override default values from <tt>configure</tt> by
declaring variables on the command line.  The following are some examples:</p>

<dl>
  <dt><tt>gmake ENABLE_OPTIMIZED=1</tt>
  <dd>
  Perform a Release (Optimized) build.
  <p>

  <dt><tt>gmake ENABLE_PROFILING=1</tt>
  <dd>
  Perform a Profiling build.
  <p>

  <dt><tt>gmake VERBOSE=1</tt>
  <dd>
  Print what <tt>gmake</tt> is doing on standard output.
  <p>
</dl>

<p>Every directory in the LLVM object tree includes a <tt>Makefile</tt> to build
it and any subdirectories that it contains.  Entering any directory inside the
LLVM object tree and typing <tt>gmake</tt> should rebuild anything in or below
that directory that is out of date.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="objfiles">The Location of LLVM Object Files</a>
</div>

<div class="doc_text">

<p>The LLVM build system is capable of sharing a single LLVM source tree among
several LLVM builds.  Hence, it is possible to build LLVM for several different
platforms or configurations using the same source tree.</p>

<p>This is accomplished in the typical autoconf manner:</p>

<ul>
  <li><p>Change directory to where the LLVM object files should live:</p>

      <p><tt>cd <i>OBJ_ROOT</i></tt></p></li>

  <li><p>Run the <tt>configure</tt> script found in the LLVM source
      directory:</p>

      <p><tt><i>SRC_ROOT</i>/configure</tt></p></li>
</ul>

<p>The LLVM build will place files underneath <i>OBJ_ROOT</i> in directories
named after the build type:</p>

<dl>
  <dt>Debug Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/tools/Debug</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/lib/Debug</tt>
  </dl>
  <p>

  <dt>Release Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/tools/Release</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/lib/Release</tt>
  </dl>
  <p>

  <dt>Profile Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/tools/Profile</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/lib/Profile</tt>
  </dl>
</dl>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="layout"><b>Program Layout</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>One useful source of information about the LLVM source base is the LLVM <a
href="http://www.doxygen.org">doxygen</a> documentation available at <tt><a
href="http://llvm.cs.uiuc.edu/doxygen/">http://llvm.cs.uiuc.edu/doxygen/</a></tt>.
The following is a brief introduction to code layout:</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="cvsdir"><tt>CVS</tt> directories</a>
</div>

<div class="doc_text">

<p>Every directory checked out of CVS will contain a <tt>CVS</tt> directory; for
the most part these can just be ignored.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="include"><tt>llvm/include</tt></a>
</div>

<div class="doc_text">

<p>This directory contains public header files exported from the LLVM
library. The three main subdirectories of this directory are:</p>

<ol>
  <li><tt>llvm/include/llvm</tt> - This directory contains all of the LLVM
      specific header files.  This directory also has subdirectories for
      different portions of LLVM: <tt>Analysis</tt>, <tt>CodeGen</tt>,
      <tt>Target</tt>, <tt>Transforms</tt>, etc...</li>

  <li><tt>llvm/include/Support</tt> - This directory contains generic
      support libraries that are independent of LLVM, but are used by LLVM.
      For example, some C++ STL utilities and a Command Line option processing
      library store their header files here.</li>

  <li><tt>llvm/include/Config</tt> - This directory contains header files
      configured by the <tt>configure</tt> script.  They wrap "standard" UNIX
      and C header files.  Source code can include these header files which
      automatically take care of the conditional #includes that the
      <tt>configure</tt> script generates.</li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="lib"><tt>llvm/lib</tt></a>
</div>

<div class="doc_text">

<p>This directory contains most of the source files of the LLVM system. In LLVM,
almost all code exists in libraries, making it very easy to share code among the
different <a href="#tools">tools</a>.</p>

<dl>
  <dt><tt>llvm/lib/VMCore/</tt><dd> This directory holds the core LLVM
  source files that implement core classes like Instruction and BasicBlock.

  <dt><tt>llvm/lib/AsmParser/</tt><dd> This directory holds the source code
  for the LLVM assembly language parser library.

  <dt><tt>llvm/lib/ByteCode/</tt><dd> This directory holds code for reading
  and write LLVM bytecode.

  <dt><tt>llvm/lib/CWriter/</tt><dd> This directory implements the LLVM to C
  converter.

  <dt><tt>llvm/lib/Analysis/</tt><dd> This directory contains a variety of
  different program analyses, such as Dominator Information, Call Graphs,
  Induction Variables, Interval Identification, Natural Loop Identification,
  etc...

  <dt><tt>llvm/lib/Transforms/</tt><dd> This directory contains the source
  code for the LLVM to LLVM program transformations, such as Aggressive Dead
  Code Elimination, Sparse Conditional Constant Propagation, Inlining, Loop
  Invariant Code Motion, Dead Global Elimination, and many others...

  <dt><tt>llvm/lib/Target/</tt><dd> This directory contains files that
  describe various target architectures for code generation.  For example,
  the llvm/lib/Target/SparcV9 directory holds the Sparc machine
  description.<br>
    
  <dt><tt>llvm/lib/CodeGen/</tt><dd> This directory contains the major parts
  of the code generator: Instruction Selector, Instruction Scheduling, and
  Register Allocation.

  <dt><tt>llvm/lib/Support/</tt><dd> This directory contains the source code
  that corresponds to the header files located in
  <tt>llvm/include/Support/</tt>.
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="runtime"><tt>llvm/runtime</tt></a>
</div>

<div class="doc_text">

<p>This directory contains libraries which are compiled into LLVM bytecode and
used when linking programs with the GCC front end.  Most of these libraries are
skeleton versions of real libraries; for example, libc is a stripped down
version of glibc.</p>

<p>Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
end to compile.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="test"><tt>llvm/test</tt></a>
</div>

<div class="doc_text">

<p>This directory contains regression tests and source code that is used to test
the LLVM infrastructure.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="tools"><tt>llvm/tools</tt></a>
</div>

<div class="doc_text">

<p>The <b>tools</b> directory contains the executables built out of the
libraries above, which form the main part of the user interface.  You can
always get help for a tool by typing <tt>tool_name --help</tt>.  The
following is a brief introduction to the most important tools:</p>

<dl>
  <dt><tt><b>analyze</b></tt> <dd><tt>analyze</tt> is used to run a specific
  analysis on an input LLVM bytecode file and print out the results.  It is
  primarily useful for debugging analyses, or familiarizing yourself with
  what an analysis does.<p>

  <dt><tt><b>bugpoint</b></tt> <dd><tt>bugpoint</tt> is used to debug
  optimization passes or code generation backends by narrowing down the
  given test case to the minimum number of passes and/or instructions that
  still cause a problem, whether it is a crash or miscompilation. See <a
  href="HowToSubmitABug.html">HowToSubmitABug.html</a> for more information
  on using <tt>bugpoint</tt>.<p>

  <dt><tt><b>llvm-ar</b></tt> <dd>The archiver produces an archive containing
  the given LLVM bytecode files, optionally with an index for faster
  lookup.<p>
  
  <dt><tt><b>llvm-as</b></tt> <dd>The assembler transforms the human readable
  LLVM assembly to LLVM bytecode.<p>

  <dt><tt><b>llvm-dis</b></tt><dd>The disassembler transforms the LLVM
  bytecode to human readable LLVM assembly.<p>

  <dt><tt><b>llvm-link</b></tt><dd> <tt>llvm-link</tt>, not surprisingly,
  links multiple LLVM modules into a single program.<p>
  
  <dt><tt><b>lli</b></tt><dd> <tt>lli</tt> is the LLVM interpreter, which
  can directly execute LLVM bytecode (although very slowly...). In addition
  to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by
  specifying <tt>-trace</tt> on the command line). Finally, for
  architectures that support it (currently only x86 and Sparc), by default,
  <tt>lli</tt> will function as a Just-In-Time compiler (if the
  functionality was compiled in), and will execute the code <i>much</i>
  faster than the interpreter.<p>

  <dt><tt><b>llc</b></tt><dd> <tt>llc</tt> is the LLVM backend compiler, which
  translates LLVM bytecode to a SPARC or x86 assembly file, or to C code (with
  the -march=c option).<p>

  <dt><tt><b>llvmgcc</b></tt><dd> <tt>llvmgcc</tt> is a GCC-based C frontend
  that has been retargeted to emit LLVM code as the machine code output.  It
  works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
  -o</tt> options that are typically used.  The source code for the
  <tt>llvmgcc</tt> tool is currently not included in the LLVM CVS tree
  because it is quite large and not very interesting.<p>

  <blockquote>
    <dl>
    <dt><tt><b>gccas</b></tt> <dd>This tool is invoked by the
    <tt>llvmgcc</tt> frontend as the "assembler" part of the compiler.  This
    tool actually assembles LLVM assembly to LLVM bytecode,
    performs a variety of optimizations, and outputs LLVM bytecode.  Thus
    when you invoke <tt>llvmgcc -c x.c -o x.o</tt>, you are causing
    <tt>gccas</tt> to be run, which writes the <tt>x.o</tt> file (which is
    an LLVM bytecode file that can be disassembled or manipulated just like
    any other bytecode file).  The command line interface to <tt>gccas</tt>
    is designed to be as close as possible to the <b>system</b>
    `<tt>as</tt>' utility so that the gcc frontend itself did not have to be
    modified to interface to a "weird" assembler.<p>

    <dt><tt><b>gccld</b></tt> <dd><tt>gccld</tt> links together several LLVM
    bytecode files into one bytecode file and does some optimization.  It is
    the linker invoked by the GCC frontend when multiple .o files need to be
    linked together.  Like <tt>gccas</tt>, the command line interface of
    <tt>gccld</tt> is designed to match the system linker, to aid
    interfacing with the GCC frontend.</dl><p>
  </blockquote>

  <dt><tt><b>opt</b></tt><dd> <tt>opt</tt> reads LLVM bytecode, applies a
  series of LLVM to LLVM transformations (which are specified on the command
  line), and then outputs the resultant bytecode.  The '<tt>opt --help</tt>'
  command is a good way to get a list of the program transformations
  available in LLVM.

</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="utils"><tt>llvm/utils</tt></a>
</div>

<div class="doc_text">

<p>This directory contains utilities for working with LLVM source code, and some
of the utilities are actually required as part of the build process because they
are code generators for parts of LLVM infrastructure.</p>

<dl>
  <dt><tt><b>Burg/</b></tt> <dd><tt>Burg</tt> is an instruction selector
  generator -- it builds trees on which it then performs pattern-matching to
  select instructions according to the patterns the user has specified. Burg
  is currently used in the Sparc V9 backend.<p>

  <dt><tt><b>codegen-diff</b></tt> <dd><tt>codegen-diff</tt> is a script
  that finds differences between code that LLC generates and code that LLI
  generates. This is a useful tool if you are debugging one of them,
  assuming that the other generates correct output. For the full user
  manual, run <tt>`perldoc codegen-diff'</tt>.<p>

  <dt><tt><b>cvsupdate</b></tt> <dd><tt>cvsupdate</tt> is a script that will
  update your CVS tree, but produce a much cleaner and more organized output
  than simply running <tt>`cvs -z3 up -dP'</tt> will. For example, it will group
  together all the new and updated files and modified files in separate
  sections, so you can see at a glance what has changed. If you are at the
  top of your LLVM CVS tree, running <tt>utils/cvsupdate</tt> is the
  preferred way of updating the tree.<p>

  <dt><tt><b>emacs/</b></tt> <dd>The <tt>emacs</tt> directory contains
  syntax-highlighting files which will work with Emacs and XEmacs editors,
  providing syntax highlighting support for LLVM assembly files and TableGen
  description files. For information on how to use the syntax files, consult
  the <tt>README</tt> file in that directory.<p>

  <dt><tt><b>getsrcs.sh</b></tt> <dd>The <tt>getsrcs.sh</tt> script finds
  and outputs all non-generated source files, which is useful if one wishes
  to do a lot of development across directories and does not want to
  individually find each file. One way to use it is to run, for example:
  <tt>xemacs `utils/getsources.sh`</tt> from the top of your LLVM source
  tree.<p>
  
  <dt><tt><b>makellvm</b></tt> <dd>The <tt>makellvm</tt> script compiles all
  files in the current directory and then compiles and links the tool that
  is the first argument. For example, assuming you are in the directory
  <tt>llvm/lib/Target/Sparc</tt>, if <tt>makellvm</tt> is in your path,
  simply running <tt>makellvm llc</tt> will make a build of the current
  directory, switch to directory <tt>llvm/tools/llc</tt> and build it,
  causing a re-linking of LLC.<p>

  <dt><tt><b>NightlyTest.pl</b></tt> and
  <tt><b>NightlyTestTemplate.html</b></tt> <dd>These files are used in a
  cron script to generate nightly status reports of the functionality of
  tools, and the results can be seen by following the appropriate link on
  the <a href="http://llvm.cs.uiuc.edu/">LLVM homepage</a>.<p>

  <dt><tt><b>TableGen/</b></tt> <dd>The <tt>TableGen</tt> directory contains
  the tool used to generate register descriptions, instruction set
  descriptions, and even assemblers from common TableGen description
  files.<p>

  <dt><tt><b>vim/</b></tt> <dd>The <tt>vim</tt> directory contains
  syntax-highlighting files which will work with the VIM editor, providing
  syntax highlighting support for LLVM assembly files and TableGen
  description files. For information on how to use the syntax files, consult
  the <tt>README</tt> file in that directory.<p>

</dl>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<ol>
  <li>First, create a simple C file, name it 'hello.c':
       <pre>
   #include &lt;stdio.h&gt;
   int main() {
     printf("hello world\n");
     return 0;
   }
       </pre></li>

  <li><p>Next, compile the C file into a LLVM bytecode file:</p>
      <p><tt>% llvmgcc hello.c -o hello</tt></p>

      <p>This will create two result files: <tt>hello</tt> and
      <tt>hello.bc</tt>. The <tt>hello.bc</tt> is the LLVM bytecode that
      corresponds the the compiled program and the library facilities that it
      required.  <tt>hello</tt> is a simple shell script that runs the bytecode
      file with <tt>lli</tt>, making the result directly executable.</p></li>

  <li><p>Run the program. To make sure the program ran, execute one of the
      following commands:</p>
      
      <p><tt>% ./hello</tt></p>
 
      <p>or</p>

      <p><tt>% lli hello.bc</tt></p></li>

  <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
      code:</p>

      <p><tt>% llvm-dis &lt; hello.bc | less</tt><p></li>

  <li><p>Compile the program to native Sparc assembly using the code
      generator (assuming you are currently on a Sparc system):</p>

      <p><tt>% llc hello.bc -o hello.s</tt></p>

  <li><p>Assemble the native sparc assemble file into a program:</p>

      <p><tt>% /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.sparc</tt></p>

  <li><p>Execute the native sparc program:</p>

      <p><tt>% ./hello.sparc</tt></p></li>

</ol>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="problems">Common Problems</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>If you are having problems building or using LLVM, or if you have any other
general questions about LLVM, please consult the <a href="FAQ.html">Frequently
Asked Questions</a> page.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="links">Links</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This document is just an <b>introduction</b> to how to use LLVM to do
some simple things... there are many more interesting and complicated things
that you can do that aren't documented here (but we'll gladly accept a patch
if you want to write something up!).  For more information about LLVM, check
out:</p>

<ul>
  <li><a href="http://llvm.cs.uiuc.edu/">LLVM homepage</a></li>
  <li><a href="http://llvm.cs.uiuc.edu/doxygen/">LLVM doxygen tree</a></li>
  <li><a href="http://llvm.cs.uiuc.edu/docs/Projects.html">Starting a Project
  that Uses LLVM</a></li>
</ul>

</div>

<!-- *********************************************************************** -->

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

  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
