-[package]
-authors = ["Scott Olson <scott@solson.me>"]
-description = "An experimental interpreter for Rust MIR."
-license = "MIT/Apache-2.0"
-name = "miri"
-repository = "https://github.com/solson/miri"
-version = "0.1.0"
-build = "build.rs"
-
-[[bin]]
-doc = false
-name = "miri"
-path = "miri/bin/miri.rs"
+[workspace]
+members = [
+ "src/bootstrap",
+ "src/rustc",
+ "src/libstd",
+ "src/libtest",
+ "src/librustc_codegen_llvm",
+ "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/build-manifest",
+ "src/tools/remote-test-client",
+ "src/tools/remote-test-server",
+ "src/tools/rust-installer",
+ "src/tools/cargo",
+ "src/tools/rustdoc",
+ "src/tools/rls",
+ "src/tools/rustfmt",
+ "src/tools/miri",
+ "src/tools/rustdoc-themes",
+]
+exclude = [
+ "src/tools/rls/test_data",
+ "build",
+ # HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`.
+ "obj",
+]
-[[bin]]
-doc = false
-name = "cargo-miri"
-path = "miri/bin/cargo-miri.rs"
-required-features = ["cargo_miri"]
+# Curiously, LLVM 7.0 will segfault if compiled with opt-level=3
+# See issue https://github.com/rust-lang/rust/issues/52378
+[profile.release]
+opt-level = 2
+[profile.bench]
+opt-level = 2
-[lib]
-path = "miri/lib.rs"
+# These options are controlled from our rustc wrapper script, so turn them off
+# here and have them controlled elsewhere.
+[profile.dev]
+debug = false
+debug-assertions = false
+[profile.test]
+debug = false
+debug-assertions = false
-[dependencies]
-byteorder = { version = "1.1", features = ["i128"]}
-env_logger = "0.4.3"
-log = "0.3.6"
-log_settings = "0.1.1"
-cargo_metadata = { version = "0.2", optional = true }
-rustc_miri = { path = "src/librustc_mir" }
+# 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" }
-[features]
-cargo_miri = ["cargo_metadata"]
+[patch.crates-io]
+# 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" }
-[dev-dependencies]
-compiletest_rs = { version = "0.3", features = ["tmp"] }
+# 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' }
-[workspace]
-exclude = ["xargo", "cargo-miri-test", "rustc_tests"]
+[patch."https://github.com/rust-lang/rust-clippy"]
+clippy_lints = { path = "src/tools/clippy/clippy_lints" }
+rustc_tools_util = { path = "src/tools/clippy/rustc_tools_util" }