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

<h1>Creating an LLVM Project</h1>

<ol>
<li><a href="#overview">Overview</a></li>
<li><a href="#create">Create a project from the Sample Project</a></li>
<li><a href="#source">Source tree layout</a></li>
<li><a href="#makefiles">Writing LLVM-style Makefiles</a>
  <ol>
  <li><a href="#reqVars">Required Variables</a></li>
  <li><a href="#varsBuildDir">Variables for Building Subdirectories</a></li>
  <li><a href="#varsBuildLib">Variables for Building Libraries</a></li>
  <li><a href="#varsBuildProg">Variables for Building Programs</a></li>
  <li><a href="#miscVars">Miscellaneous Variables</a></li>
  </ol></li>
<li><a href="#objcode">Placement of object code</a></li>
<li><a href="#help">Further help</a></li>
</ol>

<div class="doc_author">
  <p>Written by John Criswell</p>
</div>

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

<div class="doc_text">

<p>The LLVM build system is designed to facilitate the building of third party
projects that use LLVM header files, libraries, and tools.  In order to use
these facilities, a Makefile from a project must do the following things:</p>

<ol>
  <li>Set <tt>make</tt> variables. There are several variables that a Makefile
  needs to set to use the LLVM build system:
  <ul>
    <li><tt>PROJECT_NAME</tt> - The name by which your project is known.</li>
    <li><tt>LLVM_SRC_ROOT</tt> - The root of the LLVM source tree.</li>
    <li><tt>LLVM_OBJ_ROOT</tt> - The root of the LLVM object tree.</li>
    <li><tt>PROJ_SRC_ROOT</tt> - The root of the project's source tree.</li>
    <li><tt>PROJ_OBJ_ROOT</tt> - The root of the project's object tree.</li>
    <li><tt>PROJ_INSTALL_ROOT</tt> - The root installation directory.</li>
    <li><tt>LEVEL</tt> - The relative path from the current directory to the 
    project's root ($PROJ_OBJ_ROOT).</li>
  </ul></li>
  <li>Include <tt>Makefile.config</tt> from <tt>$(LLVM_OBJ_ROOT)</tt>.</li>
  <li>Include <tt>Makefile.rules</tt> from <tt>$(LLVM_SRC_ROOT)</tt>.</li>
</ol>

<p>There are two ways that you can set all of these variables:</p>
<ol>
  <li>You can write your own Makefiles which hard-code these values.</li>
  <li>You can use the pre-made LLVM sample project. This sample project 
  includes Makefiles, a configure script that can be used to configure the 
  location of LLVM, and the ability to support multiple object directories 
  from a single source directory.</li>
</ol>

<p>This document assumes that you will base your project on the LLVM sample
project found in <tt>llvm/projects/sample</tt>.  If you want to devise your own
build system, studying the sample project and LLVM Makefiles will probably
provide enough information on how to write your own Makefiles.</p>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="create">Create a Project from the Sample Project</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Follow these simple steps to start your project:</p>

<ol>
<li>Copy the <tt>llvm/projects/sample</tt> directory to any place of your
choosing.  You can place it anywhere you like.  Rename the directory to match
the name of your project.</li>

<li>
If you downloaded LLVM using Subversion, remove all the directories named .svn 
(and all the files therein) from your project's new source tree.  This will 
keep Subversion from thinking that your project is inside 
<tt>llvm/trunk/projects/sample</tt>.</li>

<li>Add your source code and Makefiles to your source tree.</li>

<li>If you want your project to be configured with the <tt>configure</tt> script
then you need to edit <tt>autoconf/configure.ac</tt> as follows:
  <ul>
    <li><b>AC_INIT</b>. Place the name of your project, its version number and
    a contact email address for your project as the arguments to this macro</li>
    <li><b>AC_CONFIG_AUX_DIR</b>. If your project isn't in the
    <tt>llvm/projects</tt> directory then you might need to adjust this so that
    it specifies a relative path to the <tt>llvm/autoconf</tt> directory.</li>
    <li><b>LLVM_CONFIG_PROJECT</b>. Just leave this alone.</li>
    <li><b>AC_CONFIG_SRCDIR</b>. Specify a path to a file name that identifies
    your project; or just leave it at <tt>Makefile.common.in</tt></li>
    <li><b>AC_CONFIG_FILES</b>. Do not change.</li>
    <li><b>AC_CONFIG_MAKEFILE</b>. Use one of these macros for each Makefile
    that your project uses. This macro arranges for your makefiles to be copied
    from the source directory, unmodified, to the build directory.</li>
  </ul>
