diff options
Diffstat (limited to 'utils/docker/scripts/build_install_llvm.sh')
| -rwxr-xr-x | utils/docker/scripts/build_install_llvm.sh | 73 |
1 files changed, 58 insertions, 15 deletions
diff --git a/utils/docker/scripts/build_install_llvm.sh b/utils/docker/scripts/build_install_llvm.sh index aef4e0cbca2c..79ce7e50efdc 100755 --- a/utils/docker/scripts/build_install_llvm.sh +++ b/utils/docker/scripts/build_install_llvm.sh @@ -11,7 +11,7 @@ set -e function show_usage() { - usage=$(cat << EOF + cat << EOF Usage: build_install_llvm.sh [options] -- [cmake-args] Checkout svn sources and run cmake with the specified arguments. Used @@ -37,8 +37,6 @@ Required options: At least one --install-target. All options after '--' are passed to CMake invocation. EOF -) - echo "$usage" } LLVM_SVN_REV="" @@ -48,6 +46,7 @@ CMAKE_INSTALL_TARGETS="" # We always checkout llvm LLVM_PROJECTS="llvm" CMAKE_LLVM_ENABLE_PROJECTS="" +CLANG_TOOLS_EXTRA_ENABLED=0 function contains_project() { local TARGET_PROJ="$1" @@ -60,6 +59,17 @@ function contains_project() { return 1 } +function append_project() { + local PROJ="$1" + + LLVM_PROJECTS="$LLVM_PROJECTS $PROJ" + if [ "$CMAKE_LLVM_ENABLE_PROJECTS" != "" ]; then + CMAKE_LLVM_ENABLE_PROJECTS="$CMAKE_LLVM_ENABLE_PROJECTS;$PROJ" + else + CMAKE_LLVM_ENABLE_PROJECTS="$PROJ" + fi +} + while [[ $# -gt 0 ]]; do case "$1" in -r|--revision) @@ -75,19 +85,27 @@ while [[ $# -gt 0 ]]; do -p|--llvm-project) shift PROJ="$1" + shift + if [ "$PROJ" == "cfe" ]; then PROJ="clang" fi - if ! contains_project "$PROJ" ; then - LLVM_PROJECTS="$LLVM_PROJECTS $PROJ" - if [ "$CMAKE_LLVM_ENABLE_PROJECTS" != "" ]; then - CMAKE_LLVM_ENABLE_PROJECTS="$CMAKE_LLVM_ENABLE_PROJECTS;" + + if [ "$PROJ" == "clang-tools-extra" ]; then + if [ $CLANG_TOOLS_EXTRA_ENABLED -ne 0 ]; then + echo "Project 'clang-tools-extra' is already enabled, ignoring extra occurences." + else + CLANG_TOOLS_EXTRA_ENABLED=1 fi - CMAKE_LLVM_ENABLE_PROJECTS="$CMAKE_LLVM_ENABLED_PROJECTS$PROJ" + + continue + fi + + if ! contains_project "$PROJ" ; then + append_project "$PROJ" else echo "Project '$PROJ' is already enabled, ignoring extra occurences." fi - shift ;; -i|--install-target) shift @@ -114,14 +132,25 @@ if [ "$CMAKE_INSTALL_TARGETS" == "" ]; then exit 1 fi +if [ $CLANG_TOOLS_EXTRA_ENABLED -ne 0 ]; then + if ! contains_project "clang"; then + echo "Project 'clang-tools-extra' was enabled without 'clang'." + echo "Adding 'clang' to a list of projects." + + append_project "clang" + fi +fi + if [ "$LLVM_BRANCH" == "" ]; then LLVM_BRANCH="trunk" fi -if [ "$LLVM_SVN_REVISION" != "" ]; then - SVN_REV_ARG="-r$LLVM_SVN_REVISION" +if [ "$LLVM_SVN_REV" != "" ]; then + SVN_REV_ARG="-r$LLVM_SVN_REV" + echo "Checking out svn revision r$LLVM_SVN_REV." else SVN_REV_ARG="" + echo "Checking out latest svn revision." fi CLANG_BUILD_DIR=/tmp/clang-build @@ -140,14 +169,28 @@ for LLVM_PROJECT in $LLVM_PROJECTS; do fi echo "Checking out https://llvm.org/svn/llvm-project/$SVN_PROJECT to $CLANG_BUILD_DIR/src/$LLVM_PROJECT" - # FIXME: --trust-server-cert is required to workaround 'SSL issuer is not - # trusted' error. Using https seems preferable to http either way, - # albeit this is not secure. - svn co -q $SVN_REV_ARG --trust-server-cert \ + svn co -q $SVN_REV_ARG \ "https://llvm.org/svn/llvm-project/$SVN_PROJECT/$LLVM_BRANCH" \ "$CLANG_BUILD_DIR/src/$LLVM_PROJECT" done +if [ $CLANG_TOOLS_EXTRA_ENABLED -ne 0 ]; then + echo "Checking out https://llvm.org/svn/llvm-project/clang-tools-extra to $CLANG_BUILD_DIR/src/clang/tools/extra" + svn co -q $SVN_REV_ARG \ + "https://llvm.org/svn/llvm-project/clang-tools-extra/$LLVM_BRANCH" \ + "$CLANG_BUILD_DIR/src/clang/tools/extra" +fi + +CHECKSUMS_FILE="/tmp/checksums/checksums.txt" + +if [ -f "$CHECKSUMS_FILE" ]; then + echo "Validating checksums for LLVM checkout..." + python "$(dirname $0)/llvm_checksum/llvm_checksum.py" -c "$CHECKSUMS_FILE" \ + --partial --multi_dir "$CLANG_BUILD_DIR/src" +else + echo "Skipping checksumming checks..." +fi + mkdir "$CLANG_BUILD_DIR/build" pushd "$CLANG_BUILD_DIR/build" |
