X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=docs%2FGettingStartedVS.html;h=d6bf1b66839ad6ebdfb36bf345c859644caddae9;hb=d589099eec8d120b5a7227072c4e717856e2276f;hp=7934f1ea6894b40aad84d6636e64d814d537af9d;hpb=3c8dfcd53dc7e4b9f82e9e099d27d9d3ee70e6e3;p=oota-llvm.git diff --git a/docs/GettingStartedVS.html b/docs/GettingStartedVS.html index 7934f1ea689..d6bf1b66839 100644 --- a/docs/GettingStartedVS.html +++ b/docs/GettingStartedVS.html @@ -8,85 +8,129 @@
-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 generate assembly code which - is then assembled into an executable. You can indirectly create executables - by using the C back end.
+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.
-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.
+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.
-The LLVM test suite cannot be run on the Visual Studio port at this +
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. llvm-db does not build at this - time. bugpoint does build, but does not work. +
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.
+ page.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.
+ + +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.
+ +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.
+ +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.
+ +Here's the short story for getting up and running quickly with LLVM:
It is strongly encouraged that you get the latest version from CVS. Much -progress has been made since the 1.4 release.
- -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.
++% llvm-lit test +
Note that quite a few of these test will fail.
+ -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.
++% llvm-lit test/path/to/test +
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. - 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.
+ + +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.
+First, create a simple C file, name it 'hello.c':
+ ++#include <stdio.h> +int main() { + printf("hello world\n"); + return 0; +} +
Next, compile the C file into a LLVM bitcode file:
+ ++% clang -c hello.c -emit-llvm -o hello.bc +
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:
- -- -
-
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 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. - -
- #include <stdio.h> - int main() { - printf("hello world\n"); - return 0; - } -
Next, compile the C file into a LLVM bytecode file:
-% llvm-gcc -c hello.c -emit-llvm -o hello.bc
- -This will create the result file hello.bc which is the LLVM - bytecode 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. Important: - transfer as a binary file!
The -o hello.exe is required because clang currently outputs + a.out when neither -o nor -c are given.
Run the program using the just-in-time compiler:
- -% 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.
++% lli hello.bc ++
Use the llvm-dis utility to take a look at the LLVM assembly code:
-% llvm-dis < hello.bc | more
+% llvm-dis < hello.bc | more ++
Compile the program to C using the LLC code generator:
+Compile the program to object code using the LLC code generator:
-% llc -march=c hello.bc
+% llc -filetype=obj hello.bc ++
Compile to binary using Microsoft C:
+Link to binary using Microsoft link:
-% cl hello.cbe.c
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. Currently, it - doesn't even work for trivial C programs such as the one above.
++% link hello.obj -defaultlib:libcmt ++
Execute the native code program:
-% hello.cbe.exe
+% hello.exe ++
If you are having problems building or using LLVM, or if you have any other general questions about LLVM, please consult the Frequently @@ -319,12 +333,12 @@ Asked Questions page.
This document is just an introduction to how to use LLVM to do some simple things... there are many more interesting and complicated things @@ -335,8 +349,6 @@ out: