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