|  | #!/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 |