<!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="#requirements">Requirements</a>
    <ol>
      <li><a href="#hardware">Hardware</a>
      <li><a href="#software">Software</a>
    </ol></li>
  <li><a href="#quickstart">Getting Started</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>

<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>Welcome to LLVM on Windows! This document only covers LLVM on Windows using
  Visual Studio, not mingw or cygwin. In order to get started, you first need to
  know some basic information.</p>

  <p>There are many different projects that compose LLVM. The first 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,
  bitcode analyzer and bitcode optimizer. It also contains a test suite that can
  be used to test the LLVM tools.</p>

  <p>Another useful project on Windows is
  <a href="http://clang.llvm.org/">clang</a>. Clang is a C family
  ([Objective]C/C++) compiler. Clang mostly works on Windows, but does not
  currently understand all of the Microsoft extensions to C and C++. Because of
  this, clang cannot parse the C++ standard library included with Visual Studio,
  nor parts of the Windows Platform SDK. However, most standard C programs do
  compile. Clang can be used to emit bitcode, directly emit object files or
  even linked executables using Visual Studio's <tt>link.exe</tt></p>

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

  <p>Most of the tools build and work.  <tt>bugpoint</tt> does build, but does
  not work.</p>

  <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="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 2005 SP1 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 2005 SP1 or higher.  The VS2005 SP1
  beta and the normal VS2005 still have bugs that are not completely
  compatible.  Earlier versions of Visual Studio do not support the C++ standard
  well enough and will not work.</p>

  <p>You will also need the <a href="http://www.cmake.org/">CMake</a> build
  system since it generates the project files you will use to build with.</p>

  <p>If you would like to run the LLVM tests you will need
  <a href="http://www.python.org/">Python</a>. Versions 2.4-2.7 are known to
  work.</p>

  <p>Do not install the LLVM directory tree into a path containing spaces (e.g.
  C:\Documents and Settings\...) as the configure step will fail.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="quickstart"><b>Getting Started</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>Seriously, 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/trunk llvm</tt></li>
      <li><tt>cd llvm</tt></li>
    </ol></li>
  </ul></li>

  <li> Use <a href="http://www.cmake.org/">CMake</a> to generate up-to-date
    project files:
    <ul>
      <li>Once CMake is installed then the simplest way is to just start the
        CMake GUI, select the directory where you have LLVM extracted to, and the
        default options should all be fine.  One option you may really want to
        change, regardless of anything else, might be the CMAKE_INSTALL_PREFIX
        setting to select a directory to INSTALL to once compiling is complete,
        although installation is not mandatory for using LLVM.  Another important
        option is LLVM_TARGETS_TO_BUILD, which controls the LLVM target
        architectures that are included on the build.
      <li>See the <a href="CMake.html">LLVM CMake guide</a> for
        detailed information about how to configure the LLVM
        build.</li>
    </ul>
  </li>

  <li>Start Visual Studio
  <ul>
    <li>In the directory you created the project files will have
    an <tt>llvm.sln</tt> file, just double-click on that to open
    Visual Studio.</li>
  </ul></li>

  <li>Build the LLVM Suite:
  <ul>
    <li>The projects may still be built individually, but
    to build them all do not just select all of them in batch build (as some
    are meant as configuration projects), but rather select and build just
    the ALL_BUILD project to build everything, or the INSTALL project, which
    first builds the ALL_BUILD project, then installs the LLVM headers, libs,
    and other useful things to the directory set by the CMAKE_INSTALL_PREFIX
    setting when you first configured CMake.</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 or run it from the command line.  The
    program will print the corresponding fibonacci value.</li>
  </ul></li>

  <li>Test LLVM:
  <ul>
    <li>The LLVM tests can be run by <tt>cd</tt>ing to the llvm source directory
        and running:

<div class="doc_code">
<pre>
% llvm-lit test
</pre>
</div>

    <p>Note that quite a few of these test will fail.</p>
    </li>

    <li>A specific test or test directory can be run with:</li>

<div class="doc_code">
<pre>
% llvm-lit test/path/to/test
</pre>
</div>

</ol>

</div>

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

<div class="doc_text">

<ol>
  <li><p>First, create a simple C file, name it 'hello.c':</p>

<div class="doc_code">
<pre>
#include &lt;stdio.h&gt;
int main() {
  printf("hello world\n");
  return 0;
}
</pre></div></li>

  <li><p>Next, compile the C file into a LLVM bitcode file:</p>

<div class="doc_code">
<pre>
% clang -c hello.c -emit-llvm -o hello.bc
</pre>
</div>

      <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>Alternatively you can directly output an executable with clang with:
      </p>

<div class="doc_code">
<pre>
% clang hello.c -o hello.exe
</pre>
</div>

  <p>The <tt>-o hello.exe</tt> is required because clang currently outputs
  <tt>a.out</tt> when neither <tt>-o</tt> nor <tt>-c</tt> are given.</p>

  <li><p>Run the program using the just-in-time compiler:</p>

<div class="doc_code">
<pre>
% lli hello.bc
</pre>
</div>

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

<div class="doc_code">
<pre>
% llvm-dis &lt; hello.bc | more
</pre>
</div></li>

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

<div class="doc_code">
<pre>
% llc -filetype=obj hello.bc
</pre>
</div></li>

  <li><p>Link to binary using Microsoft link:</p>

<div class="doc_code">
<pre>
% link hello.obj -defaultlib:libcmt
</pre>
</div>

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

<div class="doc_code">
<pre>
% hello.exe
</pre>
</div></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-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: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>
