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 | |
Diana Picus | 72189fd | 2016-05-23 19:32:46 +0300 | [diff] [blame] | 37 | In order to use these scripts, you will have to set the following environment |
| 38 | variables: |
Renato Golin | 94cc104 | 2016-04-26 11:02:23 +0100 | [diff] [blame] | 39 | |
Diana Picus | 72189fd | 2016-05-23 19:32:46 +0300 | [diff] [blame] | 40 | LLVM_ROOT : A path where the scripts can checkout the LLVM & related |
| 41 | repositories and create build directories for them |
| 42 | LLVM_GITRW : Git-Read-Write mode, which also means using Git-Svn or not. |
| 43 | Values can be 'yes' or 'no'. |
| 44 | LLVM_GITUSER : User for 'origin'. |
| 45 | LLVM_SVNUSER : User for the upstream SVN repo (only if LLVM_GITRW = 'yes'). |
| 46 | |
| 47 | Based on these variables, the llvm-env script sets up the environment needed by |
| 48 | the other helper scripts. You should usually source llvm-env before running any |
| 49 | of the helper scripts. |
Renato Golin | 94cc104 | 2016-04-26 11:02:23 +0100 | [diff] [blame] | 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 |
Diana Picus | 72189fd | 2016-05-23 19:32:46 +0300 | [diff] [blame] | 56 | don't even try to install that automatically. |
Renato Golin | 94cc104 | 2016-04-26 11:02:23 +0100 | [diff] [blame] | 57 | |
Diana Picus | 72189fd | 2016-05-23 19:32:46 +0300 | [diff] [blame] | 58 | The scripts themselves require Git-SVN and a version of Git that can handle |
| 59 | worktrees (e.g. git 2.5.0, may work with earlier versions too). |
| 60 | |
| 61 | The requirements for LLVM and the related subprojects are listed in the upstream |
| 62 | documentation: |
| 63 | llvm: http://llvm.org/docs/GettingStarted.html#requirements |
| 64 | clang: http://clang.llvm.org/get_started.html |
| 65 | compiler-rt: http://compiler-rt.llvm.org/ |
| 66 | lld: http://lld.llvm.org/getting_started.html |
| 67 | lldb: http://lldb.llvm.org/build.html |
| 68 | libcxx: http://libcxx.llvm.org/docs/BuildingLibcxx.html |
| 69 | libcxxabi: http://libcxxabi.llvm.org/ |
| 70 | test-suite: http://llvm.org/docs/TestingGuide.html#requirements |
| 71 | lnt: http://llvm.org/docs/lnt/intro.html?highlight=requirements |
Renato Golin | 94cc104 | 2016-04-26 11:02:23 +0100 | [diff] [blame] | 72 | |