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

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

Issue 603943003: Clang update.sh: always clear CMake's cache, and only set MACOSX_DEPLOYMENT_TARGET when needed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 | « no previous file | 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.
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 CC="$gcc_toolchain/bin/gcc" 344 CC="$gcc_toolchain/bin/gcc"
345 CXX="$gcc_toolchain/bin/g++" 345 CXX="$gcc_toolchain/bin/g++"
346 # Set LD_LIBRARY_PATH to make auxiliary targets (tablegen, bootstrap compiler, 346 # Set LD_LIBRARY_PATH to make auxiliary targets (tablegen, bootstrap compiler,
347 # etc.) find the .so. 347 # etc.) find the .so.
348 export LD_LIBRARY_PATH="$(dirname $(${CXX} -print-file-name=libstdc++.so.6))" 348 export LD_LIBRARY_PATH="$(dirname $(${CXX} -print-file-name=libstdc++.so.6))"
349 fi 349 fi
350 350
351 CFLAGS="" 351 CFLAGS=""
352 CXXFLAGS="" 352 CXXFLAGS=""
353 LDFLAGS="" 353 LDFLAGS=""
354
354 # LLVM uses C++11 starting in llvm 3.5. On Linux, this means libstdc++4.7+ is 355 # LLVM uses C++11 starting in llvm 3.5. On Linux, this means libstdc++4.7+ is
355 # needed, on OS X it requires libc++. clang only automatically links to libc++ 356 # needed, on OS X it requires libc++. clang only automatically links to libc++
356 # when targeting OS X 10.9+, so add stdlib=libc++ explicitly so clang can run on 357 # when targeting OS X 10.9+, so add stdlib=libc++ explicitly so clang can run on
357 # OS X versions as old as 10.7. 358 # OS X versions as old as 10.7.
358 # TODO(thakis): Some bots are still on 10.6, so for now bundle libc++.dylib. 359 # TODO(thakis): Some bots are still on 10.6, so for now bundle libc++.dylib.
359 # Remove this once all bots are on 10.7+, then use --enable-libcpp=yes and 360 # Remove this once all bots are on 10.7+, then use --enable-libcpp=yes and
360 # change all MACOSX_DEPLOYMENT_TARGET values to 10.7. 361 # change deployment_target to 10.7.
362 deployment_target=""
363
361 if [ "${OS}" = "Darwin" ]; then 364 if [ "${OS}" = "Darwin" ]; then
362 # When building on 10.9, /usr/include usually doesn't exist, and while 365 # When building on 10.9, /usr/include usually doesn't exist, and while
363 # Xcode's clang automatically sets a sysroot, self-built clangs don't. 366 # Xcode's clang automatically sets a sysroot, self-built clangs don't.
364 CFLAGS="-isysroot $(xcrun --show-sdk-path)" 367 CFLAGS="-isysroot $(xcrun --show-sdk-path)"
365 CPPFLAGS="${CFLAGS}" 368 CPPFLAGS="${CFLAGS}"
366 CXXFLAGS="-stdlib=libc++ -nostdinc++ -I${ABS_LIBCXX_DIR}/include ${CFLAGS}" 369 CXXFLAGS="-stdlib=libc++ -nostdinc++ -I${ABS_LIBCXX_DIR}/include ${CFLAGS}"
370
371 if [[ -n "${bootstrap}" ]]; then
372 deployment_target=10.6
373 fi
367 fi 374 fi
368 375
369 # Build bootstrap clang if requested. 376 # Build bootstrap clang if requested.
370 if [[ -n "${bootstrap}" ]]; then 377 if [[ -n "${bootstrap}" ]]; then
371 ABS_INSTALL_DIR="${PWD}/${LLVM_BOOTSTRAP_INSTALL_DIR}" 378 ABS_INSTALL_DIR="${PWD}/${LLVM_BOOTSTRAP_INSTALL_DIR}"
372 echo "Building bootstrap compiler" 379 echo "Building bootstrap compiler"
373 mkdir -p "${LLVM_BOOTSTRAP_DIR}" 380 mkdir -p "${LLVM_BOOTSTRAP_DIR}"
374 pushd "${LLVM_BOOTSTRAP_DIR}" 381 pushd "${LLVM_BOOTSTRAP_DIR}"
375 382
376 cmake -GNinja \ 383 cmake -GNinja \
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 -nodefaultlibs -current_version 1 -compatibility_version 1 \ 447 -nodefaultlibs -current_version 1 -compatibility_version 1 \
441 -lSystem -install_name @executable_path/libc++.dylib \ 448 -lSystem -install_name @executable_path/libc++.dylib \
442 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \ 449 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \
443 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \ 450 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \
444 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp 451 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp
445 ln -sf libc++.1.dylib libc++.dylib 452 ln -sf libc++.1.dylib libc++.dylib
446 popd 453 popd
447 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild" 454 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild"
448 fi 455 fi
449 456
450 if [[ ! -f ./CMakeCache.txt ]]; then 457 rm -fv CMakeCache.txt
451 MACOSX_DEPLOYMENT_TARGET=10.6 cmake -GNinja \ 458 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
452 -DCMAKE_BUILD_TYPE=Release \ 459 -DCMAKE_BUILD_TYPE=Release \
453 -DLLVM_ENABLE_ASSERTIONS=ON \ 460 -DLLVM_ENABLE_ASSERTIONS=ON \
454 -DLLVM_ENABLE_THREADS=OFF \ 461 -DLLVM_ENABLE_THREADS=OFF \
455 -DCMAKE_C_COMPILER="${CC}" \ 462 -DCMAKE_C_COMPILER="${CC}" \
456 -DCMAKE_CXX_COMPILER="${CXX}" \ 463 -DCMAKE_CXX_COMPILER="${CXX}" \
457 -DCMAKE_C_FLAGS="${CFLAGS}" \ 464 -DCMAKE_C_FLAGS="${CFLAGS}" \
458 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ 465 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
459 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ 466 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
460 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ 467 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \
461 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ 468 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \
462 "${ABS_LLVM_DIR}" 469 "${ABS_LLVM_DIR}"
463 env 470 env
464 fi
465 471
466 if [[ -n "${gcc_toolchain}" ]]; then 472 if [[ -n "${gcc_toolchain}" ]]; then
467 # Copy in the right stdlibc++.so.6 so clang can start. 473 # Copy in the right stdlibc++.so.6 so clang can start.
468 mkdir -p lib 474 mkdir -p lib
469 cp -v "$(${CXX} ${CXXFLAGS} -print-file-name=libstdc++.so.6)" lib/ 475 cp -v "$(${CXX} ${CXXFLAGS} -print-file-name=libstdc++.so.6)" lib/
470 fi 476 fi
471 477
472 ninja 478 ninja
473 479
474 STRIP_FLAGS= 480 STRIP_FLAGS=
475 if [ "${OS}" = "Darwin" ]; then 481 if [ "${OS}" = "Darwin" ]; then
476 # See http://crbug.com/256342 482 # See http://crbug.com/256342
477 STRIP_FLAGS=-x 483 STRIP_FLAGS=-x
478 484
479 cp libcxxbuild/libc++.1.dylib bin/ 485 cp libcxxbuild/libc++.1.dylib bin/
480 fi 486 fi
481 strip ${STRIP_FLAGS} bin/clang 487 strip ${STRIP_FLAGS} bin/clang
482 popd 488 popd
483 489
484 # Build compiler-rt out-of-tree. 490 # Build compiler-rt out-of-tree.
485 mkdir -p "${COMPILER_RT_BUILD_DIR}" 491 mkdir -p "${COMPILER_RT_BUILD_DIR}"
486 pushd "${COMPILER_RT_BUILD_DIR}" 492 pushd "${COMPILER_RT_BUILD_DIR}"
487 493
488 MACOSX_DEPLOYMENT_TARGET=10.6 cmake -GNinja \ 494 rm -fv CMakeCache.txt
495 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
489 -DCMAKE_BUILD_TYPE=Release \ 496 -DCMAKE_BUILD_TYPE=Release \
490 -DLLVM_ENABLE_ASSERTIONS=ON \ 497 -DLLVM_ENABLE_ASSERTIONS=ON \
491 -DLLVM_ENABLE_THREADS=OFF \ 498 -DLLVM_ENABLE_THREADS=OFF \
492 -DCMAKE_C_COMPILER="${CC}" \ 499 -DCMAKE_C_COMPILER="${CC}" \
493 -DCMAKE_CXX_COMPILER="${CXX}" \ 500 -DCMAKE_CXX_COMPILER="${CXX}" \
494 -DLLVM_CONFIG_PATH="${ABS_LLVM_BUILD_DIR}/bin/llvm-config" \ 501 -DLLVM_CONFIG_PATH="${ABS_LLVM_BUILD_DIR}/bin/llvm-config" \
495 "${ABS_COMPILER_RT_DIR}" 502 "${ABS_COMPILER_RT_DIR}"
496 503
497 ninja 504 ninja
498 505
(...skipping 20 matching lines...) Expand all
519 --system=linux-x86_64 \ 526 --system=linux-x86_64 \
520 --stl=stlport 527 --stl=stlport
521 528
522 # Android NDK r9d copies a broken unwind.h into the toolchain, see 529 # Android NDK r9d copies a broken unwind.h into the toolchain, see
523 # http://crbug.com/357890 530 # http://crbug.com/357890
524 rm -v "${LLVM_BUILD_DIR}"/android-toolchain/include/c++/*/unwind.h 531 rm -v "${LLVM_BUILD_DIR}"/android-toolchain/include/c++/*/unwind.h
525 532
526 # Build ASan runtime for Android in a separate build tree. 533 # Build ASan runtime for Android in a separate build tree.
527 mkdir -p ${LLVM_BUILD_DIR}/android 534 mkdir -p ${LLVM_BUILD_DIR}/android
528 pushd ${LLVM_BUILD_DIR}/android 535 pushd ${LLVM_BUILD_DIR}/android
529 MACOSX_DEPLOYMENT_TARGET=10.6 cmake -GNinja \ 536 rm -fv CMakeCache.txt
537 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
530 -DCMAKE_BUILD_TYPE=Release \ 538 -DCMAKE_BUILD_TYPE=Release \
531 -DLLVM_ENABLE_ASSERTIONS=ON \ 539 -DLLVM_ENABLE_ASSERTIONS=ON \
532 -DLLVM_ENABLE_THREADS=OFF \ 540 -DLLVM_ENABLE_THREADS=OFF \
533 -DCMAKE_C_COMPILER=${PWD}/../bin/clang \ 541 -DCMAKE_C_COMPILER=${PWD}/../bin/clang \
534 -DCMAKE_CXX_COMPILER=${PWD}/../bin/clang++ \ 542 -DCMAKE_CXX_COMPILER=${PWD}/../bin/clang++ \
535 -DLLVM_CONFIG_PATH=${PWD}/../bin/llvm-config \ 543 -DLLVM_CONFIG_PATH=${PWD}/../bin/llvm-config \
536 -DCMAKE_C_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../androi d-toolchain/sysroot -B${PWD}/../android-toolchain" \ 544 -DCMAKE_C_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../androi d-toolchain/sysroot -B${PWD}/../android-toolchain" \
537 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr oid-toolchain/sysroot -B${PWD}/../android-toolchain" \ 545 -DCMAKE_CXX_FLAGS="--target=arm-linux-androideabi --sysroot=${PWD}/../andr oid-toolchain/sysroot -B${PWD}/../android-toolchain" \
538 -DANDROID=1 \ 546 -DANDROID=1 \
539 "${ABS_COMPILER_RT_DIR}" 547 "${ABS_COMPILER_RT_DIR}"
540 ninja clang_rt.asan-arm-android 548 ninja clang_rt.asan-arm-android
541 549
542 # And copy it into the main build tree. 550 # And copy it into the main build tree.
543 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/ lib/linux/" 551 cp "$(find -name libclang_rt.asan-arm-android.so)" "${ABS_LLVM_CLANG_LIB_DIR}/ lib/linux/"
544 popd 552 popd
545 fi 553 fi
546 554
547 # Build Chrome-specific clang tools. Paths in this list should be relative to 555 # Build Chrome-specific clang tools. Paths in this list should be relative to
548 # tools/clang. 556 # tools/clang.
549 TOOL_SRC_DIR="${PWD}/${THIS_DIR}/../" 557 TOOL_SRC_DIR="${PWD}/${THIS_DIR}/../"
550 TOOL_BUILD_DIR="${ABS_LLVM_BUILD_DIR}/tools/clang/tools/chrome-extras" 558 TOOL_BUILD_DIR="${ABS_LLVM_BUILD_DIR}/tools/clang/tools/chrome-extras"
551 559
552 rm -rf "${TOOL_BUILD_DIR}" 560 rm -rf "${TOOL_BUILD_DIR}"
553 mkdir -p "${TOOL_BUILD_DIR}" 561 mkdir -p "${TOOL_BUILD_DIR}"
554 pushd "${TOOL_BUILD_DIR}" 562 pushd "${TOOL_BUILD_DIR}"
555 MACOSX_DEPLOYMENT_TARGET=10.6 cmake -GNinja \ 563 rm -fv CMakeCache.txt
564 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \
556 -DLLVM_BUILD_DIR="${ABS_LLVM_BUILD_DIR}" \ 565 -DLLVM_BUILD_DIR="${ABS_LLVM_BUILD_DIR}" \
557 -DLLVM_SRC_DIR="${ABS_LLVM_DIR}" \ 566 -DLLVM_SRC_DIR="${ABS_LLVM_DIR}" \
558 -DCMAKE_C_COMPILER="${CC}" \ 567 -DCMAKE_C_COMPILER="${CC}" \
559 -DCMAKE_CXX_COMPILER="${CXX}" \ 568 -DCMAKE_CXX_COMPILER="${CXX}" \
560 -DCMAKE_C_FLAGS="${CFLAGS}" \ 569 -DCMAKE_C_FLAGS="${CFLAGS}" \
561 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ 570 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
562 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ 571 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
563 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ 572 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \
564 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ 573 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \
565 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \ 574 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \
566 -DCHROMIUM_TOOLS="${chrome_tools}" \ 575 -DCHROMIUM_TOOLS="${chrome_tools}" \
567 "${TOOL_SRC_DIR}" 576 "${TOOL_SRC_DIR}"
568 popd 577 popd
569 ninja -C "${TOOL_BUILD_DIR}" install 578 ninja -C "${TOOL_BUILD_DIR}" install
570 579
571 if [[ -n "$run_tests" ]]; then 580 if [[ -n "$run_tests" ]]; then
572 # Run Chrome tool tests. 581 # Run Chrome tool tests.
573 ninja -C "${TOOL_BUILD_DIR}" check-all 582 ninja -C "${TOOL_BUILD_DIR}" check-all
574 # Run the LLVM and Clang tests. 583 # Run the LLVM and Clang tests.
575 ninja -C "${LLVM_BUILD_DIR}" check-all 584 ninja -C "${LLVM_BUILD_DIR}" check-all
576 fi 585 fi
577 586
578 # After everything is done, log success for this revision. 587 # After everything is done, log success for this revision.
579 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}" 588 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}"
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698