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. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
46 if [[ -z "$GYP_DEFINES" ]]; then | 46 if [[ -z "$GYP_DEFINES" ]]; then |
47 GYP_DEFINES= | 47 GYP_DEFINES= |
48 fi | 48 fi |
49 if [[ -z "$GYP_GENERATORS" ]]; then | 49 if [[ -z "$GYP_GENERATORS" ]]; then |
50 GYP_GENERATORS= | 50 GYP_GENERATORS= |
51 fi | 51 fi |
52 if [[ -z "$LLVM_DOWNLOAD_GOLD_PLUGIN" ]]; then | 52 if [[ -z "$LLVM_DOWNLOAD_GOLD_PLUGIN" ]]; then |
53 LLVM_DOWNLOAD_GOLD_PLUGIN= | 53 LLVM_DOWNLOAD_GOLD_PLUGIN= |
54 fi | 54 fi |
55 | 55 |
56 if [[ "$GYP_DEFINES" =~ .*cfi_vptr=1.* ]] || \ | |
hans
2015/10/09 21:42:48
Doesn't this still need to be guarded by "if Linux
krasin
2015/10/09 21:50:18
Done.
| |
57 [[ "$GYP_DEFINES" =~ .*buildtype=Official.* ]] || \ | |
58 [[ "$GYP_DEFINES" =~ .*branding=Chrome.* ]] ; then | |
Nico
2015/10/09 21:40:10
Let's do the same as https://code.google.com/p/chr
krasin
2015/10/09 21:50:18
Done.
| |
59 # LLVM Gold plugin is required to build with this configuration. | |
60 LLVM_DOWNLOAD_GOLD_PLUGIN=1 | |
61 fi | |
56 | 62 |
57 # Die if any command dies, error on undefined variable expansions. | 63 # Die if any command dies, error on undefined variable expansions. |
58 set -eu | 64 set -eu |
59 | 65 |
60 | 66 |
61 if [[ -n ${LLVM_FORCE_HEAD_REVISION:-''} ]]; then | 67 if [[ -n ${LLVM_FORCE_HEAD_REVISION:-''} ]]; then |
62 # Use a real revision number rather than HEAD to make sure that the stamp file | 68 # Use a real revision number rather than HEAD to make sure that the stamp file |
63 # logic works. | 69 # logic works. |
64 CLANG_REVISION=$(svn info "$LLVM_REPO_URL" \ | 70 CLANG_REVISION=$(svn info "$LLVM_REPO_URL" \ |
65 | grep 'Revision:' | awk '{ printf $2; }') | 71 | grep 'Revision:' | awk '{ printf $2; }') |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
228 fi | 234 fi |
229 | 235 |
230 | 236 |
231 # Check if there's anything to be done, exit early if not. | 237 # Check if there's anything to be done, exit early if not. |
232 if [[ -f "${STAMP_FILE}" ]]; then | 238 if [[ -f "${STAMP_FILE}" ]]; then |
233 PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}") | 239 PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}") |
234 if [[ -z "$force_local_build" ]] && \ | 240 if [[ -z "$force_local_build" ]] && \ |
235 [[ "${PREVIOUSLY_BUILT_REVISON}" = \ | 241 [[ "${PREVIOUSLY_BUILT_REVISON}" = \ |
236 "${PACKAGE_VERSION}" ]]; then | 242 "${PACKAGE_VERSION}" ]]; then |
237 echo "Clang already at ${PACKAGE_VERSION}" | 243 echo "Clang already at ${PACKAGE_VERSION}" |
238 exit 0 | 244 if [[ -z "${LLVM_DOWNLOAD_GOLD_PLUGIN}" ]] || \ |
245 [[ -f "${LLVM_BUILD_DIR}/lib/LLVMgold.so" ]]; then | |
Nico
2015/10/09 21:40:10
with this setup it can theoretically happen that a
krasin
2015/10/09 21:50:18
I raised this point, Hans correctly pointed out th
Nico
2015/10/09 21:52:37
Smart guy, that Hans!
| |
246 exit 0 | |
247 fi | |
239 fi | 248 fi |
240 fi | 249 fi |
241 # To always force a new build if someone interrupts their build half way. | 250 # To always force a new build if someone interrupts their build half way. |
242 rm -f "${STAMP_FILE}" | 251 rm -f "${STAMP_FILE}" |
243 | 252 |
244 | 253 |
245 if [[ -z "$force_local_build" ]]; then | 254 if [[ -z "$force_local_build" ]]; then |
246 # Check if there's a prebuilt binary and if so just fetch that. That's faster, | 255 # Check if there's a prebuilt binary and if so just fetch that. That's faster, |
247 # and goma relies on having matching binary hashes on client and server too. | 256 # and goma relies on having matching binary hashes on client and server too. |
248 CDS_FILE="clang-${PACKAGE_VERSION}.tgz" | 257 CDS_FILE="clang-${PACKAGE_VERSION}.tgz" |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
662 # Run Chrome tool tests. | 671 # Run Chrome tool tests. |
663 ninja -C "${LLVM_BUILD_DIR}" cr-check-all | 672 ninja -C "${LLVM_BUILD_DIR}" cr-check-all |
664 fi | 673 fi |
665 if [[ -n "$run_tests" ]]; then | 674 if [[ -n "$run_tests" ]]; then |
666 # Run the LLVM and Clang tests. | 675 # Run the LLVM and Clang tests. |
667 ninja -C "${LLVM_BUILD_DIR}" check-all | 676 ninja -C "${LLVM_BUILD_DIR}" check-all |
668 fi | 677 fi |
669 | 678 |
670 # After everything is done, log success for this revision. | 679 # After everything is done, log success for this revision. |
671 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" | 680 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" |
OLD | NEW |