summaryrefslogtreecommitdiff
path: root/utils/docker/scripts/build_install_llvm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/docker/scripts/build_install_llvm.sh')
-rwxr-xr-xutils/docker/scripts/build_install_llvm.sh73
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"