X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FGettingStarted.html;h=30de5b40a506b1edfb9609d2f0b6775a270c8221;hb=f01f31eceb7134eef4965ba996cd5bffc06cfdaf;hp=e57defd27ca888bc1acae802678e0ecf4531e331;hpb=201ddef2eaf2b9391b7cd1ae5de361b93c8c3ef7;p=oota-llvm.git diff --git a/docs/GettingStarted.html b/docs/GettingStarted.html index e57defd27ca..30de5b40a50 100644 --- a/docs/GettingStarted.html +++ b/docs/GettingStarted.html @@ -111,71 +111,53 @@ and performance.
Specify for directory the full pathname of where you + want the LLVM tools and libraries to be installed (default + /usr/local).
Specify the full pathname of where the LLVM GCC frontend is - installed.
Optionally, specify for directory the full pathname of the + C/C++ front end installation to use with this LLVM configuration. If + not specified, the PATH will be searched.
Enable the SPEC2000 benchmarks for testing. The SPEC2000 benchmarks should be available in @@ -185,7 +167,6 @@ and performance.
-Notes:
-1 Code generation supported for Pentium processors and up
-2 Code generation supported for 32-bit ABI only
-3 No native code generation
-4 Build is not complete: one or more tools don't link
-5 The GCC-based C/C++ frontend does not build
-
Notes:
+ +Note that you will need about 1-3 GB of space for a full LLVM build in Debug -mode, depending on the system (because of all the debug info), and the libraries -appear in more than one of the tools that get linked, so there is some -duplication. If you do not need many of the tools and you are space-conscious, +mode, depending on the system (it is so large because of all the debugging +information and the fact that the libraries are statically linked into multiple +tools). If you do not need many of the tools and you are space-conscious, you can disable them individually in llvm/tools/Makefile. The Release build requires considerably less space.
@@ -329,7 +351,13 @@ href="CFEBuildInstrs.html">try to compile it on your platform.Notes:
+Notes:
+Additionally, your compilation host is expected to have the usual plethora of Unix utilities. Specifically:
LLVM is very demanding of the host C++ compiler, and as such tends to expose
bugs in the compiler. In particular, several versions of GCC crash when trying
to compile LLVM. We routinely use GCC 3.3.3 and GCC 3.4.0 and have had success
-with them. Other versions of GCC will probably work as well. GCC versions listed
+with them (however, see below). Other versions of GCC will probably
+work as well. GCC versions listed
here are known to not work. If you are using one of these versions, please try
to upgrade your GCC to something more recent. If you run into a problem with a
version of GCC not listed here, please let
@@ -475,6 +505,16 @@ problems in the STL that effectively prevent it from compiling LLVM.
GCC 3.3.2: This version of GCC suffered from a serious bug which causes it to crash in
the "convert_from_eh_region_ranges_1" GCC function. Cygwin GCC 3.3.3: The version of GCC 3.3.3 commonly shipped with
+ Cygwin does not work. Please upgrade
+ to a newer version if possible. SuSE GCC 3.3.3: The version of GCC 3.3.3 shipped with SuSE 9.1 (and
+ possibly others) does not compile LLVM correctly (it appears that exception
+ handling is broken in some cases). Please download the FSF 3.3.3 or upgrade
+ to a newer version of GCC. IA-64 GCC 4.0.0: The IA-64 version of GCC 4.0.0 is known to
+ miscompile LLVM.
For the pre-built GCC front end binaries, the LLVMGCCDIR is cfrontend/platform/llvm-gcc. @@ -542,23 +582,17 @@ All these paths are absolute:
-In order to compile and use LLVM, you will need to set some environment -variables. There are also some shell aliases which you may find useful. -You can set these on the command line, or better yet, set them in your -.cshrc or .profile. +In order to compile and use LLVM, you may need to set some environment +variables.
- -
The files are as follows: +
The files are as follows, with x.y marking the version number:
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:
+labels:If you would like to get the GCC front end source code, you can also get it -from the CVS repository:
+If you would like to get the GCC 3.4 front end source code, you can also get it from the CVS repository:
cvs -z3 -d :pserver:anon@llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm-gcc @@ -662,22 +698,6 @@ instructions to successfully build the LLVM GCC front-end. - -- LLVM CVS Mirrors -- -- --If the main CVS server is overloaded or inaccessible, you can try one of -these user-hosted mirrors:
- - -Install the GCC Front End @@ -751,19 +771,27 @@ script to configure the build system:@@ -912,6 +945,11 @@ declaring variables on the command line. The following are some examples: Perform a Release (Optimized) build.The following options can be used to set or enable LLVM specific options:
-
- --with-llvmgccdir=LLVMGCCDIR
-- - Path to the location where the LLVM GCC front end binaries and - associated libraries were installed. This must be specified as an - absolute pathname. - -
+- --with-llvmgccdir
+- Path to the LLVM C/C++ FrontEnd to be used with this LLVM configuration. + The value of this option should specify the full pathname of the C/C++ Front + End to be used. If this option is not provided, the PATH will be searched for + a program named llvm-gcc and the C/C++ FrontEnd install directory will + be inferred from the path found. If the option is not given, and no llvm-gcc + can be found in the path then a warning will be produced by + configure indicating this situation. LLVM may still be built with + the tools-only target but attempting to build the runtime libraries + will fail as these libraries require llvm-gcc and llvm-g++. See + Install the GCC Front End for details on installing + the C/C++ Front End. See + Bootstrapping the LLVM C/C++ Front-End + for details on building the C/C++ Front End.
- --with-tclinclude
-- Path to the tcl include directory under which the tclsh can be +
- Path to the tcl include directory under which tclsh can be found. Use this if you have multiple tcl installations on your machine and you want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the dejagnu based test suite in llvm/test. If you don't specify this - option, the LLVM configure script will search for tcl 8.4 and 8.3 releases. + option, the LLVM configure script will search for the tcl 8.4 and 8.3 + releases.
- --enable-optimized
@@ -773,6 +801,11 @@ script to configure the build system: unoptimized build (also known as a debug build). +- --enable-debug-runtime
+- + Enables debug symbols in the runtime libraries. The default is to strip + debug symbols from the runtime libraries. +
- --enable-jit
- Compile the Just In Time (JIT) compiler functionality. This is not @@ -781,6 +814,16 @@ script to configure the build system: to explicitly enable it if you want it.
+- --enable-targets=target-option
+- Controls which targets will be built and linked into llc. The default + value for target_options is "all" which builds and links all + available targets. The value "host-only" can be specified to build only a + native compiler (no cross-compiler targets available). The "native" target is + selected as the target of the build host. You can also specify a comma + separated list of target names that you want available in llc. The target + names use all lower case. The current set of targets is:
+ alpha, ia64, powerpc, skeleton, sparc, x86. +- --enable-doxygen
- Look for the doxygen program and enable construction of doxygen based documentation from the source code. This is disabled by default because @@ -802,16 +845,6 @@ script to configure the build system:
-
In addition to running configure, you must set the -LLVM_LIB_SEARCH_PATH environment variable in your startup shell -scripts. This environment variable is used to locate "system" libraries like -"-lc" and "-lm" when linking. This variable should be set to -the absolute path of the lib subdirectory of the GCC front -end, or LLVMGCCDIR/lib. For example, one might set -LLVM_LIB_SEARCH_PATH to -/home/vadve/lattner/local/x86/llvm-gcc/lib for the x86 -version of the GCC front end on our research machines.
-+
+
-If you're running on a linux system that supports the " binfmt_misc" module, and you have root access on the system, you can set your system up to execute LLVM bytecode files directly. To do this, use commands like this (the first command may not be required if you are already using the module):
+$ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc - $ echo ':llvm:M::llvm::/path/to/lli:' > /proc/sys/fs/binfmt_misc/register + $ echo ':llvm:M::llvm::/path/to/lli:' > /proc/sys/fs/binfmt_misc/register $ chmod u+x hello.bc (if needed) $ ./hello.bc+
This allows you to execute LLVM bytecode files directly. Thanks to Jack @@ -1035,7 +1075,7 @@ Cummings for pointing this out!
One useful source of information about the LLVM source base is the LLVM doxygen documentation available at http://llvm.cs.uiuc.edu/doxygen/. +href="http://llvm.org/doxygen/">http://llvm.org/doxygen/. The following is a brief introduction to code layout:
- gccas
-- This tool is invoked by the llvmgcc frontend as the +
- This tool is invoked by the llvm-gcc frontend as the "assembler" part of the compiler. This tool actually assembles LLVM assembly to LLVM bytecode, performs a variety of optimizations, and outputs LLVM bytecode. Thus when you invoke - llvmgcc -c x.c -o x.o, you are causing gccas to be + llvm-gcc -c x.c -o x.o, you are causing gccas to be run, which writes the x.o file (which is an LLVM bytecode file that can be disassembled or manipulated just like any other bytecode file). The command line interface to gccas is designed to be @@ -1314,11 +1352,6 @@ of the utilities are actually required as part of the build process because they are code generators for parts of LLVM infrastructure.
-
- Burg/
- Burg is an instruction selector - generator -- it builds trees on which it then performs pattern-matching to - select instructions according to the patterns the user has specified. Burg - is currently used in the Sparc V9 backend.
-
- codegen-diff
- codegen-diff is a script that finds differences between code that LLC generates and code that LLI generates. This is a useful tool if you are debugging one of them, @@ -1364,7 +1397,7 @@ are code generators for parts of LLVM infrastructure. NightlyTestTemplate.html
- These files are used in a cron script to generate nightly status reports of the functionality of tools, and the results can be seen by following the appropriate link on - the LLVM homepage.
+ the LLVM homepage.
- TableGen/
- The TableGen directory contains the tool used to generate register descriptions, instruction set @@ -1409,7 +1442,7 @@ are code generators for parts of LLVM infrastructure.
Next, compile the C file into a LLVM bytecode file:
-% llvmgcc hello.c -o hello
+% 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.
@@ -1483,9 +1516,9 @@ if you want to write something up!). For more information about LLVM, check out: