From 7a4f03dda74ca8d71cd8985edad5362c66f23cdf Mon Sep 17 00:00:00 2001 From: Jeff Cohen Date: Mon, 31 Jan 2005 05:42:10 +0000 Subject: [PATCH] Add LLVM with Visual Studio overview git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19951 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/GettingStartedVS.html | 433 +++++++++++++++++++++++++++++++++++++ 1 file changed, 433 insertions(+) create mode 100644 docs/GettingStartedVS.html diff --git a/docs/GettingStartedVS.html b/docs/GettingStartedVS.html new file mode 100644 index 00000000000..de0b1fbe3d4 --- /dev/null +++ b/docs/GettingStartedVS.html @@ -0,0 +1,433 @@ + + + + + Getting Started with LLVM System for Microsoft Visual Studio + + + + +
+ Getting Started with the LLVM System using Microsoft Visual Studio +
+ + + +
+

Written by: + Jeff Cohen, +

+
+ + + +
+ Overview +
+ + +
+ +

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 directly generate an + executable file. You can do so indirectly by using the C back end.

+ +

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

+ +

The LLVM test suite cannot be run on the Visual Studio port at this + time.

+ +

Most of the tools build and work. llvm-db does not build at this + time. bugpoint does build, but does not work. + +

Additional information about the LLVM directory structure and tool chain + can be found on the main Getting Started + page.

+ +
+ + +
+ Getting Started Quickly (A Summary) +
+ + +
+ +

Here's the short story for getting up and running quickly with LLVM:

+ +
    +
  1. Read the documentation.
  2. +
  3. Read the documentation.
  4. +
  5. Remember that you were warned twice about reading the documentation.
  6. + +
  7. Get the Source Code +
      +
    • With the distributed files: +
        +
      1. cd where-you-want-llvm-to-live +
      2. gunzip --stdout llvm-version.tar.gz | tar -xvf - + or use WinZip +
      3. cd llvm
      4. +
    • + +
    • With anonymous CVS access (or use a mirror): +
        +
      1. cd where-you-want-llvm-to-live
      2. +
      3. cvs -d + :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login
      4. +
      5. Hit the return key when prompted for the password. +
      6. cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm + co llvm
      7. +
      8. cd llvm
      9. +
      10. cvs up -P -d
      11. +
    • +
  8. + +
  9. Start Visual Studio +
      +
    1. Simply double click on the solution file llvm/win32/llvm.sln. +
    2. +
  10. + +
  11. Build the LLVM Suite: +
      +
    1. Simply build the solution.
    2. +
    3. 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.
    4. +
  12. + +
+ +
+ + +
+ Requirements +
+ + +
+ +

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.

+ +
+ + +
+ Hardware +
+ +
+ +

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.

+ +
+ + +
Software
+
+ +

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.

+ +

You will also need several open source packages: bison, flex, and sed. + These must be installed in llvm/win32/tools. These can be found at + http://gnuwin32.sourceforge.net/ + . Bison prefers that m4 be in the path. You must add it to the Visual + Studio configuration under the menu Options -> Projects -> VC++ + Directories. Alternatively, you can set the environment variable M4 + to point to m4 executable.

+ +
+ + +
+ Getting Started with LLVM +
+ + +
+ +

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.

+ +
+ + +
+ Terminology and Notation +
+ +
+ +

Throughout this manual, the following names are used to denote paths +specific to the local system and working environment. These are not +environment variables you need to set but just strings used in the rest +of this document below. 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:

+ +
+
SRC_ROOT +
+ This is the top level directory of the LLVM source tree. +

+ +

OBJ_ROOT +
+ 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). +

+

+ +
+ + +
+ Unpacking the LLVM Archives +
+ +
+ +

+If you have the LLVM distribution, you will need to unpack it before you +can begin to compile it. LLVM is distributed as a set of two files: the LLVM +suite and the LLVM GCC front end compiled for your platform. There is an +additional test suite that is optional. Each file is a TAR archive that is +compressed with the gzip program. The WinZip program can also unpack this +archive. Only the LLVM suite is usable with Visual Studio. +

+ +

The files are as follows: +

+
llvm-1.4.tar.gz
+
This is the source code for the LLVM libraries and tools.
+
+ +
+ + +
+ Checkout LLVM from CVS +
+ +
+ +

If you have access to our CVS repository, you can get a fresh copy of +the entire source code. Note that significant progress has been made on the +Visual Studio port since 1.4 was released. All you need to do is check it out +from CVS as follows:

+ + + +

This will create an 'llvm' directory in the current +directory and fully populate it with the LLVM source code, Makefiles, +test directories, and local copies of documentation files.

+ +

If you want to get a specific release (as opposed to the most recent +revision), you can specify a label. The following releases have the following +label:

+ + + +
+ + +
+ LLVM CVS Mirrors +
+ +
+ +

If the main CVS server is overloaded or inaccessible, you can try one of +these user-hosted mirrors:

+ + +
+ + +
+ The Location of LLVM Object Files +
+ +
+ +

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

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

+ + +
+ An Example Using the LLVM Tool Chain +
+ + +
+ +
    +
  1. First, create a simple C file, name it 'hello.c': +
    +   #include <stdio.h>
    +   int main() {
    +     printf("hello world\n");
    +     return 0;
    +   }
    +       
  2. + +
  3. Next, compile the C file into a LLVM bytecode file:

    +

    % llvm-gcc hello.c -o hello

    + +

    Note that you should have already built the tools and they have to be + in your path, at least gccas and gccld.

    + +

    This will create two result files: hello and + hello.bc. The hello.bc is the LLVM bytecode that + corresponds the the compiled program and the library facilities that it + required. hello is a simple shell script that runs the bytecode + file with lli, making the result directly executable. Note that + all LLVM optimizations are enabled by default, so there is no need for a + "-O3" switch.

    + +

    Note: while you cannot do this step on Windows, you can do it on a + Unix system and transfer hello.bc to Windows.

  4. + +
  5. Run the program. To make sure the program ran, execute the + following command:

    + +

    % lli hello.bc

  6. + +
  7. Use the llvm-dis utility to take a look at the LLVM assembly + code:

    + +

    % llvm-dis < hello.bc | less

  8. + +
  9. Compile the program to native assembly using the LLC code + generator:

    + +

    % llc hello.bc -o hello.s

    + +
  10. Assemble the native assembly language file into a program:

    + +

    Not currently possible, but eventually will use NASMW.

    + +
  11. Execute the native code program:

    + +

    % ./hello.native

  12. + +
+ +
+ + +
+ Common Problems +
+ + +
+ +

If you are having problems building or using LLVM, or if you have any other +general questions about LLVM, please consult the Frequently +Asked Questions page.

+ +
+ + +
+ Links +
+ + +
+ +

This document is just an introduction 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:

+ + + +
+ + + +
+
+ Valid CSS! + Valid HTML 4.01! + + Chris Lattner
+ Reid Spencer
+ The LLVM Compiler Infrastructure
+ Last modified: $Date$ +
+ +