Renato Golin | 94cc104 | 2016-04-26 11:02:23 +0100 | [diff] [blame] | 1 | LLVM Development Helpers |
| 2 | ======================== |
| 3 | |
| 4 | These files do almost all needed actions for developing LLVM/Clang. They |
| 5 | create the initial source tree, build and test LLVM, coordinate branches |
| 6 | across repositories, control Git/Svn upstream/origin repositories, etc. |
| 7 | |
| 8 | All scripts assume you use one of two development modes: |
| 9 | |
| 10 | 1. Read-Write Git-Svn Mode: |
| 11 | |
| 12 | In this mode, all repositories will be based on Git-Svn and setup that way, |
| 13 | with the LLVM SVN repo as the source, the official LLVM Git repo as 'upstream', |
| 14 | a Linaro git repository as 'origin' (populated at prepare phase). |
| 15 | |
| 16 | The origin repo is meant to be a back-up and share across Linaro developers, |
| 17 | and since this is public, even external developers. We may use branches on |
| 18 | those repos for Jenkins / Buildbot testing in the future. |
| 19 | |
| 20 | All commits will be done via Git-Svn (dcommit) and git-svn-commit will check |
| 21 | if the repo is up-to-date before doing so. It'll also warn if you have more |
| 22 | than one commit, or if you try to commit from master. The former can be |
| 23 | forced, but not the latter. |
| 24 | |
| 25 | 2. Read-Only Git Mode: |
| 26 | |
| 27 | In this mode, the prepare script doesn't setup Git-Svn, and relies only on |
| 28 | LLVM's public Git repo for read-only checkout. You can still have your own |
| 29 | local branches, but they will be de-coupled from the Linaro git tree (unless |
| 30 | you cherry-pick or rebase from them manually). |
| 31 | |
| 32 | This type of repo is meant for dev boards, benchmarks and stress tests. |
| 33 | |
| 34 | Environment Variables |
| 35 | --------------------- |
| 36 | |
| 37 | These scripts rely on three environment variables: |
| 38 | |
| 39 | LLVM_SRC : The path to the LLVM source directory. All other repos will be |
| 40 | checked out relative to it in ($LLVM_SRC/../<project>) and linked |
| 41 | to the right place inside $LLVM_SRC. It is recommended that you |
| 42 | set it to a place where all source dirs will be, and only those, |
| 43 | for example ~/devel/llvm/src/llvm. |
| 44 | LLVM_BLD : The path to the (out-of-tree) directory for the release+asserts |
| 45 | build. It is recommended that you set it two levels down from the |
| 46 | source dirs, so you can have multiple build directories (debug, |
| 47 | no-asserts, lld, etc), example ~/devel/llvm/build/llvm. |
| 48 | LLVM_GITRW : Git-Read-Write mode, which also means using Git-Svn or not. |
| 49 | Values can be 'yes' or 'no'. |
| 50 | |
| 51 | Dependencies |
| 52 | ------------ |
| 53 | |
| 54 | In order to fully use these scripts, you're going to need to install a few |
| 55 | dependencies. Since people use different Linux distributions, the scripts |
| 56 | don't even try to install that automatically. The dependencies are: |
| 57 | |
| 58 | Scripts/Build: libjson-perl cmake ninja-build perl python2.7 ccache |
| 59 | LLVM: libxml2-dev zlib1g-dev libtinfo-dev python-sphinx binutils-gold |
| 60 | Test-Suite: python-virtualenv bison groff gawk |
| 61 | |