</li>

<li>After updating <tt>autoconf/configure.ac</tt>, regenerate the
configure script with these commands:

<div class="doc_code">
<p><tt>% cd autoconf<br>
       % ./AutoRegen.sh</tt></p>
</div>

<p>You must be using Autoconf version 2.59 or later and your aclocal version
should be 1.9 or later.</p></li>

<li>Run <tt>configure</tt> in the directory in which you want to place
object code.  Use the following options to tell your project where it
can find LLVM:

  <dl>
    <dt><tt>--with-llvmsrc=&lt;directory&gt;</tt></dt>
    <dd>Tell your project where the LLVM source tree is located.</dd>
    <dt><br><tt>--with-llvmobj=&lt;directory&gt;</tt></dt>
    <dd>Tell your project where the LLVM object tree is located.</dd>
    <dt><br><tt>--prefix=&lt;directory&gt;</tt></dt>
    <dd>Tell your project where it should get installed.</dd>
  </dl>
</ol>

<p>That's it!  Now all you have to do is type <tt>gmake</tt> (or <tt>make</tt>
if your on a GNU/Linux system) in the root of your object directory, and your 
project should build.</p>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="source">Source Tree Layout</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>In order to use the LLVM build system, you will want to organize your
source code so that it can benefit from the build system's features.
Mainly, you want your source tree layout to look similar to the LLVM
source tree layout.  The best way to do this is to just copy the
project tree from <tt>llvm/projects/sample</tt> and modify it to meet
your needs, but you can certainly add to it if you want.</p>

<p>Underneath your top level directory, you should have the following
directories:</p>

<dl>
  <dt><b>lib</b>
  <dd>
  This subdirectory should contain all of your library source
  code.  For each library that you build, you will have one
  directory in <b>lib</b> that will contain that library's source
  code.

  <p>
  Libraries can be object files, archives, or dynamic libraries.
  The <b>lib</b> directory is just a convenient place for libraries
  as it places them all in a directory from which they can be linked
  later.

  <dt><b>include</b>
  <dd>
  This subdirectory should contain any header files that are
  global to your project.  By global, we mean that they are used
  by more than one library or executable of your project.
  <p>
  By placing your header files in <b>include</b>, they will be
  found automatically by the LLVM build system.  For example, if
  you have a file <b>include/jazz/note.h</b>, then your source
  files can include it simply with <b>#include "jazz/note.h"</b>.

  <dt><b>tools</b>
  <dd>
  This subdirectory should contain all of your source
  code for executables.  For each program that you build, you
  will have one directory in <b>tools</b> that will contain that
  program's source code.
  <p>

  <dt><b>test</b>
  <dd>
  This subdirectory should contain tests that verify that your code
  works correctly.  Automated tests are especially useful.
  <p>
  Currently, the LLVM build system provides basic support for tests.
  The LLVM system provides the following:
  <ul>
    <li>
    LLVM provides a tcl procedure that is used by Dejagnu to run
    tests.  It can be found in <tt>llvm/lib/llvm-dg.exp</tt>.  This
    test procedure uses RUN lines in the actual test case to determine
    how to run the test.  See the <a
    href="TestingGuide.html">TestingGuide</a> for more details. You
    can easily write Makefile support similar to the Makefiles in 
    <tt>llvm/test</tt> to use Dejagnu to run your project's tests.<br></li>
    <li>
    LLVM contains an optional package called <tt>llvm-test</tt>
    which provides benchmarks and programs that are known to compile with the
    LLVM GCC front ends.  You can use these
    programs to test your code, gather statistics information, and
    compare it to the current LLVM performance statistics.
    <br>Currently, there is no way to hook your tests directly into the
    <tt>llvm/test</tt> testing harness.  You will simply
    need to find a way to use the source provided within that directory
    on your own.
  </ul>
</dl>

<p>Typically, you will want to build your <b>lib</b> directory first followed by
your <b>tools</b> directory.</p>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="makefiles">Writing LLVM Style Makefiles</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>The LLVM build system provides a convenient way to build libraries and
executables.  Most of your project Makefiles will only need to define a few
variables.  Below is a list of the variables one can set and what they can
do:</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="reqVars">Required Variables</a>
</h3>

<div class="doc_text">

<dl>
  <dt>LEVEL
  <dd>
  This variable is the relative path from this Makefile to the
  top directory of your project's source code.  For example, if
  your source code is in <tt>/tmp/src</tt>, then the Makefile in
  <tt>/tmp/src/jump/high</tt> would set <tt>LEVEL</tt> to <tt>"../.."</tt>.
