<!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>

<h1>
  Getting Started with the LLVM System using Microsoft Visual Studio
</h1>

<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="http://llvm.org/">The LLVM Team</a></p>
</div>


<!-- *********************************************************************** -->
<h2>
  <a name="overview"><b>Overview</b></a>
</h2>
<!-- *********************************************************************** -->

<div>

  <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>

<!-- *********************************************************************** -->
<h2>
  <a name="requirements"><b>Requirements</b></a>
</h2>
<!-- *********************************************************************** -->

<div>

  <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>

<!-- ======================================================================= -->
<h3>
  <a name="hardware"><b>Hardware</b></a>
</h3>

<div>

  <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>

<!-- ======================================================================= -->
<h3><a name="software"><b>Software</b></a></h3>
<div>

  <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. You will need <a href="http://gnuwin32.sourceforge.net/">"GnuWin32"</a>
  tools, too.</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>

<!-- *********************************************************************** -->
<h2>
  <a name="quickstart"><b>Getting Started</b></a>
</h2>
<!-- *********************************************************************** -->

<div>

<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 on Visual Studio:
  <ul>
    <li>If %PATH% does not contain GnuWin32, you may specify LLVM_LIT_TOOLS_DIR
    on CMake for the path to GnuWin32.</li>
    <li>You can run LLVM tests by merely building the project
      "check". The test results will be shown in the VS output
      window.</li>
  </ul>
  </li>

  <!-- FIXME: Is it up-to-date? -->
  <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:

<div class="doc_code">
<pre>
% llvm-lit test/path/to/test
</pre>
</div>
    </li>
  </ul>
</ol>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- *********************************************************************** -->
<h2>
  <a name="problems">Common Problems</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- *********************************************************************** -->
<h2>
  <a name="links">Links</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>
</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="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date: 2011-04-22 20:30:22 -0400 (Fri, 22 Apr 2011) $
</address>
</body>
</html>
