2 authors = ["The Rust Project Developers"]
12 arena = { path = "../libarena" }
14 fmt_macros = { path = "../libfmt_macros" }
15 graphviz = { path = "../libgraphviz" }
18 scoped-tls = { version = "0.1.1", features = ["nightly"] }
19 log = { version = "0.4", features = ["release_max_level_info", "std"] }
20 polonius-engine = "0.5.0"
21 proc_macro = { path = "../libproc_macro" }
23 rustc-rayon-core = "0.1.1"
24 rustc_apfloat = { path = "../librustc_apfloat" }
25 rustc_target = { path = "../librustc_target" }
26 rustc_data_structures = { path = "../librustc_data_structures" }
27 rustc_errors = { path = "../librustc_errors" }
28 serialize = { path = "../libserialize" }
29 syntax = { path = "../libsyntax" }
30 syntax_pos = { path = "../libsyntax_pos" }
33 byteorder = { version = "1.1", features = ["i128"]}
34 chalk-engine = { version = "0.7.0", default-features=false }
35 rustc_fs_util = { path = "../librustc_fs_util" }
36 smallvec = { version = "0.6.5", features = ["union"] }
38 # Note that these dependencies are a lie, they're just here to get linkage to
41 # We're creating a bunch of dylibs for the compiler but we're also compiling a
42 # bunch of crates.io crates. Everything in the compiler is compiled as an
43 # rlib/dylib pair but all crates.io crates tend to just be rlibs. This means
44 # we've got a problem for dependency graphs that look like:
46 # foo - rustc_codegen_llvm
48 # rustc ---- rustc_driver
50 # foo - rustc_metadata
52 # Here the crate `foo` is linked into the `rustc_codegen_llvm` and the
53 # `rustc_metadata` dylibs, meaning we've got duplicate copies! When we then
54 # go to link `rustc_driver` the compiler notices this and gives us a compiler
57 # To work around this problem we just add these crates.io dependencies to the
58 # `rustc` crate which is a shared dependency above. That way the crate `foo`
59 # shows up in the dylib for the `rustc` crate, deduplicating it and allowing
60 # crates like `rustc_codegen_llvm` to use `foo` *through* the `rustc` crate.
62 # tl;dr; this is not needed to get `rustc` to compile, but if you remove it then
63 # later crate stop compiling. If you can remove this and everything
64 # compiles, then please feel free to do so!