| #!/bin/sh -x | |
| # Usage: | |
| # build-lldb-llvm-clang <revision> [Debug|Release|BuildAndIntegration] | |
| # build-lldb-llvm-clang <llvm-revision> <clang-revision> [Debug|Release|BuildAndIntegration] | |
| LLVM_REVISION=$1 | |
| CLANG_REVISION=$2 | |
| LLVM_CONFIGURATION=$3 | |
| if [ "$LLVM_REVISION" = "" ]; then | |
| echo "Usage:\n build-lldb-llvm-clang <llvm-revision> [<clang-revision> Debug|Release||BuildAndIntegration]" | |
| exit 1 | |
| fi | |
| if [ "$CLANG_REVISION" = "" ]; then | |
| $CLANG_REVISION = $LLVM_REVISION | |
| fi | |
| # Checkout LLVM | |
| svn co -q -r $LLVM_REVISION http://llvm.org/svn/llvm-project/llvm/trunk llvm | |
| # change directory to "./llvm" | |
| cd llvm | |
| # Checkout Clang | |
| # change directory to "./llvm/tools" | |
| cd tools | |
| svn co -q -r $CLANG_REVISION http://llvm.org/svn/llvm-project/cfe/trunk clang | |
| # change directory to "./llvm" | |
| cd .. | |
| for patch_file in ../scripts/llvm.*.diff | |
| do | |
| echo "Applying patch from '$patch_file'" | |
| patch -p1 < "$patch_file" | |
| done | |
| # change directory to "./llvm/tools/clang" | |
| cd tools/clang | |
| for patch_file in ../../../scripts/clang.*.diff | |
| do | |
| echo "Applying patch from '$patch_file'" | |
| patch -p1 < "$patch_file" | |
| done | |
| # change directory to "./" | |
| cd ../../.. | |
| pwd | |
| if [ "$LLVM_CONFIGURATION" = "Debug" ]; then | |
| # Configure "Debug+Asserts" build | |
| mkdir llvm-debug | |
| cd llvm-debug | |
| ../llvm/configure --enable-targets=x86_64,arm | |
| make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm' | |
| make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1 | |
| elif [ "$LLVM_CONFIGURATION" = "Release" ]; then | |
| # Configure "Release" build | |
| mkdir llvm-release | |
| cd llvm-release | |
| ../llvm/configure --enable-targets=x86_64,arm --enable-optimized --disable-assertions | |
| make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm' | |
| make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1 | |
| elif [ "$LLVM_CONFIGURATION" = "BuildAndIntegration" ]; then | |
| # Don't configure or build for "BuildAndIntegration", this configuration | |
| # is a preparation step for a build submission | |
| # Remove all patches, and the llvm and clang "test" directories | |
| rm -rf ./scripts/*.diff ./llvm/test ./llvm/tools/clang/test | |
| else | |
| echo "checked out llvm (revision $LLVM_REVISION) and clang (revision $CLANG_REVISION)." | |
| exit 0 | |
| fi |