LLVM Development Helpers ======================== These files do almost all needed actions for developing LLVM/Clang. They create the initial source tree, build and test LLVM, coordinate branches across repositories, control Git/Svn upstream/origin repositories, etc. All scripts assume you use one of two development modes: 1. Read-Write Git-Svn Mode: In this mode, all repositories will be based on Git-Svn and setup that way, with the LLVM SVN repo as the source, the official LLVM Git repo as 'upstream', a Linaro git repository as 'origin' (populated at prepare phase). The origin repo is meant to be a back-up and share across Linaro developers, and since this is public, even external developers. We may use branches on those repos for Jenkins / Buildbot testing in the future. All commits will be done via Git-Svn (dcommit) and git-svn-commit will check if the repo is up-to-date before doing so. It'll also warn if you have more than one commit, or if you try to commit from master. The former can be forced, but not the latter. 2. Read-Only Git Mode: In this mode, the prepare script doesn't setup Git-Svn, and relies only on LLVM's public Git repo for read-only checkout. You can still have your own local branches, but they will be de-coupled from the Linaro git tree (unless you cherry-pick or rebase from them manually). This type of repo is meant for dev boards, benchmarks and stress tests. Environment Variables --------------------- In order to use these scripts, you will have to set the following environment variables: LLVM_ROOT : A path where the scripts can checkout the LLVM & related repositories and create build directories for them LLVM_GITRW : Git-Read-Write mode, which also means using Git-Svn or not. Values can be 'yes' or 'no'. LLVM_GITUSER : User for 'origin'. LLVM_SVNUSER : User for the upstream SVN repo (only if LLVM_GITRW = 'yes'). Based on these variables, the llvm-env script sets up the environment needed by the other helper scripts. You should usually source llvm-env before running any of the helper scripts. Dependencies ------------ In order to fully use these scripts, you're going to need to install a few dependencies. Since people use different Linux distributions, the scripts don't even try to install that automatically. The scripts themselves require Git-SVN and a version of Git that can handle worktrees (e.g. git 2.5.0, may work with earlier versions too). The requirements for LLVM and the related subprojects are listed in the upstream documentation: llvm: http://llvm.org/docs/GettingStarted.html#requirements clang: http://clang.llvm.org/get_started.html compiler-rt: http://compiler-rt.llvm.org/ lld: http://lld.llvm.org/getting_started.html lldb: http://lldb.llvm.org/build.html libcxx: http://libcxx.llvm.org/docs/BuildingLibcxx.html libcxxabi: http://libcxxabi.llvm.org/ test-suite: http://llvm.org/docs/TestingGuide.html#requirements lnt: http://llvm.org/docs/lnt/intro.html?highlight=requirements