Commit Vikram's changes for 426 class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3593 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-09-06 16:26:13 +00:00
parent 0377de4d97
commit 1db872dd10

View File

@ -5,17 +5,27 @@
</head> </head>
<body bgcolor=white> <body bgcolor=white>
<h1>Getting Started with the LLVM System<br><font size=3>By: <a <center><h1>Getting Started with the LLVM System<br><font size=3>By: <a
href="mailto:gshi1@uiuc.edu">Guochun Shi</a> and <a href="mailto:gshi1@uiuc.edu">Guochun Shi</a>,
href="mailto:sabre@nondot.org">Chris Lattner</a></font></h1> <a href="mailto:sabre@nondot.org">Chris Lattner</a> and
<a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>
</font></h1></center>
<!--=====================================================================-->
<h2><a name="Contents">Contents</a></h2>
<!--=====================================================================-->
<ul> <ul>
<li><a href="#quickstart">Getting started with LLVM</a> <li><a href="#overview">Overview</a>
<li><a href="#starting">Getting started with LLVM</a>
<ol> <ol>
<li><a href="#cvs">Checkout LLVM from CVS</a> <li><a href="#quickstart">Getting started quickly (a summary)</a>
<li><a href="#shared">Access to <tt>/shared</tt></a> <li><a href="#checkout">Checkout LLVM from CVS</a>
<li><a href="#environment">Set up your environment</a> <li><a href="#terminology">Terminology and Notation</tt></a>
<li><a href="#compile">Compiling the Source Code</a> <li><a href="#objfiles">The location for object files</tt></a>
<li><a href="#config">Local Configuration Options</tt></a>
<li><a href="#environment">Setting up your environment</a>
<li><a href="#compile">Compiling the source code</a>
</ol> </ol>
<li><a href="#layout">Program layout</a> <li><a href="#layout">Program layout</a>
<ol> <ol>
@ -32,84 +42,149 @@
</ul> </ul>
<!--=====================================================================--> <!--=====================================================================-->
<h2><a name="quickstart">Getting Started with LLVM</a></h2> <center>
<h2><a name="overview"><b>Overview</b></a></h2>
</center>
<!--=====================================================================--> <!--=====================================================================-->
<p>This guide is meant to get you up and running with LLVM as quickly as <p>The <a href"starting">next section</a> of this guide is meant to get
possible. Once you get the basic system running you can choose an area to you up and running with LLVM, and to give you some basic information about
dive into and learn more about. If you get stuck or something is missing the LLVM environment. The <a href"#quickstart">first subsection</a> gives
from this document, please email <a a short summary for those who are already familiar with the system and
href="mailto:sabre@nondot.org">Chris</a>.</p> 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</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:
<ul>
<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>Edit <tt>llvm/Makefile.config</tt> to set local paths if necessary.
<li><tt>cd llvm</tt>
<li><tt>gmake -k |& tee gnumake.out
&nbsp;&nbsp;&nbsp;# this is csh or tcsh syntax</tt>
</ul>
<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.
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<h3><a name="tools">Checkout LLVM from CVS</a></h3> <h3><a name="terminology">Terminology and Notation</a></h3>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<p>First step is to get the actual source code. To do this, all you need to <p>Through this manual, the following names are used to denote paths
do is check it out from CVS. From your home directory, just enter:</p> 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
<p><tt>cvs -d /home/vadve/vadve/Research/DynOpt/CVSRepository checkout of this document below.</i>. In any of the examples below, simply replace
llvm</tt></p> each of these names with the appropriate pathname on your local system.
All these paths are absolute:</p>
<p>This will create an '<tt>llvm</tt>' directory in your home directory and <ul>
fully populate it with the source code for LLVM.</p> </ul>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<h3><a name="shared">Access to <tt>/shared</tt></a></h3> <h3><a name="checkout">Checkout LLVM from CVS</a></h3>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
By default, LLVM is configured to send all compiled files into the <p>Before checking out the source code, you will need to know the path to
<tt>/shared/[yourloginname]/</tt> directory. The idea is that this CVS repository containing LLVM source code (we'll call this
directory is local to the machine you're working on, so the huge libraries <i>CVSROOTDIR</i> below). Ask the person responsible for your local LLVM
and <tt>.o</tt> files you will be compiling will not have to be sent over installation to give you this path.
NFS. If you are in a situation where this setup is correct, you don't have
to do anything. If you don't have a <tt>/shared</tt> directory, you will
have to make a couple of modifications to your setup.<p>
The first modification is that you need to enable the "<tt>BUILD_ROOT =
.</tt> line in the top level <tt>Makefile.common</tt>. This will instruct
LLVM to build into the current directory tree instead of
<tt>/shared</tt>.<p>
<p>To 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>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<h3><a name="tools">Set up your environment</a></h3> <h3><a name="config">Local Configuration Options</a></h3>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<p>Now that you have the source code available, you should set up your <p>The file <tt>llvm/Makefile.config</tt>
environment to be able to use the LLVM tools (once compiled) with as little defines the following path variables,
hassle as possible. To do this, we recommend that you add the following which are specific to a particular installation of LLVM.
lines to your <tt>.cshrc</tt> (or the corresponding lines to your These should need to be modified only once after checking out a copy
<tt>.profile</tt> if you use a bourne shell derivative): of LLVM (if the default values do not already match your system):
<ul>
<p><li><i>LLVM_OBJ_DIR</i> = Path to the llvm directory where
object files should be placed.
(See the Section on <a href=#objfiles>
The location for LLVM object files</a>
for more information.)
<p><li><i>LLVMGCCDIR</i> = Path to the location of the LLVM front-end
binaries and associated libraries.
<p><li><i>BURG</i> = Path to the burg program used for instruction
selection.
<p><li><i>PURIFY</i> = Path to the purify program.
</ul>
<!------------------------------------------------------------------------->
<h3><a name="objfiles">The location for LLVM object files</a></h3>
<!------------------------------------------------------------------------->
<p>The LLVM make system sends most output files generated during the build
into the directory defined by the variable LLVM_OBJ_DIR in
<tt>llvm/Makefile.config</tt>.
This can be either just your normal </tt>llvm</tt> 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 you do not wish to use a different location for object files,
just set this variable to ".".
<!------------------------------------------------------------------------->
<h3><a name="environment">Setting up your environment</a></h3>
<!------------------------------------------------------------------------->
<i>NOTE: This step is optional but will set up your environment so you
can use the compiled LLVM tools with as little hassle as possible.</i>)
<p>Add the following lines to your <tt>.cshrc</tt> (or the corresponding
lines to your <tt>.profile</tt> if you use a bourne shell derivative).
<pre> <pre>
# Make the C frontend easy to use... # Make the C front end easy to use...
alias llvmgcc /home/vadve/lattner/cvs/gcc_install/bin/gcc alias llvmgcc <i>LLVMGCCDIR</i><tt>/bin/gcc</tt>
# Make the LLVM tools easy to use... # Make the LLVM tools easy to use...
setenv PATH /shared/[yourloginname]/llvm/tools/Debug:${PATH} setenv PATH <i>LLVM_OBJ_DIR</i>/tools/Debug:${PATH}
</pre> </pre>
The <tt>llvmgcc</tt> alias is useful because the C compiler is not
<p>The C compiler is not included in the CVS tree you just checked out, so included in the CVS tree you just checked out.
we just point to the cannonical location, and access it with the
<tt>llvmgcc</tt> command. The rest of the <a href="#tools">LLVM tools</a> <p>The other LLVM <a href="#tools">LLVM tools</a> are part of the LLVM
will be built into the <tt>llvm/tools/Debug</tt> directory. If you do not source base, and built when compiling LLVM. They will be built into the
have access to <tt>/shared</tt>, use this line instead:</p> <tt><i>LLVM_OBJ_DIR</i>/tools/Debug</tt> directory.</p>
<pre>
setenv PATH ~/llvm/tools/Debug:${PATH}
</pre>
Adding these two lines to your path will make it much easier to use the LLVM
tools.</p>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<h3><a name="compile">Compiling the Source Code</a></h3> <h3><a name="compile">Compiling the source code</a></h3>
<!-------------------------------------------------------------------------> <!------------------------------------------------------------------------->
<p>Every directory in the LLVM source tree includes a Makefile to build it, <p>Every directory in the LLVM source tree includes a Makefile to build it,
@ -121,17 +196,16 @@
in <tt>llvm/tools/Debug</tt>. If you want to look at the libraries that in <tt>llvm/tools/Debug</tt>. If you want to look at the libraries that
were compiled, look in <tt>llvm/lib/Debug</tt>.</p> were compiled, look in <tt>llvm/lib/Debug</tt>.</p>
<p>By default, the LLVM build process sends all temporary (<tt>.o</tt>, If you get an error talking about a <tt>/shared</tt> directory, follow the
<tt>.so</tt>, <tt>.a</tt>) files into a <tt>/shared/[your login instructions in the section about <a href="#environment">Setting Up Your
name]/...</tt> directory, which is supposed to be on a disk local to the Environment.</a>
current machine. If you get an error talking about a <tt>/shared</tt>
directory, follow the instructions in the <a href="#shared">section about
<tt>/shared</tt></a>.<p>
<!--=====================================================================--> <!--=====================================================================-->
<h2><a name="layout">Program Layout</a></h2> <center>
<h2><a name="layout"><b>Program Layout</b></a></h2>
</center>
<!--=====================================================================--> <!--=====================================================================-->
<p>One useful source of infomation about the LLVM sourcebase is the LLVM <a <p>One useful source of infomation about the LLVM sourcebase is the LLVM <a
@ -274,9 +348,10 @@
because it is quite large and not very interesting.<p> because it is quite large and not very interesting.<p>
<ol> <ol>
<dt><tt><b>gccas</b></tt><dd> This took is invoked by the <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 <tt>llvmgcc</tt> frontend as the "assembler" part of the compiler. This
tool actually assembles its input, performs a variety of optimizations, 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 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 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 <tt>x.o</tt> file (which is an LLVM bytecode file that can be
@ -380,9 +455,9 @@
<hr> <hr>
If you have any questions or run into any snags (or you have any If you have any questions or run into any snags (or you have any
additions...), please send an email to <a additions...), please send an email to
href="mailto:sabre@nondot.org">Chris Lattner</a> or <a <a href="mailto:hldnbrnd@uiuc.edu">Nicholas Hildenbrandt</a> or
href="mailto:gshi1@uiuc.edu">Guochun Shi</a>. <p> <a href="mailto:sabre@nondot.org">Chris Lattner</a>.</p>
<!-- Created: Mon Jul 1 02:29:02 CDT 2002 --> <!-- Created: Mon Jul 1 02:29:02 CDT 2002 -->
<!-- hhmts start --> <!-- hhmts start -->