summaryrefslogtreecommitdiffstats
path: root/tools/clang
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-18 22:08:56 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-18 22:08:56 +0000
commit937f5f184036b3cd4d1500c6edd22db6426f3506 (patch)
tree855ef4cc82e4088845a6371156b3f39c558dbee9 /tools/clang
parentc79b29993fbe0299a69cacce481ec42fbe1e432e (diff)
downloadchromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.zip
chromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.tar.gz
chromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.tar.bz2
Make the clang update script really fast if the right revision's already there.
This way, people can add it to their DEPS hooks without going crazy. BUG=none TEST=none TBR=mark (commit-bot please accept "LG") Review URL: http://codereview.chromium.org/7625002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/clang')
-rwxr-xr-xtools/clang/scripts/update.sh38
1 files changed, 27 insertions, 11 deletions
diff --git a/tools/clang/scripts/update.sh b/tools/clang/scripts/update.sh
index ff1c151..352eff1 100755
--- a/tools/clang/scripts/update.sh
+++ b/tools/clang/scripts/update.sh
@@ -6,9 +6,11 @@
# This script will check out llvm and clang into third_party/llvm and build it.
THIS_DIR="$(dirname "${0}")"
-LLVM_DIR="${THIS_DIR}"/../../../third_party/llvm
-CLANG_DIR="${LLVM_DIR}"/tools/clang
-DEPS_FILE="${THIS_DIR}"/../../../DEPS
+LLVM_DIR="${THIS_DIR}/../../../third_party/llvm"
+LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build"
+CLANG_DIR="${LLVM_DIR}/tools/clang"
+DEPS_FILE="${THIS_DIR}/../../../DEPS"
+STAMP_FILE="${LLVM_BUILD_DIR}/cr_build_revision"
# ${A:-a} returns $A if it's set, a else.
LLVM_REPO_URL=${LLVM_URL:-http://llvm.org/svn/llvm-project}
@@ -21,18 +23,29 @@ set -e
# DEPS if they just want to give clang a try.
CLANG_REVISION=$(grep 'clang_revision":' "${DEPS_FILE}" | egrep -o [[:digit:]]+)
+# Check if there's anything to be done, exit early if not.
+if [ -f "${STAMP_FILE}" ]; then
+ PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}")
+ if [ "${PREVIOUSLY_BUILT_REVISON}" = "${CLANG_REVISION}" ]; then
+ echo "Clang already at ${CLANG_REVISION}"
+ exit 0
+ fi
+fi
+# To always force a new build if someone interrupts their build half way.
+rm -f "${STAMP_FILE}"
+
if grep -q 'src/third_party/llvm":' "${DEPS_FILE}"; then
echo LLVM pulled in through DEPS, skipping LLVM update step
else
echo Getting LLVM r"${CLANG_REVISION}" in "${LLVM_DIR}"
- svn co --force "${LLVM_REPO_URL}"/llvm/trunk@"${CLANG_REVISION}" "${LLVM_DIR}"
+ svn co --force "${LLVM_REPO_URL}/llvm/trunk@${CLANG_REVISION}" "${LLVM_DIR}"
fi
if grep -q 'src/third_party/llvm/tools/clang":' "${DEPS_FILE}"; then
echo clang pulled in through DEPS, skipping clang update step
else
echo Getting clang r"${CLANG_REVISION}" in "${CLANG_DIR}"
- svn co --force "${LLVM_REPO_URL}"/cfe/trunk@"${CLANG_REVISION}" "${CLANG_DIR}"
+ svn co --force "${LLVM_REPO_URL}/cfe/trunk@${CLANG_REVISION}" "${CLANG_DIR}"
fi
# Echo all commands.
@@ -41,8 +54,8 @@ set -x
# Build clang (in a separate directory).
# The clang bots have this path hardcoded in built/scripts/slave/compile.py,
# so if you change it you also need to change these links.
-mkdir -p "${LLVM_DIR}"/../llvm-build
-cd "${LLVM_DIR}"/../llvm-build
+mkdir -p "${LLVM_BUILD_DIR}"
+cd "${LLVM_BUILD_DIR}"
if [ ! -f ./config.status ]; then
../llvm/configure \
--enable-optimized \
@@ -62,12 +75,15 @@ cd -
# Build plugin.
# Copy it into the clang tree and use clang's build system to compile the
# plugin.
-PLUGIN_SRC_DIR="${THIS_DIR}"/../plugins
-PLUGIN_DST_DIR="${LLVM_DIR}"/../llvm/tools/clang/tools/chrome-plugin
-PLUGIN_BUILD_DIR="${LLVM_DIR}"/../llvm-build/tools/clang/tools/chrome-plugin
+PLUGIN_SRC_DIR="${THIS_DIR}/../plugins"
+PLUGIN_DST_DIR="${LLVM_DIR}/tools/clang/tools/chrome-plugin"
+PLUGIN_BUILD_DIR="${LLVM_BUILD_DIR}/tools/clang/tools/chrome-plugin"
rm -rf "${PLUGIN_DST_DIR}"
cp -R "${PLUGIN_SRC_DIR}" "${PLUGIN_DST_DIR}"
rm -rf "${PLUGIN_BUILD_DIR}"
mkdir -p "${PLUGIN_BUILD_DIR}"
-cp "${PLUGIN_SRC_DIR}"/Makefile "${PLUGIN_BUILD_DIR}"
+cp "${PLUGIN_SRC_DIR}/Makefile" "${PLUGIN_BUILD_DIR}"
make -j"${NUM_JOBS}" -C "${PLUGIN_BUILD_DIR}"
+
+# After everything is done, log success for this revision.
+echo "${CLANG_REVISION}" > "${STAMP_FILE}"