</dl>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="varsBuildDir">Variables for Building Subdirectories</a>
</h3>

<div class="doc_text">

<dl>
  <dt>DIRS
  <dd>
  This is a space separated list of subdirectories that should be
  built.  They will be built, one at a time, in the order
  specified.
  <p>

  <dt>PARALLEL_DIRS
  <dd>
  This is a list of directories that can be built in parallel.
  These will be built after the directories in DIRS have been
  built.
  <p>

  <dt>OPTIONAL_DIRS
  <dd>
  This is a list of directories that can be built if they exist,
  but will not cause an error if they do not exist.  They are
  built serially in the order in which they are listed.
</dl>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="varsBuildLib">Variables for Building Libraries</a>
</h3>

<div class="doc_text">

<dl>
  <dt>LIBRARYNAME
  <dd>
  This variable contains the base name of the library that will
  be built.  For example, to build a library named
  <tt>libsample.a</tt>, LIBRARYNAME should be set to
  <tt>sample</tt>.
  <p>

  <dt>BUILD_ARCHIVE
  <dd>
  By default, a library is a <tt>.o</tt> file that is linked
  directly into a program.  To build an archive (also known as
  a static library), set the BUILD_ARCHIVE variable.
  <p>

  <dt>SHARED_LIBRARY
  <dd>
  If SHARED_LIBRARY is defined in your Makefile, a shared
  (or dynamic) library will be built.
</dl>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="varsBuildProg">Variables for Building Programs</a>
</h3>

<div class="doc_text">

<dl>
  <dt>TOOLNAME
  <dd>
  This variable contains the name of the program that will
  be built.  For example, to build an executable named
  <tt>sample</tt>, TOOLNAME should be set to <tt>sample</tt>.
  <p>

  <dt>USEDLIBS
  <dd>
  This variable holds a space separated list of libraries that
  should be linked into the program.  These libraries must either
  be LLVM libraries or libraries that come from your <b>lib</b>
  directory.  The libraries must be specified by their base name.
  For example, to link libsample.a, you would set USEDLIBS to
  <tt>sample</tt>.
  <p>
  Note that this works only for statically linked libraries.
  <p>

  <dt>LIBS
  <dd>
  To link dynamic libraries, add <tt>-l&lt;library base name&gt;</tt> to
  the LIBS variable.  The LLVM build system will look in the same places
  for dynamic libraries as it does for static libraries.
  <p>
  For example, to link <tt>libsample.so</tt>, you would have the
  following line in your <tt>Makefile</tt>:
  <p>
  <tt>
  LIBS += -lsample
  </tt>
</dl>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="miscVars">Miscellaneous Variables</a>
</h3>

<div class="doc_text">

<dl>
  <dt>ExtraSource
  <dd>
  This variable contains a space separated list of extra source
  files that need to be built.  It is useful for including the
  output of Lex and Yacc programs.
  <p>

  <dt>CFLAGS
  <dt>CPPFLAGS
  <dd>
  This variable can be used to add options to the C and C++
  compiler, respectively.  It is typically used to add options
  that tell the compiler the location of additional directories
  to search for header files.
  <p>
  It is highly suggested that you append to CFLAGS and CPPFLAGS as
  opposed to overwriting them.  The master Makefiles may already
  have useful options in them that you may not want to overwrite.
  <p>
</dl>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="objcode">Placement of Object Code</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>The final location of built libraries and executables will depend upon
whether you do a Debug, Release, or Profile build.</p>

<dl>
  <dt>Libraries
  <dd>
  All libraries (static and dynamic) will be stored in
  <tt>PROJ_OBJ_ROOT/&lt;type&gt;/lib</tt>, where type is <tt>Debug</tt>,
  <tt>Release</tt>, or <tt>Profile</tt> for a debug, optimized, or
  profiled build, respectively.<p>

  <dt>Executables
  <dd>All executables will be stored in
  <tt>PROJ_OBJ_ROOT/&lt;type&gt;/bin</tt>, where type is <tt>Debug</tt>,
  <tt>Release</tt>, or <tt>Profile</tt> for a debug, optimized, or profiled
  build, respectively.
</dl>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="help">Further Help</a>
</h2>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>If you have any questions or need any help creating an LLVM project,
the LLVM team would be more than happy to help.  You can always post your
questions to the <a
href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM Developers
Mailing List</a>.</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:criswell@uiuc.edu">John Criswell</a><br>
  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
  <br>
  Last modified: $Date$
</address>

</body>
</html>
