<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Getting Started with LLVM System</title>
  </head>

  <body bgcolor=white>
    <center><h1>Getting Started with the LLVM System<br><font size=3>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>
    </font></h1></center>

    <!--=====================================================================-->
    <h2><a name="Contents">Contents</a></h2>
    <!--=====================================================================-->

    <ul>
      <li><a href="#overview">Overview</a>
      <ol>
          <li><a href="#requirements">Requirements</a>
          <ol>
              <li><a href="#hardware">Hardware</a>
              <li><a href="#software">Software</a>
          </ol>
      </ol>
      <li><a href="#starting">Getting started with LLVM</a>
        <ol>
          <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
          <li><a href="#terminology">Terminology and Notation</tt></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 C Front End</a>
          <li><a href="#config">Local LLVM Configuration</tt></a>
          <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
          <li><a href="#objfiles">The Location of LLVM Object Files</tt></a>
        </ol>
      <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="#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><a href="#cfront">Compiling the LLVM C Front End</a>
      <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>


    <!--=====================================================================-->
    <center>
    <h2><a name="overview"><b>Overview</b></a></h2>
    </center>
    <!--=====================================================================-->

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

    <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 also contains a test suite that can be used
    to test the LLVM tools and the C front end.
    <p>
    The second piece is the C front end.  This component provides a version
    of GCC that compiles C code into LLVM bytecode.  Currently, the C 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.

    <!--=====================================================================-->
    <h3><a name="requirements"><b>Requirements</b></a></h3>
    <!--=====================================================================-->

    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.

    <!--=====================================================================-->
    <h4><a name="hardware"><b>Hardware</b></a></h4>
    <!--=====================================================================-->
    LLVM is known to work on the following platforms:
    <ul>
        <li> Linux on x86
        <ul>
            <li> Approximately 760 MB of Free Disk Space
            <ul>
                <li>Source code: 30 MB
                <li>Object code: 670 MB
                <li>C front end: 60 MB
            </ul>
        </ul>

        <p>

        <li> Solaris on SparcV9 (Ultrasparc)
        <ul>
            <li> Approximately 1.24 GB of Free Disk Space
            <ul>
                <li>Source code: 30 MB
                <li>Object code: 1000 MB
                <li>C front end: 210 MB
            </ul>
        </ul>
    </ul>

    <p>
    If you want to compile your own version of the C front end, you will need
    additional disk space:
    </p>

    <ul>
        <li>Linux on x86
        <ul>
            <li> Approximately 249 MB of Free Disk Space
            <ul>
                <li>Source code: 146 MB
                <li>Object code: 82 MB
                <li>Installed binaries: 21 MB
            </ul>
        </ul>

        <p>

        <li>Solaris on Sparc
        <ul>
            <li> Approximately 264 MB of Free Disk Space
            <ul>
                <li>Source code: 146 MB
                <li>Object code: 93 MB
                <li>Installed binaries: 25 MB
            </ul>
        </ul>
    </ul>

    <p>
    LLVM <i>may</i> compile on other platforms.  The LLVM utilities should work
    on other platforms, so it should be possible to generate and produce LLVM
    bytecode on unsupported platforms (although bytecode generated on one
    platform may not work on another platform).  However, the code generators
    and Just-In-Time (JIT) compilers only generate SparcV9 or x86 machine code.
    </p>

    <!--=====================================================================-->
    <h4><a name="software"><b>Software</b></a></h4>
    <!--=====================================================================-->
    <p>

    Unpacking the distribution requires the following tools:
    <dl compact>
        <dt>GNU Zip (gzip)
        <dt>GNU Tar
        <dd>
        These tools are needed to uncompress and unarchive the software.
        Regular Solaris <tt>tar</tt> may work for unpacking the TAR archive but
        is untested.
    </dl>

    Compiling LLVM requires that you have several different software packages
    installed:

    <dl compact>
        <dt> GCC
        <dd>
        The GNU Compiler Collection must be installed with C and C++ language
        support.  GCC 3.2.x works, and GCC 3.x is generally supported.

        <p>
        Note that we currently do not support any other C++ compiler.
        </p>

        <dt> GNU Make
        <dd>
        The LLVM build system relies upon GNU Make extensions.  Therefore, you
        will need GNU Make (sometimes known as gmake) to build LLVM.
        <p>

        <dt> Flex and Bison
        <dd>
        The LLVM source code is built using flex and bison.  You will not be
        able to configure and compile LLVM without them.
        <p>

        <dt> GNU M4
        <dd>
        If you are installing Bison on your machine for the first time, you
        will need GNU M4 (version 1.4 or higher).
    </dl>

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

    <ul>
        <li>GNU Autoconf
        <li>GNU M4
        <p>
        If you want to make changes to the configure scripts, you will need
        GNU autoconf (2.53 or higher), and consequently, GNU M4 (version 1.4
        or higher).
        </p>
    </ul>


    <p>The <a href="starting">next section</a> of this guide is meant to get
    you up and running with LLVM and to give you some basic information about
    the LLVM environment.  The <a href"#quickstart">first subsection</a> gives
    a short summary for those who are already familiar with the system and
    want to get started as quickly as possible.

    <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.

    <!--=====================================================================-->
    <center>
    <h2><a name="starting"><b>Getting Started with LLVM</b></a></h2>
    </center>
    <!--=====================================================================-->

    <!--=====================================================================-->
    <h3><a name="quickstart"><b>Getting Started Quickly (A Summary)</b></a></h3>
    <!--=====================================================================-->

    Here's the short story for getting up and running quickly with LLVM:
    <ol>
        <li>Install the C 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>
        </ol>

        <p>

        <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.tar.gz | tar -xvf -</tt>
                <li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar
                -xvf -</tt>
                <li><tt>cd llvm</tt>
            </ol>

            <p>

            <li>With anonymous CVS access:
            <ol>
                <li>Find the path to the CVS repository containing LLVM (we'll
                call this <i>CVSROOTDIR</i>).
                <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
                <li><tt>cvs -d <i>CVSROOTDIR</i> checkout llvm</tt>
                <li><tt>cd llvm</tt>
            </ol>
        </ul>
        </ul>

        <p>

        <li>Configure the LLVM Build Environment
        <ol>
            <li>Run <tt>configure</tt> to configure the Makefiles and header
            files for the default platform.
            Useful options include:
                <ul>
                    <li><tt>--with-objroot=<i>directory</i></tt>
                    <br>
                    Specify where object files should be placed during the
                    build.

                    <li><tt>--with-llvmgccdir=<i>directory</i></tt>
                    <br>
                    Specify where the LLVM C frontend is going to be installed.
                </ul>
        </ol>

        <p>

        <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>

        <p>

    </ol>

    <p>See <a href="#environment">Setting Up Your Environment</a> on tips to
    simplify working with the LLVM front-end and compiled tools.  See the
    other sub-sections below for other useful details in working with LLVM,
    or go straight to <a href="#layout">Program Layout</a> to learn about the
    layout of the source code tree.  For information on building the C front
    end yourself, see <a href="#cfront">Compiling the LLVM C Front End</a> for
    information.

    <!------------------------------------------------------------------------->
    <h3><a name="terminology">Terminology and Notation</a></h3>
    <!------------------------------------------------------------------------->

    <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 compact>
        <dt>CVSROOTDIR
        <dd>
        This is the path for the CVS repository containing the LLVM source
        code.  Ask the person responsible for your local LLVM installation to
        give you this path.
        <p>

        <dt>OBJ_ROOT
        <dd>
        This is the top level directory for where the LLVM suite object files
        will be placed during the build.
        <p>

        <dt>LLVMGCCDIR
        <dd>
        This is the pathname to the location where the LLVM C Front End will
        be installed.  Note that the C front end does not need to be installed
        during the LLVM suite build; you will just need to know where it will
        go for configuring the build system and running the test suite later.
        <p>
	For the pre-built C front end binaries, the LLVMGCCDIR is
        <tt>cfrontend/<i>platform</i>/llvm-gcc</tt>.

        <dt>GCCSRC
        <dd>
        This is the pathname of the directory where the LLVM C front end source
        code can be found.
        <p>

        <dt>GCCOBJ
        <dd>
        This is the pathname of the directory where the LLVM C front end object
        code will be placed during the build.  It can be safely removed once
        the build is complete.
    </dl>

    <!------------------------------------------------------------------------->
    <h3><a name="environment">Setting Up Your Environment</a></h3>
    <!------------------------------------------------------------------------->

    <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 compact>
        <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt><i>LLVMGCCDIR</i>/llvm-gcc/bytecode-libs</tt>
        <dd>
        This environment variable helps the LLVM C front end find bytecode
        libraries that it will need for compilation.
        <p>

        <dt>alias llvmgcc <i>LLVMGCCDIR</i><tt>/bin/llvm-gcc</tt>
        <dd>
        This alias allows you to use the LLVM C front end without putting it in
        your <tt>PATH</tt> or typing in its complete pathname.
    </dl>

    <!------------------------------------------------------------------------->
    <h3><a name="unpack">Unpacking the LLVM Archives</a></h3>
    <!------------------------------------------------------------------------->

    <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 four files.  Each
    file is a TAR archive that is compressed with the gzip program.
    </p>

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

        <dt>cfrontend.sparc.tar.gz
        <dd>This is the binary release of the C front end for Solaris/Sparc.
        <p>

        <dt>cfrontend.x86.tar.gz
        <dd>This is the binary release of the C front end for Linux/x86.
        <p>

        <dt>cfrontend-src.tar.gz
        <dd>This is the source code release of the C front end.
        <p>
    </dl>

    <!------------------------------------------------------------------------->
    <h3><a name="checkout">Checkout LLVM from CVS</a></h3>
    <!------------------------------------------------------------------------->

    <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:
    <ul>
    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
    <li><tt>cvs -d <i>CVSROOTDIR</i> checkout llvm</tt></p>
    </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>
    Note that the C front end is not included in the CVS repository.  You
    should have either downloaded the source, or better yet, downloaded the
    binary distribution for your platform.
    </p>

    <!------------------------------------------------------------------------->
    <h3><a name="installcf">Install the C Front End</a></h3>
    <!------------------------------------------------------------------------->

    <p>
    Before configuring and compiling the LLVM suite, it is best to extract the
    LLVM C front end.  While not used in building, the C front end is used by
    the LLVM test suite, and its location must be given to the
    <tt>configure</tt> script before the LLVM suite can be built.
    </p>

    <p>
    To install the C front end, do the following:
    <ol>
        <li><tt>cd <i>where-you-want-the-front-end-to-live</i></tt>
        <li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar -xvf
        -</tt>
    </ol>

    <!------------------------------------------------------------------------->
    <h3><a name="config">Local LLVM Configuration</a></h3>
    <!------------------------------------------------------------------------->

    <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>.

    <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 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 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 compact>
    <dt><i>--with-objroot=OBJ_ROOT</i>
    <dd>
        Path to the directory where
		object files, libraries, and executables should be placed.
        If this is set to <tt>.</tt>, then the object files will be placed
        within the source code tree.  If left unspecified, the default value is
        the following:
        <ul>
                <li>
                If the USER environment variable is specified and the directory
                <tt>/localhome/$USER</tt> exists, then the default value is
                <tt>/localhome/$USER</tt>.

                <li>
                Otherwise, the default value is <tt>.</tt>.
        </ul>
		(See the Section on <a href=#objfiles>
		The Location of LLVM Object Files</a>
		for more information.)
        <p>
    <dt><i>--with-llvmgccdir=LLVMGCCDIR</i>
    <dd>
        Path to the location where the LLVM C front end binaries and
        associated libraries will be installed.
        <p>
    <dt><i>--enable-optimized</i>
    <dd>
        Enables optimized compilation (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) 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.
    </dl>

    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 for the bytecode-libs subdirectory of the C front-end
    install, or LLVMGCCDIR/llvm-gcc/bytecode-libs.  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 C front-end on our research machines.<p>

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

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

    <dl compact>
        <dt>Debug Builds
        <dd>
        These builds are the default.  They 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>.  They compile the tools and libraries with GCC
        optimizer flags on 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 setting variables on the
        <tt>gmake</tt> command line.
    </dl>

    Once you have LLVM configured, you can build it by entering the top level
    <tt>llvm</tt> directory and issuing the following command:
    <p>
    <tt>gmake</tt>

    <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>
    There are several other targets which are useful when working with the LLVM
    source code:

    <dl compact>
        <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>
    </dl>

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

    <dl compact>
        <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>

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

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

    <p>The LLVM build system sends most output files generated during the build
    into the directory defined by the variable <i>OBJ_ROOT</i> in
    <tt>llvm/Makefile.config</tt>, which is set by the <i>--with-objroot</i>
    option in <tt>configure</tt>.  This can be either just your normal LLVM
    source tree or some other directory writable by you.  You may wish to put
    object files on a different filesystem either to keep them from being backed
    up or to speed up local builds.

    <p>
    If <i>OBJ_ROOT</i> is specified, then the build system will create a
    directory tree underneath it that resembles the source code's pathname
    relative to your home directory (unless <i>OBJ_ROOT</i> is set to
    <tt>.</tt>, in which case object files are placed within the LLVM source
    tree).
    </p>

    <p>
    Note that
    <i>--with-objroot</i>=<tt>.</tt>
    and
    <i>--with-objroot</i>=<tt>`pwd`</tt>
    are not the same thing.  The former will simply place object files within
    the source tree, while the latter will set the location of object files
    using the source tree's relative path from the home directory.
    </p>

    <p>
    For example, suppose that <i>OBJ_ROOT</i> is set to <tt>/tmp</tt> and the
    LLVM suite source code is located in <tt>/usr/home/joe/src/llvm</tt>, where
    <tt>/usr/home/joe</tt> is the home directory of a user named Joe.  Then,
    the object files will be placed in <tt>/tmp/src/llvm</tt>.
    </p>

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

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

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

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

    <!--=====================================================================-->
    <center>
    <h2><a name="layout"><b>Program Layout</b></a></h2>
    </center>
    <!--=====================================================================-->

    <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>


    <!------------------------------------------------------------------------->
    <h3><a name="cvsdir"><tt>CVS</tt> directories</a></h3>
    <!------------------------------------------------------------------------->

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


    <!------------------------------------------------------------------------->
    <h3><a name="include"><tt>llvm/include</tt></a></h3>
    <!------------------------------------------------------------------------->

    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>Reoptimizer</tt>, <tt>Target</tt>, <tt>Transforms</tt>, etc...

       <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.

       <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 configure
       script generates.
    </ol>

    <!------------------------------------------------------------------------->
    <h3><a name="lib"><tt>llvm/lib</tt></a></h3>
    <!------------------------------------------------------------------------->

    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 compact>
      <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
      Invarient 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/Sparc 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/Reoptimizer/</tt><dd> This directory holds code related
      to the runtime reoptimizer framework that is currently under development.
	      
      <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>

    <!------------------------------------------------------------------------->
    <h3><a name="test"><tt>llvm/test</tt></a></h3>
    <!------------------------------------------------------------------------->

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

    <!------------------------------------------------------------------------->
    <h3><a name="tools"><tt>llvm/tools</tt></a></h3>
    <!------------------------------------------------------------------------->

    <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 compact>
      <dt><tt><b>as</b></tt><dd>The assembler transforms the human readable
      LLVM assembly to LLVM bytecode.<p>

      <dt><tt><b>dis</b></tt><dd>The disassembler transforms the LLVM bytecode
      to human readable LLVM assembly.  Additionally it can convert LLVM
      bytecode to C, which is enabled with the <tt>-c</tt> option.<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> is also has debugger and tracing
      modes (entered by specifying <tt>-debug</tt> or <tt>-trace</tt> on the
      command line, respectively). 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.<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>

      <ol>
        <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.<p>
      </ol>

      <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.<p>

 
      <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>

    </dl>

    <!------------------------------------------------------------------------->
    <h3><a name="utils"><tt>llvm/utils</tt></a></h3>
    <!------------------------------------------------------------------------->

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

    <dl compact>
      <td><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 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>

    <!--=====================================================================-->
    <h2><center><a name="cfront">Compiling the LLVM C Front End</center></h2>
    <!--=====================================================================-->

    <p>
    <b>
    This step is optional if you have the C front end binary distribution for
    your platform.
    </b>
    </p>

    Now that you have the LLVM suite built, you can build the C front end.  For
    those of you that have built GCC before, the process is very similar.
    <p>
    Be forewarned, though: the build system for the C front end is not as
    polished as the rest of the LLVM code, so there will be many warnings and
    errors that you will need to ignore for now:

    <ol>
        <li>Ensure that <tt><i>OBJ_ROOT</i>/llvm/tools/Debug</tt> is at the
        <i>end</i> of your <tt>PATH</tt> environment variable.  The front end
        build needs to know where to find the LLVM tools, but you want to
        ensure that these tools are not found before the system assembler and
        linker that you normally use for compilation.

        <li><tt>cd <i>GCCOBJ</i></tt>

        <li>Configure the source code:
        <ul>
            <li>On Linux/x86, use
            <ul>
                <li><tt><i>GCCSRC</i>/configure --prefix=<i>LLVMGCCDIR</i>
                --enable-languages=c</tt>
            </ul>

            <li>On Solaris/Sparc, use
            <ul>
                <li><tt><i>GCCSRC</i>/configure --prefix=<i>LLVMGCCDIR</i>
                 --enable-languages=c --target=sparcv9-sun-solaris2</tt>
            </ul>
        </ul>

        <li><tt>gmake</tt>

        <li>The build will eventually fail.  Don't worry; chances are good that
        everything that needed to build is built.

        <li><tt>gmake -k install</tt>
    </ol>

    <p>
    Once this is done, you should have a built front end compiler in
    <tt><i>LLVMGCCDIR</i></tt>.
    </p>

    <!--=====================================================================-->
    <h2>
    <center><a name="tutorial">An Example Using the LLVM Tool Chain</center>
    </h2>
    <!--=====================================================================-->

    <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>Next, compile the C file into a LLVM bytecode file:<p>

      <tt>% llvmgcc hello.c -o hello</tt><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>Run the program. To make sure the program ran, execute one of the
    following commands:<p>
      
      <tt>% ./hello</tt><p>
 
      or<p>

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

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

      <tt>% dis < hello.bc | less</tt><p>

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

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

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

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

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

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

    </ol>


    <!--=====================================================================-->
    <h2>
    <center><a name="problems">Common Problems</a></center>
    </h2>
    <!--=====================================================================-->

    Below are common problems and their remedies:

    <dl compact>
        <dt><b>When I run configure, it finds the wrong C compiler.</b>
        <dd>
        The <tt>configure</tt> script attempts to locate first <tt>gcc</tt> and
        then <tt>cc</tt>, unless it finds compiler paths set in <tt>CC</tt> and
        <tt>CXX</tt> for the C and C++ compiler, respectively.

        If <tt>configure</tt> finds the wrong compiler, either adjust your
        <tt>PATH</tt> environment variable or set <tt>CC</tt> and <tt>CXX</tt>
        explicitly.
        <p>

        <dt><b>I compile the code, and I get some error about /localhome</b>.
        <dd>
        There are several possible causes for this.  The first is that you
        didn't set a pathname properly when using <tt>configure</tt>, and it
        defaulted to a pathname that we use on our research machines.
        <p>
        Another possibility is that we hardcoded a path in our Makefiles.  If
        you see this, please email the LLVM bug mailing list with the name of
        the offending Makefile and a description of what is wrong with it.

        <dt><b>The <tt>configure</tt> script finds the right C compiler, but it
        uses the LLVM linker from a previous build.  What do I do?</b>
        <dd>
        The <tt>configure</tt> script uses the <tt>PATH</tt> to find
        executables, so if it's grabbing the wrong linker/assembler/etc, there
        are two ways to fix it:
        <ol>
            <li>Adjust your <tt>PATH</tt> environment variable so that the
            correct program appears first in the <tt>PATH</tt>.  This may work,
            but may not be convenient when you want them <i>first</i> in your
            path for other work.
            <p>

            <li>Run <tt>configure</tt> with an alternative <tt>PATH</tt> that
            is correct.  In a Borne compatible shell, the syntax would be:
            <p>
            <tt>PATH=<the path without the bad program> ./configure ...</tt>
            <p>
            This is still somewhat inconvenient, but it allows
            <tt>configure</tt> to do its work without having to adjust your
            <tt>PATH</tt> permanently.
        </ol>

        <dt><b>I've upgraded to a new version of LLVM, and I get strange build
        errors.</b>
        <dd>
        Sometimes changes to the LLVM source code alters how the build system
        works.  Changes in libtool, autoconf, or header file dependencies are
        especially prone to this sort of problem.
        <p>
        The best thing to try is to remove the old files and re-build.  In most
        cases, this takes care of the problem.  To do this, just type <tt>make
        clean</tt> and then <tt>make</tt> in the directory that fails to build.
        <p>

    </dl>

    <!--=====================================================================-->
    <h2><center><a name="links">Links</a></center></h2>
    <!--=====================================================================-->

    <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>

    <hr>

    If you have any questions or run into any snags (or you have any
    additions...), please send an email to
    <a href="mailto:sabre@nondot.org">Chris Lattner</a>.</p>

	    <!-- Created: Mon Jul  1 02:29:02 CDT 2002 -->
	    <!-- hhmts start -->
Last modified: Mon Aug 11 13:52:22 CDT 2003
<!-- hhmts end -->
  </body>
</html>
