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=247874 | 11 CLANG_REVISION=253678 |
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=1 | 14 CLANG_SUB_REVISION=1 |
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" |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 strip ${STRIP_FLAGS} bin/clang | 541 strip ${STRIP_FLAGS} bin/clang |
542 popd | 542 popd |
543 | 543 |
544 # Build compiler-rt out-of-tree. | 544 # Build compiler-rt out-of-tree. |
545 # Do a clobbered build due to cmake changes. | 545 # Do a clobbered build due to cmake changes. |
546 rm -rf "${COMPILER_RT_BUILD_DIR}" | 546 rm -rf "${COMPILER_RT_BUILD_DIR}" |
547 mkdir -p "${COMPILER_RT_BUILD_DIR}" | 547 mkdir -p "${COMPILER_RT_BUILD_DIR}" |
548 pushd "${COMPILER_RT_BUILD_DIR}" | 548 pushd "${COMPILER_RT_BUILD_DIR}" |
549 | 549 |
550 rm -fv CMakeCache.txt | 550 rm -fv CMakeCache.txt |
551 MACOSX_DEPLOYMENT_TARGET=${deployment_target} CC="" CXX="" cmake -GNinja \ | 551 if [[ -z "${bootstrap}" ]]; then |
| 552 # compiler_rt doesn't build with Xcode 6's clang, but not all bots have |
| 553 # Xcode 7 yet. So use the just-built clang for building compiler-rt. |
| 554 # However, in bootstrap builds, we delete libc++ to work around PR24068 -- so |
| 555 # compiler_rt's CMake checks can't find <iostream> and decide that no arch |
| 556 # is supported. So use the installed bootstrap compiler in bootstrap builds, |
| 557 # it has the libc++ headers installed (CXX is already set to that in |
| 558 # bootstrap builds). |
| 559 CC="${ABS_LLVM_BUILD_DIR}/bin/clang" |
| 560 CXX="${ABS_LLVM_BUILD_DIR}/bin/clang++" |
| 561 elif [[ "${OS}" = "Darwin" ]]; then |
| 562 # ...except that compiler-rt currently doesn't build with the bootstrap |
| 563 # compiler on Darwin either! So use the system compiler there. |
| 564 # TOOD(thakis): Remove this once http://llvm.org/PR25465 is fixed. |
| 565 CC=cc |
| 566 CXX=c++ |
| 567 fi |
| 568 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ |
552 -DCMAKE_BUILD_TYPE=Release \ | 569 -DCMAKE_BUILD_TYPE=Release \ |
553 -DLLVM_ENABLE_ASSERTIONS=ON \ | 570 -DLLVM_ENABLE_ASSERTIONS=ON \ |
554 -DLLVM_ENABLE_THREADS=OFF \ | 571 -DLLVM_ENABLE_THREADS=OFF \ |
555 -DCMAKE_C_COMPILER="${ABS_LLVM_BUILD_DIR}/bin/clang" \ | 572 -DCMAKE_C_COMPILER="${CC}" \ |
556 -DCMAKE_CXX_COMPILER="${ABS_LLVM_BUILD_DIR}/bin/clang++" \ | 573 -DCMAKE_CXX_COMPILER="${CXX}" \ |
557 -DSANITIZER_MIN_OSX_VERSION="10.7" \ | 574 -DSANITIZER_MIN_OSX_VERSION="10.7" \ |
558 -DLLVM_CONFIG_PATH="${ABS_LLVM_BUILD_DIR}/bin/llvm-config" \ | 575 -DLLVM_CONFIG_PATH="${ABS_LLVM_BUILD_DIR}/bin/llvm-config" \ |
559 "${ABS_COMPILER_RT_DIR}" | 576 "${ABS_COMPILER_RT_DIR}" |
560 | 577 |
561 ninja | 578 ninja |
562 | 579 |
563 # Copy selected output to the main tree. | 580 # Copy selected output to the main tree. |
564 # Darwin doesn't support cp --parents, so pipe through tar instead. | 581 # Darwin doesn't support cp --parents, so pipe through tar instead. |
565 CLANG_VERSION=$("${ABS_LLVM_BUILD_DIR}/bin/clang" --version | \ | 582 CLANG_VERSION=$("${ABS_LLVM_BUILD_DIR}/bin/clang" --version | \ |
566 sed -ne 's/clang version \([0-9]\.[0-9]\.[0-9]\).*/\1/p') | 583 sed -ne 's/clang version \([0-9]\.[0-9]\.[0-9]\).*/\1/p') |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 # Run Chrome tool tests. | 649 # Run Chrome tool tests. |
633 ninja -C "${LLVM_BUILD_DIR}" cr-check-all | 650 ninja -C "${LLVM_BUILD_DIR}" cr-check-all |
634 fi | 651 fi |
635 if [[ -n "$run_tests" ]]; then | 652 if [[ -n "$run_tests" ]]; then |
636 # Run the LLVM and Clang tests. | 653 # Run the LLVM and Clang tests. |
637 ninja -C "${LLVM_BUILD_DIR}" check-all | 654 ninja -C "${LLVM_BUILD_DIR}" check-all |
638 fi | 655 fi |
639 | 656 |
640 # After everything is done, log success for this revision. | 657 # After everything is done, log success for this revision. |
641 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" | 658 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" |
OLD | NEW |