| OLD | NEW |
| 1 #!/usr/bin/env bash | 1 #!/usr/bin/env bash |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This script will check out llvm and clang into third_party/llvm and build it. | 6 # This script will check out llvm and clang into third_party/llvm and build it. |
| 7 | 7 |
| 8 # Do NOT CHANGE this if you don't know what you're doing -- see | 8 # Do NOT CHANGE this if you don't know what you're doing -- see |
| 9 # https://code.google.com/p/chromium/wiki/UpdatingClang | 9 # https://code.google.com/p/chromium/wiki/UpdatingClang |
| 10 # Reverting problematic clang rolls is safe, though. | 10 # Reverting problematic clang rolls is safe, though. |
| 11 CLANG_REVISION=233105 | 11 CLANG_REVISION=238013 |
| 12 | 12 |
| 13 # This is incremented when pushing a new build of Clang at the same revision. | 13 # This is incremented when pushing a new build of Clang at the same revision. |
| 14 CLANG_SUB_REVISION=2 | 14 CLANG_SUB_REVISION=3 |
| 15 | 15 |
| 16 PACKAGE_VERSION="${CLANG_REVISION}-${CLANG_SUB_REVISION}" | 16 PACKAGE_VERSION="${CLANG_REVISION}-${CLANG_SUB_REVISION}" |
| 17 | 17 |
| 18 THIS_DIR="$(dirname "${0}")" | 18 THIS_DIR="$(dirname "${0}")" |
| 19 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" | 19 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" |
| 20 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts" | 20 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts" |
| 21 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt" | 21 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt" |
| 22 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" | 22 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" |
| 23 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" | 23 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" |
| 24 CLANG_DIR="${LLVM_DIR}/tools/clang" | 24 CLANG_DIR="${LLVM_DIR}/tools/clang" |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 fi | 199 fi |
| 200 export PATH="${LLVM_BUILD_TOOLS_DIR}/cmake310/bin:${PATH}" | 200 export PATH="${LLVM_BUILD_TOOLS_DIR}/cmake310/bin:${PATH}" |
| 201 fi | 201 fi |
| 202 fi | 202 fi |
| 203 | 203 |
| 204 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}" | 204 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}" |
| 205 fi | 205 fi |
| 206 | 206 |
| 207 if [[ -n "$if_needed" ]]; then | 207 if [[ -n "$if_needed" ]]; then |
| 208 if [[ "${OS}" == "Darwin" ]]; then | 208 if [[ "${OS}" == "Darwin" ]]; then |
| 209 # clang is used on Mac. | 209 # clang is always used on Mac. |
| 210 true |
| 211 elif [[ "${OS}" == "Linux" ]]; then |
| 212 # clang is also aways used on Linux. |
| 210 true | 213 true |
| 211 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then | 214 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then |
| 212 # clang requested via $GYP_DEFINES. | 215 # clang requested via $GYP_DEFINES. |
| 213 true | 216 true |
| 214 elif [[ -d "${LLVM_BUILD_DIR}" ]]; then | 217 elif [[ -d "${LLVM_BUILD_DIR}" ]]; then |
| 215 # clang previously downloaded, remove third_party/llvm-build to prevent | 218 # clang previously downloaded, keep it up-to-date. |
| 216 # updating. | 219 # If you don't want this, delete third_party/llvm-build on your machine. |
| 217 true | |
| 218 elif [[ "${OS}" == "Linux" ]]; then | |
| 219 # Temporarily use clang on linux. Leave a stamp file behind, so that | |
| 220 # this script can remove clang again on machines where it was autoinstalled. | |
| 221 mkdir -p "${LLVM_BUILD_DIR}" | |
| 222 touch "${LLVM_BUILD_DIR}/autoinstall_stamp" | |
| 223 true | 220 true |
| 224 else | 221 else |
| 225 # clang wasn't needed, not doing anything. | 222 # clang wasn't needed, not doing anything. |
| 226 exit 0 | 223 exit 0 |
| 227 fi | 224 fi |
| 228 fi | 225 fi |
| 229 | 226 |
| 230 | 227 |
| 231 # Check if there's anything to be done, exit early if not. | 228 # Check if there's anything to be done, exit early if not. |
| 232 if [[ -f "${STAMP_FILE}" ]]; then | 229 if [[ -f "${STAMP_FILE}" ]]; then |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 "${LLVM_DIR}/test/Bindings/Go/go.test" \ | 309 "${LLVM_DIR}/test/Bindings/Go/go.test" \ |
| 313 "${CLANG_DIR}/lib/Parse/ParseExpr.cpp" \ | 310 "${CLANG_DIR}/lib/Parse/ParseExpr.cpp" \ |
| 314 "${CLANG_DIR}/lib/Parse/ParseTemplate.cpp" \ | 311 "${CLANG_DIR}/lib/Parse/ParseTemplate.cpp" \ |
| 315 "${CLANG_DIR}/lib/Sema/SemaDeclCXX.cpp" \ | 312 "${CLANG_DIR}/lib/Sema/SemaDeclCXX.cpp" \ |
| 316 "${CLANG_DIR}/lib/Sema/SemaExprCXX.cpp" \ | 313 "${CLANG_DIR}/lib/Sema/SemaExprCXX.cpp" \ |
| 317 "${CLANG_DIR}/test/SemaCXX/default2.cpp" \ | 314 "${CLANG_DIR}/test/SemaCXX/default2.cpp" \ |
| 318 "${CLANG_DIR}/test/SemaCXX/typo-correction-delayed.cpp" \ | 315 "${CLANG_DIR}/test/SemaCXX/typo-correction-delayed.cpp" \ |
| 319 "${COMPILER_RT_DIR}/lib/sanitizer_common/sanitizer_stoptheworld_linux_libc
dep.cc" \ | 316 "${COMPILER_RT_DIR}/lib/sanitizer_common/sanitizer_stoptheworld_linux_libc
dep.cc" \ |
| 320 "${COMPILER_RT_DIR}/test/tsan/signal_segv_handler.cc" \ | 317 "${COMPILER_RT_DIR}/test/tsan/signal_segv_handler.cc" \ |
| 321 "${COMPILER_RT_DIR}/lib/sanitizer_common/sanitizer_coverage_libcdep.cc" \ | 318 "${COMPILER_RT_DIR}/lib/sanitizer_common/sanitizer_coverage_libcdep.cc" \ |
| 319 "${COMPILER_RT_DIR}/cmake/config-ix.cmake" \ |
| 320 "${COMPILER_RT_DIR}/lib/ubsan/ubsan_platform.h" \ |
| 322 ; do | 321 ; do |
| 323 if [[ -e "${i}" ]]; then | 322 if [[ -e "${i}" ]]; then |
| 324 rm -f "${i}" # For unversioned files. | 323 rm -f "${i}" # For unversioned files. |
| 325 svn revert "${i}" | 324 svn revert "${i}" |
| 326 fi; | 325 fi; |
| 327 done | 326 done |
| 328 | 327 |
| 329 echo Remove the Clang tools shim dir | 328 echo Remove the Clang tools shim dir |
| 330 CHROME_TOOLS_SHIM_DIR=${ABS_LLVM_DIR}/tools/chrometools | 329 CHROME_TOOLS_SHIM_DIR=${ABS_LLVM_DIR}/tools/chrometools |
| 331 rm -rfv ${CHROME_TOOLS_SHIM_DIR} | 330 rm -rfv ${CHROME_TOOLS_SHIM_DIR} |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 | 393 |
| 395 -TEST_F(LibclangReparseTest, ReparseWithModule) { | 394 -TEST_F(LibclangReparseTest, ReparseWithModule) { |
| 396 +TEST_F(LibclangReparseTest, DISABLED_ReparseWithModule) { | 395 +TEST_F(LibclangReparseTest, DISABLED_ReparseWithModule) { |
| 397 const char *HeaderTop = "#ifndef H\n#define H\nstruct Foo { int bar;"; | 396 const char *HeaderTop = "#ifndef H\n#define H\nstruct Foo { int bar;"; |
| 398 const char *HeaderBottom = "\n};\n#endif\n"; | 397 const char *HeaderBottom = "\n};\n#endif\n"; |
| 399 const char *MFile = "#include \"HeaderFile.h\"\nint main() {" | 398 const char *MFile = "#include \"HeaderFile.h\"\nint main() {" |
| 400 EOF | 399 EOF |
| 401 patch -p0 | 400 patch -p0 |
| 402 popd | 401 popd |
| 403 | 402 |
| 404 # Cherry-pick r234010 [sancov] Shrink pc array on Android back to 2**24." | |
| 405 pushd "${COMPILER_RT_DIR}" | |
| 406 cat << 'EOF' | | |
| 407 diff --git a/lib/sanitizer_common/sanitizer_coverage_libcdep.cc b/lib/sanitizer_
common/sanitizer_coverage_libcdep.cc | |
| 408 index 4b976fc..cfd9e7e 100644 | |
| 409 --- a/lib/sanitizer_common/sanitizer_coverage_libcdep.cc | |
| 410 +++ b/lib/sanitizer_common/sanitizer_coverage_libcdep.cc | |
| 411 @@ -109,7 +109,8 @@ class CoverageData { | |
| 412 | |
| 413 // Maximal size pc array may ever grow. | |
| 414 // We MmapNoReserve this space to ensure that the array is contiguous. | |
| 415 - static const uptr kPcArrayMaxSize = FIRST_32_SECOND_64(1 << 26, 1 << 27); | |
| 416 + static const uptr kPcArrayMaxSize = | |
| 417 + FIRST_32_SECOND_64(1 << (SANITIZER_ANDROID ? 24 : 26), 1 << 27); | |
| 418 // The amount file mapping for the pc array is grown by. | |
| 419 static const uptr kPcArrayMmapSize = 64 * 1024; | |
| 420 | |
| 421 EOF | |
| 422 patch -p1 | |
| 423 popd | |
| 424 | |
| 425 # This Go bindings test doesn't work after the bootstrap build on Linux. (PR21
552) | 403 # This Go bindings test doesn't work after the bootstrap build on Linux. (PR21
552) |
| 426 pushd "${LLVM_DIR}" | 404 pushd "${LLVM_DIR}" |
| 427 cat << 'EOF' | | 405 cat << 'EOF' | |
| 428 Index: test/Bindings/Go/go.test | 406 Index: test/Bindings/Go/go.test |
| 429 =================================================================== | 407 =================================================================== |
| 430 --- test/Bindings/Go/go.test (revision 223109) | 408 --- test/Bindings/Go/go.test (revision 223109) |
| 431 +++ test/Bindings/Go/go.test (working copy) | 409 +++ test/Bindings/Go/go.test (working copy) |
| 432 @@ -1,3 +1,3 @@ | 410 @@ -1,3 +1,3 @@ |
| 433 -; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm | 411 -; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm |
| 434 +; RUN: true | 412 +; RUN: true |
| 435 | 413 |
| 436 ; REQUIRES: shell | 414 ; REQUIRES: shell |
| 437 EOF | 415 EOF |
| 438 patch -p0 | 416 patch -p0 |
| 439 popd | 417 popd |
| 440 | 418 |
| 419 # The UBSan run-time, which is now bundled with the ASan run-time, doesn't wor
k |
| 420 # on Mac OS X 10.8 (PR23539). |
| 421 pushd "${COMPILER_RT_DIR}" |
| 422 cat << 'EOF' | |
| 423 --- a/cmake/config-ix.cmake |
| 424 +++ b/cmake/config-ix.cmake |
| 425 @@ -319,7 +319,7 @@ else() |
| 426 endif() |
| 427 |
| 428 if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND |
| 429 - OS_NAME MATCHES "Darwin|Linux|FreeBSD") |
| 430 + OS_NAME MATCHES "Linux|FreeBSD") |
| 431 set(COMPILER_RT_HAS_UBSAN TRUE) |
| 432 else() |
| 433 set(COMPILER_RT_HAS_UBSAN FALSE) |
| 434 diff --git a/lib/ubsan/ubsan_platform.h b/lib/ubsan/ubsan_platform.h |
| 435 index 8ba253b..d5dce8d 100644 |
| 436 --- a/lib/ubsan/ubsan_platform.h |
| 437 +++ b/lib/ubsan/ubsan_platform.h |
| 438 @@ -14,7 +14,7 @@ |
| 439 #define UBSAN_PLATFORM_H |
| 440 |
| 441 // Other platforms should be easy to add, and probably work as-is. |
| 442 -#if (defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__)) && \ |
| 443 +#if (defined(__linux__) || defined(__FreeBSD__)) && \ |
| 444 (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || \ |
| 445 defined(__aarch64__) || defined(__mips__) || defined(__powerpc64__)) |
| 446 # define CAN_SANITIZE_UB 1 |
| 447 EOF |
| 448 patch -p1 |
| 449 popd |
| 441 | 450 |
| 442 fi | 451 fi |
| 443 | 452 |
| 444 # Echo all commands. | 453 # Echo all commands. |
| 445 set -x | 454 set -x |
| 446 | 455 |
| 447 # Set default values for CC and CXX if they're not set in the environment. | 456 # Set default values for CC and CXX if they're not set in the environment. |
| 448 CC=${CC:-cc} | 457 CC=${CC:-cc} |
| 449 CXX=${CXX:-c++} | 458 CXX=${CXX:-c++} |
| 450 | 459 |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 tar -c lib/darwin | tar -C ${ABS_LLVM_CLANG_LIB_DIR} -xv | 668 tar -c lib/darwin | tar -C ${ABS_LLVM_CLANG_LIB_DIR} -xv |
| 660 else | 669 else |
| 661 tar -c lib/linux | tar -C ${ABS_LLVM_CLANG_LIB_DIR} -xv | 670 tar -c lib/linux | tar -C ${ABS_LLVM_CLANG_LIB_DIR} -xv |
| 662 fi | 671 fi |
| 663 | 672 |
| 664 popd | 673 popd |
| 665 | 674 |
| 666 if [[ -n "${with_android}" ]]; then | 675 if [[ -n "${with_android}" ]]; then |
| 667 # Make a standalone Android toolchain. | 676 # Make a standalone Android toolchain. |
| 668 ${ANDROID_NDK_DIR}/build/tools/make-standalone-toolchain.sh \ | 677 ${ANDROID_NDK_DIR}/build/tools/make-standalone-toolchain.sh \ |
| 669 --platform=android-14 \ | 678 --platform=android-19 \ |
| 670 --install-dir="${LLVM_BUILD_DIR}/android-toolchain" \ | 679 --install-dir="${LLVM_BUILD_DIR}/android-toolchain" \ |
| 671 --system=linux-x86_64 \ | 680 --system=linux-x86_64 \ |
| 672 --stl=libcxx \ | 681 --stl=stlport \ |
| 673 --toolchain=arm-linux-androideabi-4.9 | 682 --toolchain=arm-linux-androideabi-4.9 |
| 674 | 683 |
| 675 # Android NDK r9d copies a broken unwind.h into the toolchain, see | 684 # Android NDK r9d copies a broken unwind.h into the toolchain, see |
| 676 # http://crbug.com/357890 | 685 # http://crbug.com/357890 |
| 677 rm -v "${LLVM_BUILD_DIR}"/android-toolchain/include/c++/*/unwind.h | 686 rm -v "${LLVM_BUILD_DIR}"/android-toolchain/include/c++/*/unwind.h |
| 678 | 687 |
| 679 # Build ASan runtime for Android in a separate build tree. | 688 # Build ASan runtime for Android in a separate build tree. |
| 680 mkdir -p ${LLVM_BUILD_DIR}/android | 689 mkdir -p ${LLVM_BUILD_DIR}/android |
| 681 pushd ${LLVM_BUILD_DIR}/android | 690 pushd ${LLVM_BUILD_DIR}/android |
| 682 rm -fv CMakeCache.txt | 691 rm -fv CMakeCache.txt |
| 683 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ | 692 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ |
| 684 -DCMAKE_BUILD_TYPE=Release \ | 693 -DCMAKE_BUILD_TYPE=Release \ |
| 685 -DLLVM_ENABLE_ASSERTIONS=ON \ | 694 -DLLVM_ENABLE_ASSERTIONS=ON \ |
| 686 -DLLVM_ENABLE_THREADS=OFF \ | 695 -DLLVM_ENABLE_THREADS=OFF \ |
| 687 -DCMAKE_C_COMPILER=${PWD}/../bin/clang \ | 696 -DCMAKE_C_COMPILER=${PWD}/../bin/clang \ |
| 688 -DCMAKE_CXX_COMPILER=${PWD}/../bin/clang++ \ | 697 -DCMAKE_CXX_COMPILER=${PWD}/../bin/clang++ \ |
| 689 -DLLVM_CONFIG_PATH=${PWD}/../bin/llvm-config \ | 698 -DLLVM_CONFIG_PATH=${PWD}/../bin/llvm-config \ |
| 690 -DCMAKE_C_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../androi
d-toolchain/sysroot -B${PWD}/../android-toolchain" \ | 699 -DCMAKE_C_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../androi
d-toolchain/sysroot -B${PWD}/../android-toolchain" \ |
| 691 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr
oid-toolchain/sysroot -B${PWD}/../android-toolchain" \ | 700 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr
oid-toolchain/sysroot -B${PWD}/../android-toolchain" \ |
| 692 -DANDROID=1 \ | 701 -DANDROID=1 \ |
| 693 "${ABS_COMPILER_RT_DIR}" | 702 "${ABS_COMPILER_RT_DIR}" |
| 694 ninja libclang_rt.asan-arm-android.so | 703 ninja libclang_rt.asan-arm-android.so |
| 695 | 704 |
| 696 # And copy it into the main build tree. | 705 # And copy it into the main build tree. |
| 697 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/
lib/linux/" | 706 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/
lib/linux/" |
| 698 popd | 707 popd |
| 699 fi | 708 fi |
| 700 | 709 |
| 701 if [[ -n "$run_tests" ]]; then | 710 if [[ -n "$run_tests" || -n "${LLVM_FORCE_HEAD_REVISION:-''}" ]]; then |
| 702 # Run Chrome tool tests. | 711 # Run Chrome tool tests. |
| 703 ninja -C "${LLVM_BUILD_DIR}" cr-check-all | 712 ninja -C "${LLVM_BUILD_DIR}" cr-check-all |
| 713 fi |
| 714 if [[ -n "$run_tests" ]]; then |
| 704 # Run the LLVM and Clang tests. | 715 # Run the LLVM and Clang tests. |
| 705 ninja -C "${LLVM_BUILD_DIR}" check-all | 716 ninja -C "${LLVM_BUILD_DIR}" check-all |
| 706 fi | 717 fi |
| 707 | 718 |
| 708 # After everything is done, log success for this revision. | 719 # After everything is done, log success for this revision. |
| 709 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" | 720 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" |
| OLD | NEW |