<!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 LLVM. 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 2008 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 2008 or higher.  Earlier versions of Visual
  Studio have bugs, are not completely compatible, or do not support the C++
  standard well enough.</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$
</address>
</body>
</html>
