| #!/bin/bash |
| # Copyright 2017 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # TODO(raggi): add support for arm targets |
| |
| if [[ -z $RUST_ROOT ]]; then |
| echo "Need \$RUST_ROOT to be set" |
| exit 1 |
| fi |
| |
| if [[ -z $FUCHSIA_DIR ]]; then |
| echo "Need \$FUCHSIA_DIR to be set" |
| exit 1 |
| fi |
| |
| |
| if [[ -z $FUCHSIA_OUT_DIR ]]; then |
| echo "Need \$FUCHSIA_OUT_DIR to be set" |
| exit 1 |
| fi |
| |
| |
| case $(uname) in |
| Darwin) |
| export PREFIX=$FUCHSIA_DIR/buildtools/mac-x64/rust |
| clangdir="$FUCHSIA_DIR/buildtools/mac-x64/clang" |
| export TARGETS=x86_64-unknown-fuchsia,x86_64-apple-darwin |
| ;; |
| Linux) |
| export PREFIX=$FUCHSIA_DIR/buildtools/linux-x64/rust |
| clangdir="$FUCHSIA_DIR/buildtools/linux-x64/clang" |
| export TARGETS=x86_64-unknown-fuchsia,x86_64-unknown-linux-gnu |
| ;; |
| *) |
| echo "Unsupported platform" >&2 |
| exit 1 |
| ;; |
| esac |
| |
| if [[ ! -d $clangdir ]]; then |
| echo "Prebuilt clang toolchain missing $clangdir, maybe you need to update?" >&2 |
| exit 1 |
| fi |
| |
| export PATH=$FUCHSIA_DIR/buildtools:$clangdir/bin:$PATH |
| |
| for arch in x86_64 ; do |
| for tool in clang clang++; do |
| cat > $clangdir/bin/${arch}-unknown-fuchsia-${tool} <<EOF |
| #!/bin/sh |
| ${tool} --target=${arch}-unknown-fuchsia --sysroot=$FUCHSIA_OUT_DIR/build-zircon/build-zircon-pc-x86-64/sysroot/ "\$@" |
| EOF |
| chmod +x $clangdir/bin/${arch}-unknown-fuchsia-${tool} |
| done |
| if [[ ! -x $clangdir/${arch}-unknown-fuchsia-ar ]]; then |
| ln -s $clangdir/bin/llvm-ar $clangdir/bin/${arch}-unknown-fuchsia-ar |
| fi |
| export AR_${arch}_unknown_fuchsia=llvm-ar |
| export CC_${arch}_unknown_fuchsia=${arch}-unknown-fuchsia-clang |
| export CXX_${arch}_unknown_fuchsia=${arch}-unknown-fuchsia-clang++ |
| done |
| |
| |
| mkdir -p $FUCHSIA_OUT_DIR/rust |
| cd $FUCHSIA_OUT_DIR/rust |
| |
| if [[ ! -f config.toml ]]; then |
| $RUST_ROOT/configure --target=$TARGETS --sysconfdir=$PREFIX/etc --enable-extended --prefix=$PREFIX --enable-ninja --enable-optimize --enable-optimize-llvm --enable-cargo-openssl-static |
| fi |
| |
| python2.7 $RUST_ROOT/x.py dist && python2.7 $RUST_ROOT/x.py install |