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 --------------------- These scripts rely on three environment variables: LLVM_SRC : The path to the LLVM source directory. All other repos will be checked out relative to it in ($LLVM_SRC/../) and linked to the right place inside $LLVM_SRC. It is recommended that you set it to a place where all source dirs will be, and only those, for example ~/devel/llvm/src/llvm. LLVM_BLD : The path to the (out-of-tree) directory for the release+asserts build. It is recommended that you set it two levels down from the source dirs, so you can have multiple build directories (debug, no-asserts, lld, etc), example ~/devel/llvm/build/llvm. LLVM_GITRW : Git-Read-Write mode, which also means using Git-Svn or not. Values can be 'yes' or 'no'. 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 dependencies are: Scripts/Build: libjson-perl cmake ninja-build perl python2.7 ccache LLVM: libxml2-dev zlib1g-dev libtinfo-dev python-sphinx binutils-gold Test-Suite: python-virtualenv bison groff gawk