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