Use Zircon's Clang rather than building our own

This toolchain is already used to build Zircon itself and is the
official Clang toolchain used by all Fuchsia developers.
This commit is contained in:
Petr Hosek 2017-09-21 15:36:05 -07:00 committed by James Tucker
parent 0ef87cc109
commit 1fdbfa9930
2 changed files with 20 additions and 58 deletions

View File

@ -3,7 +3,6 @@ FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --no-install-recommends \
g++ \
make \
ninja-build \
file \
curl \
ca-certificates \
@ -11,16 +10,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
git \
sudo \
bzip2 \
xz-utils \
swig \
libedit-dev \
libncurses5-dev \
patch \
unzip
RUN curl -L https://cmake.org/files/v3.9/cmake-3.9.2-Linux-x86_64.tar.gz | \
tar xzf - -C /usr/local --strip-components=1
WORKDIR /tmp
COPY dist-fuchsia/shared.sh dist-fuchsia/build-toolchain.sh /tmp/
RUN /tmp/build-toolchain.sh

View File

@ -14,38 +14,22 @@
set -ex
source shared.sh
ZIRCON=e9a26dbc70d631029f8ee9763103910b7e3a2fe1
mkdir -p zircon
pushd zircon > /dev/null
# Download sources
SRCS=(
"https://fuchsia.googlesource.com/zircon zircon e9a26dbc70d631029f8ee9763103910b7e3a2fe1"
"https://llvm.googlesource.com/llvm llvm 65bdf0ae4a87e6992c24f06e2612909952468710"
"https://llvm.googlesource.com/clang llvm/tools/clang 914987de45cf83636537909ce09156aa7a37d6ec"
"https://llvm.googlesource.com/clang-tools-extra llvm/tools/clang/tools/extra 83de24124250a7cdc7a0fdc61b7e3c3d64b80225"
"https://llvm.googlesource.com/lld llvm/tools/lld f8ed4483c589b390daafac92e28f4680ad052643"
"https://llvm.googlesource.com/lldb llvm/tools/lldb 55cf8753321782668cb7e2d879457ee1ad57a2b9"
"https://llvm.googlesource.com/compiler-rt llvm/runtimes/compiler-rt a8682fdf74d3cb93769b7394f2cdffc5cefb8bd8"
"https://llvm.googlesource.com/libcxx llvm/runtimes/libcxx 5f919fe349450b3da0e29611ae37f6a940179290"
"https://llvm.googlesource.com/libcxxabi llvm/runtimes/libcxxabi caa78daf9285dada17e3e6b8aebcf7d128427f83"
"https://llvm.googlesource.com/libunwind llvm/runtimes/libunwind 469bacd2ea64679c15bb4d86adf000f2f2c27328"
)
git init
git remote add origin https://fuchsia.googlesource.com/zircon
git fetch --depth=1 origin $ZIRCON
git reset --hard FETCH_HEAD
fetch() {
mkdir -p $2
pushd $2 > /dev/null
git init
git remote add origin $1
git fetch --depth=1 origin $3
git reset --hard FETCH_HEAD
popd > /dev/null
}
# Download toolchain
./scripts/download-toolchain
cp -a prebuilt/downloads/clang+llvm-x86_64-linux/. /usr/local
for i in "${SRCS[@]}"; do
fetch $i
done
# Build sysroot
./zircon/scripts/download-toolchain
build_sysroot() {
build() {
local arch="$1"
case "${arch}" in
@ -53,33 +37,20 @@ build_sysroot() {
aarch64) tgt="zircon-qemu-arm64" ;;
esac
hide_output make -C zircon -j$(getconf _NPROCESSORS_ONLN) $tgt
hide_output make -j$(getconf _NPROCESSORS_ONLN) $tgt
dst=/usr/local/${arch}-unknown-fuchsia
mkdir -p $dst
cp -r zircon/build-${tgt}/sysroot/include $dst/
cp -r zircon/build-${tgt}/sysroot/lib $dst/
cp -a build-${tgt}/sysroot/include $dst/
cp -a build-${tgt}/sysroot/lib $dst/
}
# Build sysroot
for arch in x86_64 aarch64; do
build_sysroot ${arch}
build ${arch}
done
# Build toolchain
cd llvm
mkdir build
cd build
hide_output cmake -GNinja \
-DFUCHSIA_x86_64_SYSROOT=/usr/local/x86_64-unknown-fuchsia \
-DFUCHSIA_aarch64_SYSROOT=/usr/local/aarch64-unknown-fuchsia \
-DLLVM_ENABLE_LTO=OFF \
-DCLANG_BOOTSTRAP_PASSTHROUGH=LLVM_ENABLE_LTO \
-C ../tools/clang/cmake/caches/Fuchsia.cmake \
..
hide_output ninja stage2-distribution
hide_output ninja stage2-install-distribution
cd ../..
rm -rf zircon llvm
popd > /dev/null
rm -rf zircon
for arch in x86_64 aarch64; do
for tool in clang clang++; do