[workspace] members = [ "src/bootstrap", "src/rustc", "src/librustc_codegen_llvm", "library/std", "library/test", "src/tools/cargotest", "src/tools/clippy", "src/tools/compiletest", "src/tools/error_index_generator", "src/tools/linkchecker", "src/tools/rustbook", "src/tools/unstable-book-gen", "src/tools/tidy", "src/tools/tier-check", "src/tools/build-manifest", "src/tools/remote-test-client", "src/tools/remote-test-server", "src/tools/rust-installer", "src/tools/rust-demangler", "src/tools/cargo", "src/tools/rustdoc", "src/tools/rls", "src/tools/rustfmt", "src/tools/miri", "src/tools/miri/cargo-miri", "src/tools/rustdoc-themes", "src/tools/unicode-table-generator", "src/tools/expand-yaml-anchors", ] exclude = [ "build", # HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`. "obj", ] [profile.release.package.compiler_builtins] # The compiler-builtins crate cannot reference libcore, and it's own CI will # verify that this is the case. This requires, however, that the crate is built # without overflow checks and debug assertions. Forcefully disable debug # assertions and overflow checks here which should ensure that even if these # assertions are enabled for libstd we won't enable then for compiler_builtins # which should ensure we still link everything correctly. debug-assertions = false overflow-checks = false # For compiler-builtins we always use a high number of codegen units. # The goal here is to place every single intrinsic into its own object # file to avoid symbol clashes with the system libgcc if possible. Note # that this number doesn't actually produce this many object files, we # just don't create more than this number of object files. # # It's a bit of a bummer that we have to pass this here, unfortunately. # Ideally this would be specified through an env var to Cargo so Cargo # knows how many CGUs are for this specific crate, but for now # per-crate configuration isn't specifiable in the environment. codegen-units = 10000 # These dependencies of the standard library implement symbolication for # backtraces on most platforms. Their debuginfo causes both linking to be slower # (more data to chew through) and binaries to be larger without really all that # much benefit. This section turns them all to down to have no debuginfo which # helps to improve link times a little bit. [profile.release.package] addr2line.debug = 0 adler.debug = 0 gimli.debug = 0 miniz_oxide.debug = 0 object.debug = 0 # We want the RLS to use the version of Cargo that we've got vendored in this # repository to ensure that the same exact version of Cargo is used by both the # RLS and the Cargo binary itself. The RLS depends on Cargo as a git repository # so we use a `[patch]` here to override the github repository with our local # vendored copy. [patch."https://github.com/rust-lang/cargo"] cargo = { path = "src/tools/cargo" } [patch."https://github.com/rust-lang/rustfmt"] # Similar to Cargo above we want the RLS to use a vendored version of `rustfmt` # that we're shipping as well (to ensure that the rustfmt in RLS and the # `rustfmt` executable are the same exact version). rustfmt-nightly = { path = "src/tools/rustfmt" } [patch.crates-io] # See comments in `src/tools/rustc-workspace-hack/README.md` for what's going on # here rustc-workspace-hack = { path = 'src/tools/rustc-workspace-hack' } # See comments in `library/rustc-std-workspace-core/README.md` for what's going on # here rustc-std-workspace-core = { path = 'library/rustc-std-workspace-core' } rustc-std-workspace-alloc = { path = 'library/rustc-std-workspace-alloc' } rustc-std-workspace-std = { path = 'library/rustc-std-workspace-std' } # This crate's integration with libstd is a bit wonky, so we use a submodule # instead of a crates.io dependency. Make sure everything else in the repo is # also using the submodule, however, so we can avoid duplicate copies of the # source code for this crate. backtrace = { path = "library/backtrace" } [patch."https://github.com/rust-lang/rust-clippy"] clippy_lints = { path = "src/tools/clippy/clippy_lints" }