Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: tools/clang/scripts/update.sh

Issue 615083006: Fix clang tooling build on Linux (shim CMake in LLVM tree). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Minor formatting tweak Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/clang/rewrite_scoped_refptr/CMakeLists.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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=217949 11 CLANG_REVISION=217949
12 12
13 THIS_DIR="$(dirname "${0}")" 13 THIS_DIR="$(dirname "${0}")"
14 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" 14 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm"
15 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts" 15 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts"
16 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt" 16 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt"
17 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" 17 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap"
18 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" 18 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install"
19 CLANG_DIR="${LLVM_DIR}/tools/clang" 19 CLANG_DIR="${LLVM_DIR}/tools/clang"
20 COMPILER_RT_DIR="${LLVM_DIR}/compiler-rt" 20 COMPILER_RT_DIR="${LLVM_DIR}/compiler-rt"
21 LIBCXX_DIR="${LLVM_DIR}/projects/libcxx" 21 LIBCXX_DIR="${LLVM_DIR}/projects/libcxx"
22 LIBCXXABI_DIR="${LLVM_DIR}/projects/libcxxabi" 22 LIBCXXABI_DIR="${LLVM_DIR}/projects/libcxxabi"
23 ANDROID_NDK_DIR="${THIS_DIR}/../../../third_party/android_tools/ndk" 23 ANDROID_NDK_DIR="${THIS_DIR}/../../../third_party/android_tools/ndk"
24 STAMP_FILE="${LLVM_DIR}/../llvm-build/cr_build_revision" 24 STAMP_FILE="${LLVM_DIR}/../llvm-build/cr_build_revision"
25 CHROMIUM_TOOLS_DIR="${THIS_DIR}/.."
25 26
27 ABS_CHROMIUM_TOOLS_DIR="${PWD}/${CHROMIUM_TOOLS_DIR}"
26 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}" 28 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}"
27 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}" 29 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}"
28 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}" 30 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}"
29 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}" 31 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}"
30 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}" 32 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}"
31 33
32 34
33 # Use both the clang revision and the plugin revisions to test for updates. 35 # Use both the clang revision and the plugin revisions to test for updates.
34 BLINKGCPLUGIN_REVISION=\ 36 BLINKGCPLUGIN_REVISION=\
35 $(grep 'set(LIBRARYNAME' "$THIS_DIR"/../blink_gc_plugin/CMakeLists.txt \ 37 $(grep 'set(LIBRARYNAME' "$THIS_DIR"/../blink_gc_plugin/CMakeLists.txt \
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 -nodefaultlibs -current_version 1 -compatibility_version 1 \ 425 -nodefaultlibs -current_version 1 -compatibility_version 1 \
424 -lSystem -install_name @executable_path/libc++.dylib \ 426 -lSystem -install_name @executable_path/libc++.dylib \
425 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \ 427 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \
426 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \ 428 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \
427 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp 429 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp
428 ln -sf libc++.1.dylib libc++.dylib 430 ln -sf libc++.1.dylib libc++.dylib
429 popd 431 popd
430 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild" 432 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild"
431 fi 433 fi
432 434
435 # Hook the Chromium tools into the LLVM build. Several Chromium tools have
436 # dependencies on LLVM/Clang libraries. The LLVM build detects implicit tools
437 # in the tools subdirectory, so install a shim CMakeLists.txt that forwards to
438 # the real directory for the Chromium tools.
439 # Note that the shim directory name intentionally has no _ or _. The implicit
440 # tool detection logic munges them in a weird way.
441 CHROME_TOOLS_SHIM_DIR=${ABS_LLVM_DIR}/tools/chrometools
hans 2014/10/03 01:23:45 Why aren't we inserting the shim under tools/clang
dcheng 2014/10/03 03:47:51 There's only one call to add_llvm_implicit_externa
hans 2014/10/03 17:07:14 OK. Let's keep it here, then.
442 rm -rfv ${CHROME_TOOLS_SHIM_DIR}
443 mkdir -v ${CHROME_TOOLS_SHIM_DIR}
444 cat > ${CHROME_TOOLS_SHIM_DIR}/CMakeLists.txt << EOF
445 # Since tools/clang isn't actually a subdirectory, use the two argument version
446 # to specify where build artifacts go. CMake doesn't allow reusing the same
447 # binary dir for multiple source dirs, so the build artifacts have to go into a
448 # subdirectory...
449 add_subdirectory(\${CHROMIUM_TOOLS_SRC} \${CMAKE_CURRENT_BINARY_DIR}/a)
450 EOF
433 rm -fv CMakeCache.txt 451 rm -fv CMakeCache.txt
434 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ 452 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
435 -DCMAKE_BUILD_TYPE=Release \ 453 -DCMAKE_BUILD_TYPE=Release \
436 -DLLVM_ENABLE_ASSERTIONS=ON \ 454 -DLLVM_ENABLE_ASSERTIONS=ON \
437 -DLLVM_ENABLE_THREADS=OFF \ 455 -DLLVM_ENABLE_THREADS=OFF \
438 -DCMAKE_C_COMPILER="${CC}" \ 456 -DCMAKE_C_COMPILER="${CC}" \
439 -DCMAKE_CXX_COMPILER="${CXX}" \ 457 -DCMAKE_CXX_COMPILER="${CXX}" \
440 -DCMAKE_C_FLAGS="${CFLAGS}" \ 458 -DCMAKE_C_FLAGS="${CFLAGS}" \
441 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ 459 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
442 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ 460 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
443 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ 461 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \
444 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ 462 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \
463 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \
464 -DCHROMIUM_TOOLS_SRC="${ABS_CHROMIUM_TOOLS_DIR}" \
465 -DCHROMIUM_TOOLS="${chrome_tools}" \
445 "${ABS_LLVM_DIR}" 466 "${ABS_LLVM_DIR}"
446 env 467 env
447 468
448 if [[ -n "${gcc_toolchain}" ]]; then 469 if [[ -n "${gcc_toolchain}" ]]; then
449 # Copy in the right stdlibc++.so.6 so clang can start. 470 # Copy in the right stdlibc++.so.6 so clang can start.
450 mkdir -p lib 471 mkdir -p lib
451 cp -v "$(${CXX} ${CXXFLAGS} -print-file-name=libstdc++.so.6)" lib/ 472 cp -v "$(${CXX} ${CXXFLAGS} -print-file-name=libstdc++.so.6)" lib/
452 fi 473 fi
453 474
454 ninja 475 ninja
476 # If any Chromium tools were built, install those now.
477 if [[ -n "${chrome_tools}" ]]; then
478 ninja cr-install
479 fi
455 480
456 STRIP_FLAGS= 481 STRIP_FLAGS=
457 if [ "${OS}" = "Darwin" ]; then 482 if [ "${OS}" = "Darwin" ]; then
458 # See http://crbug.com/256342 483 # See http://crbug.com/256342
459 STRIP_FLAGS=-x 484 STRIP_FLAGS=-x
460 485
461 cp libcxxbuild/libc++.1.dylib bin/ 486 cp libcxxbuild/libc++.1.dylib bin/
462 fi 487 fi
463 strip ${STRIP_FLAGS} bin/clang 488 strip ${STRIP_FLAGS} bin/clang
464 popd 489 popd
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr oid-toolchain/sysroot -B${PWD}/../android-toolchain" \ 546 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr oid-toolchain/sysroot -B${PWD}/../android-toolchain" \
522 -DANDROID=1 \ 547 -DANDROID=1 \
523 "${ABS_COMPILER_RT_DIR}" 548 "${ABS_COMPILER_RT_DIR}"
524 ninja clang_rt.asan-arm-android 549 ninja clang_rt.asan-arm-android
525 550
526 # And copy it into the main build tree. 551 # And copy it into the main build tree.
527 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/ lib/linux/" 552 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/ lib/linux/"
528 popd 553 popd
529 fi 554 fi
530 555
531 # Build Chrome-specific clang tools. Paths in this list should be relative to
532 # tools/clang.
533 TOOL_SRC_DIR="${PWD}/${THIS_DIR}/../"
534 TOOL_BUILD_DIR="${ABS_LLVM_BUILD_DIR}/tools/clang/tools/chrome-extras"
535
536 rm -rf "${TOOL_BUILD_DIR}"
537 mkdir -p "${TOOL_BUILD_DIR}"
538 pushd "${TOOL_BUILD_DIR}"
539 rm -fv CMakeCache.txt
540 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
541 -DLLVM_BUILD_DIR="${ABS_LLVM_BUILD_DIR}" \
542 -DLLVM_SRC_DIR="${ABS_LLVM_DIR}" \
543 -DCMAKE_C_COMPILER="${CC}" \
544 -DCMAKE_CXX_COMPILER="${CXX}" \
545 -DCMAKE_C_FLAGS="${CFLAGS}" \
546 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
547 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
548 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \
549 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \
550 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \
551 -DCHROMIUM_TOOLS="${chrome_tools}" \
552 "${TOOL_SRC_DIR}"
553 popd
554 ninja -C "${TOOL_BUILD_DIR}" install
555
556 if [[ -n "$run_tests" ]]; then 556 if [[ -n "$run_tests" ]]; then
557 # Run Chrome tool tests. 557 # Run Chrome tool tests.
558 ninja -C "${TOOL_BUILD_DIR}" check-all 558 ninja -C "${LLVM_BUILD_DIR}" cr-check-all
559 # Run the LLVM and Clang tests. 559 # Run the LLVM and Clang tests.
560 ninja -C "${LLVM_BUILD_DIR}" check-all 560 ninja -C "${LLVM_BUILD_DIR}" check-all
561 fi 561 fi
562 562
563 # After everything is done, log success for this revision. 563 # After everything is done, log success for this revision.
564 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}" 564 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}"
OLDNEW
« no previous file with comments | « tools/clang/rewrite_scoped_refptr/CMakeLists.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698