<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Getting Started with LLVM System for Microsoft Visual Studio</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">
  Getting Started with the LLVM System using Microsoft Visual Studio
</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="#objfiles">The Location of LLVM Object Files</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>

<div class="doc_author">
  <p>Written by: 
    <a href="mailto:jeffc@jolt-lang.org">Jeff Cohen</a>
  </p>
</div>


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

<div class="doc_text">

  <p>The Visual Studio port at this time is experimental.  It is suitable for
  use only if you are writing your own compiler front end or otherwise have a
  need to dynamically generate machine code.  The JIT and interpreter are
  functional, but it is currently not possible to generate assembly code which
  is then assembled into an executable.  You can indirectly create executables
  by using the C back end.</p>

  <p>To emphasize, there is no C/C++ front end currently available.
  <tt>llvm-gcc</tt> is based on GCC, which cannot be bootstrapped using VC++.
  Eventually there should be a <tt>llvm-gcc</tt> based on Cygwin or MinGW that
  is usable.  There is also the option of generating bitcode files on Unix and
  copying them over to Windows.  But be aware the odds of linking C++ code
  compiled with <tt>llvm-gcc</tt> with code compiled with VC++ is essentially
  zero.</p>

  <p>The LLVM test suite cannot be run on the Visual Studio port at this
  time.</p>

  <p>Most of the tools build and work.  <tt>llvm-db</tt> does not build at this
  time.  <tt>bugpoint</tt> does build, but does not work.

  <p>Additional information about the LLVM directory structure and tool chain
  can be found on the main <a href="GettingStarted.html">Getting Started</a>
  page.</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>Read the documentation.</li>
  <li>Read the documentation.</li>
  <li>Remember that you were warned twice about reading the documentation.</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>
      <i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or use WinZip</i>
      <li><tt>cd llvm</tt></li>
    </ol></li>

    <li>With anonymous Subversion access:
    <ol>
      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
      <li><tt>svn co http://llvm.org/svn/llvm-project/llvm-top/trunk llvm-top
      </tt></li>
      <li><tt>make checkout MODULE=llvm</tt>
      <li><tt>cd llvm</tt></li>
    </ol></li>
  </ul></li>

  <li>Start Visual Studio
  <ol>
    <li>Simply double click on the solution file <tt>llvm/win32/llvm.sln</tt>.
    </li>
  </ol></li>

  <li>Build the LLVM Suite:
  <ol>
    <li>Simply build the solution.</li>
    <li>The Fibonacci project is a sample program that uses the JIT.  Modify
    the project's debugging properties to provide a numeric command line
    argument.  The program will print the corresponding fibonacci value.</li>
  </ol></li>

</ol>

<p>It is strongly encouraged that you get the latest version from Subversion as
changes are continually making the VS support better.</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>Any system that can adequately run Visual Studio .NET 2003 is fine.  The
  LLVM source tree and object files, libraries and executables will consume
  approximately 3GB.</p>

</div>

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

  <p>You will need Visual Studio .NET 2003.  Earlier versions cannot open the
  solution/project files.  The VS 2005 beta can, but will migrate these files
  to its own format in the process.  While it should work with the VS 2005
  beta, there are no guarantees and there is no support for it at this time.
  It has been reported that VC++ Express also works.</p>

  <p>If you plan to modify any .y or .l files, you will need to have bison
  and/or flex installed where Visual Studio can find them.  Otherwise, you do
  not need them and the pre-generated files that come with the source tree
  will be used.</p>

</div>

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

<div class="doc_text">

<p>The remainder of this guide is meant to get you up and running with
LLVM using Visual Studio and to give you some basic information about the LLVM
environment.</p>

</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
    is fixed at SRC_ROOT/win32).
    <p>
</dl>

</div>

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

<div class="doc_text">

  <p>The object files are placed under <tt>OBJ_ROOT/Debug</tt> for debug builds
  and <tt>OBJ_ROOT/Release</tt> for release (optimized) builds.  These include
  both executables and libararies that your application can link against.

  <p>The files that <tt>configure</tt> would create when building on Unix are
  created by the <tt>Configure</tt> project and placed in
  <tt>OBJ_ROOT/llvm</tt>.  You application must have OBJ_ROOT in its include
  search path just before <tt>SRC_ROOT/include</tt>.

</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 bitcode file:</p>
      <p><tt>% llvm-gcc -c hello.c -emit-llvm -o hello.bc</tt></p>

      <p>This will create the result file <tt>hello.bc</tt> which is the LLVM 
      bitcode that corresponds the the compiled program and the library 
      facilities that it required.  You can execute this file directly using
      <tt>lli</tt> tool, compile it to native assembly with the <tt>llc</tt>, 
      optimize or analyze it further with the <tt>opt</tt> tool, etc.</p> 
      
      <p><b>Note: while you cannot do this step on Windows, you can do it on a
        Unix system and transfer <tt>hello.bc</tt> to Windows.  Important:
        transfer as a binary file!</b></p></li>

  <li><p>Run the program using the just-in-time compiler:</p>
      
      <p><tt>% lli hello.bc</tt></p></li>

      <p>Note: this will only work for trivial C programs.  Non-trivial programs
        (and any C++ program) will have dependencies on the GCC runtime that
        won't be satisfied by the Microsoft runtime libraries.</p>

  <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 | more</tt><p></li>

  <li><p>Compile the program to C using the LLC code generator:</p>

      <p><tt>% llc -march=c hello.bc</tt></p></li>

  <li><p>Compile to binary using Microsoft C:</p>

      <p><tt>% cl hello.cbe.c</tt></p></li>

      <p>Note: this will only work for trivial C programs.  Non-trivial programs
        (and any C++ program) will have dependencies on the GCC runtime that
        won't be satisfied by the Microsoft runtime libraries.</p>

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

      <p><tt>% hello.cbe.exe</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.org/">LLVM homepage</a></li>
  <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
  <li><a href="http://llvm.org/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:jeffc@jolt-lang.org">Jeff Cohen</a><br>
  <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>
</body>
</html>
