diff --git a/docs/GettingStartedVS.html b/docs/GettingStartedVS.html deleted file mode 100644 index b0ed82409da..00000000000 --- a/docs/GettingStartedVS.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - - Getting Started with LLVM System for Microsoft Visual Studio - - - - -

- Getting Started with the LLVM System using Microsoft Visual Studio -

- - - -
-

Written by: The LLVM Team

-
- - - -

- Overview -

- - -
- -

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.

- -

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.

- -

Another useful project on Windows is - clang. 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 link.exe

- -

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

- -

Most of the tools build and work. 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.

- -
- - -

- 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 2008 is fine. The LLVM - source tree and object files, libraries and executables will consume - approximately 3GB.

- -
- - -

Software

-
- -

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.

- -

You will also need the CMake build - system since it generates the project files you will use to build with.

- -

If you would like to run the LLVM tests you will need - Python. Versions 2.4-2.7 are known to - work. You will need "GnuWin32" - tools, too.

- -

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

- -
- -
- - -

- Getting Started -

- - -
- -

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

- -
    -
  1. Read the documentation.
  2. -
  3. Seriously, 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 Subversion access: -
        -
      1. cd where-you-want-llvm-to-live
      2. -
      3. svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
      4. -
      5. cd llvm
      6. -
    • -
  8. - -
  9. Use CMake to generate up-to-date - project files: -
      -
    • 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. -
    • See the LLVM CMake guide for - detailed information about how to configure the LLVM - build.
    • -
    -
  10. - -
  11. Start Visual Studio -
      -
    • In the directory you created the project files will have - an llvm.sln file, just double-click on that to open - Visual Studio.
    • -
  12. - -
  13. Build the LLVM Suite: -
      -
    • 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.
    • -
    • 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.
    • -
  14. - -
  15. Test LLVM on Visual Studio: -
      -
    • If %PATH% does not contain GnuWin32, you may specify LLVM_LIT_TOOLS_DIR - on CMake for the path to GnuWin32.
    • -
    • You can run LLVM tests by merely building the project - "check". The test results will be shown in the VS output - window.
    • -
    -
  16. - - -
  17. Test LLVM: -
      -
    • The LLVM tests can be run by cding to the llvm source directory - and running: - -
      -
      -% llvm-lit test
      -
      -
      - -

      Note that quite a few of these test will fail.

      -
    • - -
    • A specific test or test directory can be run with: - -
      -
      -% llvm-lit test/path/to/test
      -
      -
      -
    • -
    -
- -
- - -

- 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 bitcode file:

    - -
    -
    -% clang -c hello.c -emit-llvm -o hello.bc
    -
    -
    - -

    This will create the result file hello.bc 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 - lli tool, compile it to native assembly with the llc, - optimize or analyze it further with the opt tool, etc.

    - -

    Alternatively you can directly output an executable with clang with: -

    - -
    -
    -% clang hello.c -o hello.exe
    -
    -
    - -

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

    - -
  4. Run the program using the just-in-time compiler:

    - -
    -
    -% lli hello.bc
    -
    -
    - -
  5. Use the llvm-dis utility to take a look at the LLVM assembly - code:

    - -
    -
    -% llvm-dis < hello.bc | more
    -
    -
  6. - -
  7. Compile the program to object code using the LLC code generator:

    - -
    -
    -% llc -filetype=obj hello.bc
    -
    -
  8. - -
  9. Link to binary using Microsoft link:

    - -
    -
    -% link hello.obj -defaultlib:libcmt
    -
    -
    - -
  10. Execute the native code program:

    - -
    -
    -% hello.exe
    -
    -
  11. -
- -
- - -

- 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 - - The LLVM Compiler Infrastructure
- Last modified: $Date$ -
- - diff --git a/docs/GettingStartedVS.rst b/docs/GettingStartedVS.rst new file mode 100644 index 00000000000..7d773b7900d --- /dev/null +++ b/docs/GettingStartedVS.rst @@ -0,0 +1,234 @@ +.. _winvs: + +================================================================== +Getting Started with the LLVM System using Microsoft Visual Studio +================================================================== + +.. contents:: + :local: + + +Overview +======== +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. + +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. + +Another useful project on Windows is `Clang `_. +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 +``link.exe``. + +The large LLVM test suite cannot be run on the Visual Studio port at this +time. + +Most of the tools build and work. ``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. + + +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 2008 is fine. The LLVM +source tree and object files, libraries and executables will consume +approximately 3GB. + +Software +-------- +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. + +You will also need the `CMake `_ build system since it +generates the project files you will use to build with. + +If you would like to run the LLVM tests you will need `Python +`_. Versions 2.4-2.7 are known to work. You will need +`GnuWin32 `_ tools, too. + +Do not install the LLVM directory tree into a path containing spaces (e.g. +``C:\Documents and Settings\...``) as the configure step will fail. + + +Getting Started +=============== +Here's the short story for getting up and running quickly with LLVM: + +1. Read the documentation. +2. Seriously, read the documentation. +3. Remember that you were warned twice about reading the documentation. +4. Get the Source Code + + * With the distributed files: + + 1. ``cd `` + 2. ``gunzip --stdout llvm-VERSION.tar.gz | tar -xvf -`` + (*or use WinZip*) + 3. ``cd llvm`` + + * With anonymous Subversion access: + + 1. ``cd `` + 2. ``svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm`` + 3. ``cd llvm`` + +5. Use `CMake `_ to generate up-to-date project files: + + * 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. + * See the `LLVM CMake guide `_ for detailed information about + how to configure the LLVM build. + +6. Start Visual Studio + + * In the directory you created the project files will have an ``llvm.sln`` + file, just double-click on that to open Visual Studio. + +7. Build the LLVM Suite: + + * 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. + * 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. + +8. Test LLVM on Visual Studio: + + * If ``%PATH%`` does not contain GnuWin32, you may specify + ``LLVM_LIT_TOOLS_DIR`` on CMake for the path to GnuWin32. + * You can run LLVM tests by merely building the project "check". The test + results will be shown in the VS output window. + +.. FIXME: Is it up-to-date? + +9. Test LLVM: + + * The LLVM tests can be run by changing directory to the llvm source + directory and running: + + .. code-block:: bat + + C:\..\llvm> llvm-lit test + + Note that quite a few of these test will fail. + + A specific test or test directory can be run with: + + .. code-block:: bat + + C:\..\llvm> llvm-lit test/path/to/test + + +An Example Using the LLVM Tool Chain +==================================== + +1. First, create a simple C file, name it '``hello.c``': + + .. code-block:: c + + #include + int main() { + printf("hello world\n"); + return 0; + } + +2. Next, compile the C file into a LLVM bitcode file: + + .. code-block:: bat + + C:\..> clang -c hello.c -emit-llvm -o hello.bc + + This will create the result file ``hello.bc`` 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 ``lli`` tool, + compile it to native assembly with the ``llc``, optimize or analyze it + further with the ``opt`` tool, etc. + + Alternatively you can directly output an executable with clang with: + + .. code-block:: bat + + C:\..> clang hello.c -o hello.exe + + The ``-o hello.exe`` is required because clang currently outputs ``a.out`` + when neither ``-o`` nor ``-c`` are given. + +3. Run the program using the just-in-time compiler: + + .. code-block:: bat + + C:\..> lli hello.bc + +4. Use the ``llvm-dis`` utility to take a look at the LLVM assembly code: + + .. code-block:: bat + + C:\..> llvm-dis < hello.bc | more + +5. Compile the program to object code using the LLC code generator: + + .. code-block:: bat + + C:\..> llc -filetype=obj hello.bc + +6. Link to binary using Microsoft link: + + .. code-block:: bat + + C:\..> link hello.obj -defaultlib:libcmt + +7. Execute the native code program: + + .. code-block:: bat + + C:\..> hello.exe + + +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: + +* `LLVM homepage `_ +* `LLVM doxygen tree `_ + diff --git a/docs/userguides.rst b/docs/userguides.rst index f1267dc439a..1b44c48fe97 100644 --- a/docs/userguides.rst +++ b/docs/userguides.rst @@ -8,6 +8,7 @@ User Guides CommandGuide/index DeveloperPolicy + GettingStartedVS FAQ Lexicon Packaging