Index: tools/roll_clang_format |
diff --git a/tools/roll_clang_format b/tools/roll_clang_format |
new file mode 100755 |
index 0000000000000000000000000000000000000000..09673ccb78b6a2dfdc09c4ca3f102fc3401fdf85 |
--- /dev/null |
+++ b/tools/roll_clang_format |
@@ -0,0 +1,76 @@ |
+#!/bin/bash |
+ |
+if [[ $# -eq 0 ]]; then |
+ echo >&2 "Usage: `basename $0` <clang_rev>" |
+ exit 1 |
+fi |
+ |
+set -e |
+set -x |
+ |
+clang_rev="$1" |
+echo "$clang_rev" | grep -q '^\d\d\d\d\d\d' |
+ |
+which -s cmake |
+which -s ninja |
+which -s svn |
+ |
+cmake --version | grep -q 'cmake version 3.\d.\d' |
+ |
+compiler_dir=$(/bin/ls -d $HOME/chrom*/src/third_party/llvm-build/Release+Asserts/bin) |
+ |
+tmp=$(mktemp -d) |
+ |
+clean_up() { |
+ set -x |
+ rm -rf "$tmp" |
+} |
+ |
+trap "clean_up" SIGHUP SIGINT SIGTRAP |
+ |
+mkdir "$tmp/llvm" "$tmp/llvm-build" |
+ |
+llvm_project="http://llvm.org/svn/llvm-project" |
+svn co -q "$llvm_project/llvm/trunk@$clang_rev" "$tmp/llvm" |
+svn co -q "$llvm_project/cfe/trunk@$clang_rev" "$tmp/llvm/tools/clang" |
+ |
+llvm_build="$tmp/llvm-build" |
+pushd "$llvm_build" >/dev/null |
+MACOSX_DEPLOYMENT_TARGET=10.9 cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ |
+ -DLLVM_ENABLE_ASSERTIONS=NO -DLLVM_ENABLE_THREADS=NO \ |
+ -DCMAKE_C_COMPILER="$compiler_dir/clang" \ |
+ -DCMAKE_CXX_COMPILER="$compiler_dir/clang++" \ |
+ "$tmp/llvm/" >/dev/null |
+popd >/dev/null |
+ |
+ninja -C "$llvm_build" clang-format >/dev/null |
+binary="$llvm_build/bin/clang-format" |
+strip "$binary" |
+ |
+if [[ `uname` == "Darwin" ]]; then |
+ otool -l buildtools/mac/clang-format | grep -A2 'MIN_MACOSX' | tail -1 | grep -q 'version 10.9' |
+fi |
+ |
+set +e |
+set +x |
+ |
+which -s upload_to_google_storage.py |
+if [[ $? -ne 0 ]]; then |
+ echo "Couldn't find upload_to_google_storage.py, ignoring upload" |
+else |
+ read -p "Upload to google storage? [y/n] " -n 1 -r |
+ echo |
+ if [[ $REPLY =~ ^[Yy]$ ]]; then |
+ set -e |
+ set -x |
+ upload_to_google_storage.py -b chromium-clang-format "$binary" >/dev/null |
+ echo -n "SHA1: " && cat "$binary.sha1" |
+ fi |
+fi |
+ |
+set +x |
+read -p "Delete $tmp? [y/n] " -n 1 -r |
+echo |
+if [[ $REPLY =~ ^[Yy]$ ]]; then |
+ clean_up |
+fi |