X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FGettingStartedVS.html;h=a09559ed8e6263f5f267744b138b38bac627624c;hb=6fa1c051dc515b6fd1f9a26ac12fed985469bff5;hp=de0b1fbe3d42dfb87b506e198a85964855422d7b;hpb=7a4f03dda74ca8d71cd8985edad5362c66f23cdf;p=oota-llvm.git diff --git a/docs/GettingStartedVS.html b/docs/GettingStartedVS.html index de0b1fbe3d4..a09559ed8e6 100644 --- a/docs/GettingStartedVS.html +++ b/docs/GettingStartedVS.html @@ -24,8 +24,6 @@
  • Getting Started with LLVM
    1. Terminology and Notation -
    2. Unpacking the LLVM Archives -
    3. Checkout LLVM from CVS
    4. The Location of LLVM Object Files
  • @@ -36,7 +34,7 @@

    Written by: - Jeff Cohen, + Jeff Cohen

    @@ -52,15 +50,17 @@

    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.

    + functional, but it is currently not possible to generate assembly code which + is then assembled into an executable. You can indirectly create executables + 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 bitcode 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.

    @@ -86,7 +86,7 @@
    1. Read the documentation.
    2. -
    3. Read the documentation.
    4. +
    5. Seriously, read the documentation.
    6. Remember that you were warned twice about reading the documentation.
    7. Get the Source Code @@ -95,20 +95,17 @@
      1. cd where-you-want-llvm-to-live
      2. gunzip --stdout llvm-version.tar.gz | tar -xvf - - or use WinZip +       or use WinZip
      3. cd llvm
    8. -
    9. With anonymous CVS access (or use a mirror): +
    10. With anonymous Subversion access:
      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. svn co http://llvm.org/svn/llvm-project/llvm-top/trunk llvm-top +
      9. +
      10. make checkout MODULE=llvm
      11. cd llvm
      12. -
      13. cvs up -P -d
    11. @@ -128,6 +125,9 @@
    +

    It is strongly encouraged that you get the latest version from Subversion as +changes are continually making the VS support better.

    + @@ -164,15 +164,17 @@

    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.

    + beta, there are no guarantees and there is no support for it at this time. + It has been reported that VC++ Express also works.

    + +

    If you plan to modify any .y or .l files, you will need to have bison + and/or flex installed where Visual Studio can find them. Otherwise, you do + not need them and the pre-generated files that come with the source tree + will be used.

    -

    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.

    +

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

    @@ -205,99 +207,17 @@ 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 -
    - -
    +
    SRC_ROOT
    +

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

    -

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

    - -
    - 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 @@ -307,12 +227,12 @@ Inc.

    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. + 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. + search path just before SRC_ROOT/include.

    @@ -325,55 +245,83 @@ Inc.
      -
    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.

      +
    4. First, create a simple C file, name it 'hello.c':

      + +
      +
      +#include <stdio.h>
      +int main() {
      +  printf("hello world\n");
      +  return 0;
      +}
      +
    5. + +
    6. Next, compile the C file into a LLVM bitcode file:

      + +
      +
      +% llvm-gcc -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.

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

    7. + Unix system and transfer hello.bc to Windows. Important: + transfer as a binary file!

      -
    8. Run the program. To make sure the program ran, execute the - following command:

      +
    9. Run the program using the just-in-time compiler:

      -

      % lli hello.bc

    10. +
      +
      +% lli hello.bc
      +
      +
      + +

      Note: this will only work for trivial C programs. Non-trivial programs + (and any C++ program) will have dependencies on the GCC runtime that + won't be satisfied by the Microsoft runtime libraries.

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

      -

      % llvm-dis < hello.bc | less

    12. +
      +
      +% llvm-dis < hello.bc | more
      +
      +
      -
    13. Compile the program to native assembly using the LLC code - generator:

      +
    14. Compile the program to C using the LLC code generator:

      -

      % llc hello.bc -o hello.s

      +
      +
      +% llc -march=c hello.bc
      +
      +
    15. -
    16. Assemble the native assembly language file into a program:

      +
    17. Compile to binary using Microsoft C:

      -

      Not currently possible, but eventually will use NASMW.

      +
      +
      +% cl hello.cbe.c
      +
      +
      -
    18. Execute the native code program:

      +

      Note: this will only work for trivial C programs. Non-trivial programs + (and any C++ program) will have dependencies on the GCC runtime that + won't be satisfied by the Microsoft runtime libraries.

    19. -

      % ./hello.native

      +
    20. Execute the native code program:

      +
      +
      +% hello.cbe.exe
      +
      +
    @@ -407,10 +355,10 @@ if you want to write something up!). For more information about LLVM, check out:

    @@ -424,9 +372,8 @@ out:

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