| README FOR llvm-top MODULE |
| ========================== |
| |
| You are reading the README for the llvm-top module of the LLVM project. This |
| module should be the first thing you check out when accessing the LLVM |
| project's subversion repository. From here all other modules are accessible |
| via small scripts. |
| |
| You should check this module out with the following subversion command: |
| |
| svn co http://llvm.org/svn/llvm-project/llvm-top/trunk llvm-top |
| |
| Alternatively, if you have commit access, use this form: |
| |
| svn co https://username@llvm.org/svn/llvm-project/llvm-top/trunk llvm-top |
| |
| Once you've checked out llvm-top, you can then check out a module (and all its |
| dependencies) with the "get" script located here. For example: |
| |
| ./get llvm-gcc-4.2 |
| |
| which will check out both llvm and llvm-gcc-4.2 because the latter depends on |
| the former. You can check out any number of modules using the "get" script, |
| for example, like this: |
| |
| ./get llvm-gcc-4.2 test-suite stacker |
| |
| |
| In addition to checking out software, there are several more scripts in |
| llvm-top. In all the scripts, the dependency checking behavior is the same as |
| for the get script. That is, the script operates on the modules you ask for as |
| well as all the modules they depend on. |
| |
| The scripts available are: |
| |
| get - check out modules and their dependencies from subversion |
| info - get subversion information about one or more modules |
| update - update one or more modules |
| options - specify options once that are "sticky" for all scripts. |
| |
| build - configure, compile and link one or more modules |
| install - install one or more modules (presumes build already done) |
| clean - clean (remove build products) one or more modules |
| |
| |
| The first four scripts just work with subversion or llvm-top itself. The last |
| three scripts implement an easier method for building, isntalling and cleaning |
| the LLVM modules themselves. However, these three do not dictate how to build, |
| install or clean the modules; that is up to the modules themselves. The only |
| thing these scripts depend on is a file named ModuleInfo.txt located in each |
| module's top directory. This file can contain the following definitions: |
| |
| DepModule: - the list of modules this module depends on |
| BuildCmd: - a command to build (and configure) the module |
| InstallCmd: - a command to install the module |
| CleanCmd: - a command to clean the module |
| |
| The scripts in llvm-top determine dependencies based on the DepModule lines of |
| the various modules. This is how it knows which modules need to be checked out |
| and what order to build them in. The three definitions ending in "Cmd" specify |
| commands to be run. They are used by the build, install and clean scripts, |
| respectively. Modules are free to specify whatever command is appropriate to |
| build, install or clean that module. |
| |
| Each of these scripts uses a common library of shell functions (library.sh) to |
| ensure their function is regular. In particular, they all accept the same set |
| of arguments. The arguments recognized are listed below in the order they |
| are recognized by the scripts: |
| |
| VERBOSE={verbosity_level} |
| This controls how verbose the scripts are in their output. The default |
| level is 0 which produces no output unless there's an error. At level 1 |
| you'll get basic confirmation of the action taken. At level 2 you'll get |
| a dialogue of the individual steps taken by the script and verbose |
| output from anything it runs. At level 3 you'll get full diagnostics |
| messages (generally only useful for implementers of these scripts). |
| |
| PREFIX=/path/to/install/directory |
| This is the prefix directory for installation. It is the expected final |
| location for installation of the software. |
| |
| DESTDIR=/path/to/destination/directory |
| Specify the directory above where the install prefix will install. This |
| is handy for package maintainers. You can set PREFIX=/usr/bin but then |
| you don't actually want it installed there! So, specify DESTDIR=/tmp and |
| it would actually get installed in /tmp/usr/bin. |
| |
| LLVM_TOP=/path/to/llvm-top |
| This allows you to override the location of the llvm-top directory. |
| |
| -* |
| --* |
| *=* |
| Any options matching these patterns are collected and passed down to the |
| build, install or clean commands. |
| |
| all |
| This is equivalent to specifying all modules in the LLVM subversion |
| repository. Careful! All the scripts will check out EVERYTHING in the |
| repository. |
| |
| [a-zA-Z]* |
| Any option not matching something above and starting with a letter |
| specifies a module name to work on. |
| |
| * |
| Anything else is an error. |
| |
| All the scripts need some (minimal) set of modules to work on. You have three |
| choices on the command line: |
| |
| 1. Don't specify any modules - the script will work with the currently |
| checked out set of modules. |
| |
| 2. Specify the modules you want, by name - generally you only have to |
| specify the one or two at the top of the dependency graph. |
| |
| 3. Specify "all" - all modules will be checked out (careful!) |
| |
| So, for example, consider: |
| |
| ./build llvm-gcc-4.2 ENABLE_OPTIMIZED=1 PREFIX=/my/install/dir VERBOSE=1 |
| |
| As you might guess, this will do the following: |
| |
| 1. Check out the llvm-gcc-4.2 module |
| 2. Check out the core module because llvm-gcc-4.2 depends on core |
| 3. Check out the support module because core depends on support |
| 4. Build the support module in optimized mode and configure it to install |
| into /my/install/dir |
| 5. Build the core module the same way. |
| 6. Build the llvm-gcc-4.2 module the same way. |
| 7. Do all of the above with some simple progress messages. |
| |
| The modules available are: |
| |
| llvm-top - This directory |
| sample - A sample module you can use as a template for your own |
| support - The support libraries, makefile system, etc. |
| core - The core llvm software (currently "llvm") |
| llvm-gcc-4.0 - The C/C++/Obj-C front end for llvm, based on GCC 4.0 |
| llvm-gcc-4.2 - The C/C++/Obj-C front end for llvm, based on GCC 4.2 |
| cfe - The new C/C++/Obj-C front end for llvm |
| test-suite - The llvm test suite |
| stacker - The stacker front end (a 'Forth-like' language) |
| hlvm - High Level Virtual Machine (nascent) |
| java - Java Front End (unfinished, out of date) |
| poolalloc - The pooled allocator from Chris Lattner's thesis |
| |
| ----------------------------------------------------------------------------- |
| |
| Some Other Useful URLS |
| ====================== |
| |
| Please use the following URLs to discover more about the LLVM project and its |
| software modules. You can copy and paste these URLs into your browser. |
| |
| * http://llvm.org/ |
| Main web site for the project with access to each module's documentation. |
| |
| * http://llvm.org/docs/ (http://llvm.org/svn/llvm-project/llvm/trunk/docs/) |
| Documentation for the main llvm sub-project. |
| |
| * http://llvm.org/svn/ |
| Browse the latest revision of the source code in plain text (no frills). |
| |
| * http://llvm.org/viewvc/llvm-project/ |
| Browse any revision of the source code with lots of frills provided by |
| ViewVC. |