• A
    rustc: Load the `rustc_trans` crate at runtime · 884715c6
    Alex Crichton 提交于
    Building on the work of # 45684 this commit updates the compiler to
    unconditionally load the `rustc_trans` crate at runtime instead of linking to it
    at compile time. The end goal of this work is to implement # 46819 where rustc
    will have multiple backends available to it to load.
    
    This commit starts off by removing the `extern crate rustc_trans` from the
    driver. This involved moving some miscellaneous functionality into the
    `TransCrate` trait and also required an implementation of how to locate and load
    the trans backend. This ended up being a little tricky because the sysroot isn't
    always the right location (for example `--sysroot` arguments) so some extra code
    was added as well to probe a directory relative to the current dll (the
    rustc_driver dll).
    
    Rustbuild has been updated accordingly as well to have a separate compilation
    invocation for the `rustc_trans` crate and assembly it accordingly into the
    sysroot. Finally, the distribution logic for the `rustc` package was also
    updated to slurp up the trans backends folder.
    
    A number of assorted fallout changes were included here as well to ensure tests
    pass and such, and they should all be commented inline.
    884715c6
test.rs 49.8 KB