
By naming them in `[workspace.lints.rust]` in the top-level `Cargo.toml`, and then making all `compiler/` crates inherit them with `[lints] workspace = true`. (I omitted `rustc_codegen_{cranelift,gcc}`, because they're a bit different.) The advantages of this over the current approach: - It uses a standard Cargo feature, rather than special handling in bootstrap. So, easier to understand, and less likely to get accidentally broken in the future. - It works for proc macro crates. It's a shame it doesn't work for rustc-specific lints, as the comments explain.
107 lines
3.6 KiB
TOML
107 lines
3.6 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"compiler/rustc",
|
|
"src/build_helper",
|
|
"src/etc/test-float-parse",
|
|
"src/rustc-std-workspace/rustc-std-workspace-core",
|
|
"src/rustc-std-workspace/rustc-std-workspace-alloc",
|
|
"src/rustc-std-workspace/rustc-std-workspace-std",
|
|
"src/rustdoc-json-types",
|
|
"src/tools/cargotest",
|
|
"src/tools/clippy",
|
|
"src/tools/clippy/clippy_dev",
|
|
"src/tools/compiletest",
|
|
"src/tools/run-make-support",
|
|
"src/tools/linkchecker",
|
|
"src/tools/lint-docs",
|
|
"src/tools/miropt-test-tools",
|
|
"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/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/jsondocck",
|
|
"src/tools/jsondoclint",
|
|
"src/tools/llvm-bitcode-linker",
|
|
"src/tools/html-checker",
|
|
"src/tools/bump-stage0",
|
|
"src/tools/replace-version-placeholder",
|
|
"src/tools/lld-wrapper",
|
|
"src/tools/collect-license-metadata",
|
|
"src/tools/generate-copyright",
|
|
"src/tools/suggest-tests",
|
|
"src/tools/generate-windows-sys",
|
|
"src/tools/rustdoc-gui-test",
|
|
"src/tools/opt-dist",
|
|
"src/tools/coverage-dump",
|
|
"src/tools/wasm-component-ld",
|
|
"src/tools/features-status-dump",
|
|
]
|
|
|
|
exclude = [
|
|
"build",
|
|
"compiler/rustc_codegen_cranelift",
|
|
"compiler/rustc_codegen_gcc",
|
|
"src/bootstrap",
|
|
"tests/rustdoc-gui",
|
|
# HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`.
|
|
"obj",
|
|
# The `x` binary is a thin wrapper that calls `x.py`, which initializes
|
|
# submodules, before which workspace members cannot be invoked because
|
|
# not all `Cargo.toml` files are available, so we exclude the `x` binary,
|
|
# so it can be invoked before the current checkout is set up.
|
|
"src/tools/x",
|
|
]
|
|
|
|
# These lints are applied to many crates in the workspace. In practice, this is
|
|
# all crates under `compiler/`.
|
|
#
|
|
# NOTE: rustc-specific lints (e.g. `rustc::internal`) aren't supported by
|
|
# Cargo. (Support for them is possibly blocked by #44690 (attributes for
|
|
# tools).) Those lints are instead specified for `compiler/` crates in
|
|
# `src/bootstrap/src/core/builder/cargo.rs`.
|
|
[workspace.lints.rust]
|
|
# FIXME(edition_2024): Change this to `-Wrust_2024_idioms` when all of the
|
|
# individual lints are satisfied.
|
|
keyword_idents_2024 = "warn"
|
|
unsafe_op_in_unsafe_fn = "warn"
|
|
|
|
[profile.release.package.rustc-rayon-core]
|
|
# The rustc fork of Rayon has deadlock detection code which intermittently
|
|
# causes overflows in the CI (see https://github.com/rust-lang/rust/issues/90227)
|
|
# so we turn overflow checks off for now.
|
|
# FIXME: This workaround should be removed once #90227 is fixed.
|
|
overflow-checks = false
|
|
|
|
# These are very thin wrappers around executing lld with the right binary name.
|
|
# Basically nothing within them can go wrong without having been explicitly logged anyway.
|
|
# We ship these in every rustc tarball and even after compression they add up
|
|
# to around 0.6MB of data every user needs to download (and 15MB on disk).
|
|
[profile.release.package.lld-wrapper]
|
|
debug = 0
|
|
strip = true
|
|
[profile.release.package.wasm-component-ld-wrapper]
|
|
debug = 0
|
|
strip = true
|
|
|
|
# Bigint libraries are slow without optimization, speed up testing
|
|
[profile.dev.package.test-float-parse]
|
|
opt-level = 3
|
|
|
|
# Speed up the binary as much as possible
|
|
[profile.release.package.test-float-parse]
|
|
opt-level = 3
|
|
codegen-units = 1
|
|
# FIXME: LTO cannot be enabled for binaries in a workspace
|
|
# <https://github.com/rust-lang/cargo/issues/9330>
|
|
# lto = true
|