Expand description
Implementation of the various distribution aspects of the compiler.
This module is responsible for creating tarballs of the standard library, compiler, and documentation. This ends up being what we distribute to everyone as well.
No tarball is actually created literally in this file, but rather we shell
out to rust-installer
still. This may one day be replaced with bits and
pieces of rustup.rs
!
StructsΒ§
- Analysis
- The
rust-analysis
component used to create a tarball of save-analysis metadata. - Bootstrap
- Tarball intended for internal consumption to ease rustc/std development.
- Build
Manifest - Tarball containing a prebuilt version of the build-manifest tool, intended to be used by the release process to avoid cloning the monorepo and building stuff.
- Cargo
- Clippy
- Cranelift
Codegen Backend - Debugger
Scripts - Copies debugger scripts for
target
into the given compilersysroot
. - Docs
- Extended
- Extended archive that contains the compiler, standard library and a bunch of tools.
- Gcc
- Tarball containing a prebuilt version of the libgccjit library, needed as a dependency for the GCC codegen backend (similarly to the LLVM backend needing a prebuilt libLLVM).
- Json
Docs - Builds the
rust-docs-json
installer component. It contains the documentation of the standard library in JSON format. - Llvm
Bitcode Linker - Distributes the
llvm-bitcode-linker
tool so that it can be used by a compiler whose host istarget
. - Llvm
Tools - Mingw
- Builds the
rust-mingw
installer component. - Miri
- Plain
Source Tarball - Reproducible
Artifacts - Tarball containing artifacts necessary to reproduce the build of rustc.
- Rust
Analyzer - Distribute the rust-analyzer component, which is used as a LSP by various IDEs.
- RustDev
- Tarball intended for internal consumption to ease rustc/std development.
- Rustc
- Creates the
rustc
installer component. - Rustc
Dev - Tarball containing the compiler that gets downloaded and used by
rust.download-rustc
. - Rustc
Docs - Builds the
rustc-docs
installer component. Apart from the documentation of therustc_*
crates, it also includes the documentation of various in-tree helper tools (bootstrap, build_helper, tidy), and also rustc_private tools like rustdoc, clippy, miri or rustfmt. - Rustfmt
- Src
- Std
- Builds the standard library (
rust-std
) dist component for a giventarget
. This includes the standard library dynamic library file (e.g. .so/.dll), along with stdlib .rlibs.
FunctionsΒ§
- add_env π
- copy_
src_ πdirs - Use the
builder
to make a filtered copy ofbase
/X for X in (src_dirs
-exclude_dirs
) todst_dir
. - copy_
target_ πlibs - Copy stamped files into an imageβs
target/lib
directory. - distdir π
- find_
files π - generate_
target_ πspec_ json_ schema - get_
cc_ πsearch_ dirs - install_
llvm_ πfile - make_
win_ πdist - maybe_
install_ πllvm - Maybe add LLVM object files to the given destination lib-dir. Allows either static or dynamic linking.
- maybe_
install_ llvm_ runtime - Maybe add libLLVM.so to the runtime lib-dir for rustc itself.
- maybe_
install_ llvm_ target - Maybe add libLLVM.so to the target lib-dir for linking.
- pkgname
- runtime_
dll_ πdist - should_
build_ πextended_ tool - skip_
host_ πtarget_ lib - tmpdir
- verify_
uefi_ πrlib_ format - Check that all objects in rlibs for UEFI targets are COFF. This ensures that the C compiler isnβt producing ELF objects, which would not link correctly with the COFF objects.