| FROM ubuntu:22.04 |
| |
| ARG DEBIAN_FRONTEND=noninteractive |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential \ |
| g++ \ |
| make \ |
| ninja-build \ |
| file \ |
| curl \ |
| ca-certificates \ |
| python3 \ |
| git \ |
| cmake \ |
| libssl-dev \ |
| sudo \ |
| xz-utils \ |
| pkg-config \ |
| unzip \ |
| && rm -rf /var/lib/apt/lists/* |
| |
| # Duplicated in dist-various-2 Dockerfile. |
| # FIXME: Move to canonical triple |
| ENV \ |
| AR_x86_64_fuchsia=x86_64-unknown-fuchsia-ar \ |
| CC_x86_64_fuchsia=x86_64-unknown-fuchsia-clang \ |
| CFLAGS_x86_64_fuchsia="--target=x86_64-unknown-fuchsia --sysroot=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/sysroot -I/usr/local/core-linux-amd64-fuchsia-sdk/pkg/fdio/include" \ |
| CXX_x86_64_fuchsia=x86_64-unknown-fuchsia-clang++ \ |
| CXXFLAGS_x86_64_fuchsia="--target=x86_64-unknown-fuchsia --sysroot=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/sysroot -I/usr/local/core-linux-amd64-fuchsia-sdk/pkg/fdio/include" \ |
| LDFLAGS_x86_64_fuchsia="--target=x86_64-unknown-fuchsia --sysroot=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/sysroot -L/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/lib" |
| |
| WORKDIR /tmp |
| COPY scripts/shared.sh /tmp/ |
| COPY scripts/build-fuchsia-toolchain.sh /tmp/ |
| RUN /tmp/build-fuchsia-toolchain.sh |
| |
| ENV CARGO_TARGET_X86_64_FUCHSIA_AR /usr/local/bin/llvm-ar |
| ENV CARGO_TARGET_X86_64_FUCHSIA_RUSTFLAGS \ |
| -C panic=abort \ |
| -C force-unwind-tables=yes \ |
| -C link-arg=--sysroot=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/sysroot \ |
| -Lnative=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/sysroot/lib \ |
| -Lnative=/usr/local/core-linux-amd64-fuchsia-sdk/arch/x64/lib |
| |
| ENV TARGETS=x86_64-fuchsia |
| ENV TARGETS=$TARGETS,x86_64-unknown-linux-gnu |
| ENV TARGETS=$TARGETS,wasm32-unknown-unknown |
| |
| COPY scripts/sccache.sh /scripts/ |
| RUN sh /scripts/sccache.sh |
| |
| ENV RUST_INSTALL_DIR /checkout/obj/install |
| RUN mkdir -p $RUST_INSTALL_DIR/etc |
| |
| # Fuchsia only supports LLVM. |
| ENV CODEGEN_BACKENDS llvm |
| |
| ENV RUST_CONFIGURE_ARGS \ |
| --prefix=$RUST_INSTALL_DIR \ |
| --sysconfdir=etc \ |
| --enable-lld \ |
| --llvm-libunwind=in-tree \ |
| --enable-extended \ |
| --disable-docs \ |
| --set target.x86_64-fuchsia.cc=/usr/local/bin/clang \ |
| --set target.x86_64-fuchsia.cxx=/usr/local/bin/clang++ \ |
| --set target.x86_64-fuchsia.ar=/usr/local/bin/llvm-ar \ |
| --set target.x86_64-fuchsia.ranlib=/usr/local/bin/llvm-ranlib \ |
| --set target.x86_64-fuchsia.linker=/usr/local/bin/ld.lld |
| ENV SCRIPT \ |
| python3 ../x.py install --target $TARGETS compiler/rustc library/std clippy && \ |
| bash ../src/ci/docker/host-x86_64/x86_64-gnu-integration/build-fuchsia.sh |