1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/webrtc/trunk/tools/clang/scripts/package.sh Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,87 @@ 1.4 +#!/bin/bash 1.5 +# Copyright (c) 2012 The Chromium Authors. All rights reserved. 1.6 +# Use of this source code is governed by a BSD-style license that can be 1.7 +# found in the LICENSE file. 1.8 + 1.9 +# This script will check out llvm and clang, and then package the results up 1.10 +# to a tgz file. 1.11 + 1.12 +THIS_DIR="$(dirname "${0}")" 1.13 +LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" 1.14 +LLVM_BOOTSTRAP_DIR="${THIS_DIR}/../../../third_party/llvm-bootstrap" 1.15 +LLVM_BUILD_DIR="${THIS_DIR}/../../../third_party/llvm-build" 1.16 +LLVM_BIN_DIR="${LLVM_BUILD_DIR}/Release+Asserts/bin" 1.17 +LLVM_LIB_DIR="${LLVM_BUILD_DIR}/Release+Asserts/lib" 1.18 + 1.19 +echo "Diff in llvm:" | tee buildlog.txt 1.20 +svn stat "${LLVM_DIR}" 2>&1 | tee -a buildlog.txt 1.21 +svn diff "${LLVM_DIR}" 2>&1 | tee -a buildlog.txt 1.22 +echo "Diff in llvm/tools/clang:" | tee -a buildlog.txt 1.23 +svn stat "${LLVM_DIR}/tools/clang" 2>&1 | tee -a buildlog.txt 1.24 +svn diff "${LLVM_DIR}/tools/clang" 2>&1 | tee -a buildlog.txt 1.25 +echo "Diff in llvm/projects/compiler-rt:" | tee -a buildlog.txt 1.26 +svn stat "${LLVM_DIR}/projects/compiler-rt" 2>&1 | tee -a buildlog.txt 1.27 +svn diff "${LLVM_DIR}/projects/compiler-rt" 2>&1 | tee -a buildlog.txt 1.28 + 1.29 +echo "Starting build" | tee -a buildlog.txt 1.30 + 1.31 +set -ex 1.32 + 1.33 +# Do a clobber build. 1.34 +rm -rf "${LLVM_BOOTSTRAP_DIR}" 1.35 +rm -rf "${LLVM_BUILD_DIR}" 1.36 +"${THIS_DIR}"/update.sh --run-tests --bootstrap --force-local-build 2>&1 | \ 1.37 + tee -a buildlog.txt 1.38 + 1.39 +R=$("${LLVM_BIN_DIR}/clang" --version | \ 1.40 + sed -ne 's/clang version .*(trunk \([0-9]*\))/\1/p') 1.41 + 1.42 +PDIR=clang-$R 1.43 +rm -rf $PDIR 1.44 +mkdir $PDIR 1.45 +mkdir $PDIR/bin 1.46 +mkdir $PDIR/lib 1.47 + 1.48 +# Copy buildlog over. 1.49 +cp buildlog.txt $PDIR/ 1.50 + 1.51 +# Copy clang into pdir, symlink clang++ to it. 1.52 +cp "${LLVM_BIN_DIR}/clang" $PDIR/bin/ 1.53 +(cd $PDIR/bin && ln -sf clang clang++ && cd -) 1.54 + 1.55 +# Copy plugins. Some of the dylibs are pretty big, so copy only the ones we 1.56 +# care about. 1.57 +if [ "$(uname -s)" = "Darwin" ]; then 1.58 + cp "${LLVM_LIB_DIR}/libFindBadConstructs.dylib" $PDIR/lib 1.59 +else 1.60 + cp "${LLVM_LIB_DIR}/libFindBadConstructs.so" $PDIR/lib 1.61 +fi 1.62 + 1.63 +# Copy built-in headers (lib/clang/3.2/include). 1.64 +# libcompiler-rt puts all kinds of libraries there too, but we want only ASan. 1.65 +if [ "$(uname -s)" = "Darwin" ]; then 1.66 + # Keep only Release+Asserts/lib/clang/3.2/lib/darwin/libclang_rt.asan_osx.a 1.67 + find "${LLVM_LIB_DIR}/clang" -type f -path '*lib/darwin*' | grep -v asan | \ 1.68 + xargs rm 1.69 +else 1.70 + # Keep only 1.71 + # Release+Asserts/lib/clang/3.2/lib/linux/libclang_rt.{asan,tsan}-x86_64.a 1.72 + # TODO(thakis): Make sure the 32bit version of ASan runtime is kept too once 1.73 + # that's built. TSan runtime exists only for 64 bits. 1.74 + find "${LLVM_LIB_DIR}/clang" -type f -path '*lib/linux*' | \ 1.75 + grep -v "asan\|tsan" | xargs rm 1.76 +fi 1.77 + 1.78 +cp -R "${LLVM_LIB_DIR}/clang" $PDIR/lib 1.79 + 1.80 +tar zcf $PDIR.tgz -C $PDIR bin lib buildlog.txt 1.81 + 1.82 +if [ "$(uname -s)" = "Darwin" ]; then 1.83 + PLATFORM=Mac 1.84 +else 1.85 + PLATFORM=Linux_x64 1.86 +fi 1.87 + 1.88 +echo To upload, run: 1.89 +echo gsutil cp -a public-read $PDIR.tgz \ 1.90 + gs://chromium-browser-clang/$PLATFORM/$PDIR.tgz