Enable use of syntax extensions when cross compiling.
This adds the target triple to the crate metadata. When searching for a crate the phase (link, syntax) is taken into account. During link phase only crates matching the target triple are considered. During syntax phase, either the target or host triple will be accepted, unless the crate defines a macro_registrar, in which case only the host triple will match.
This commit is contained in:
parent
09bfb92fdc
commit
4ac89cd276
28 changed files with 260 additions and 212 deletions
|
|
@ -184,7 +184,7 @@ impl<'a> Archive<'a> {
|
|||
let unixlibname = format!("lib{}.a", name);
|
||||
|
||||
let mut rustpath = filesearch::rust_path();
|
||||
rustpath.push(self.sess.filesearch().get_target_lib_path());
|
||||
rustpath.push(self.sess.target_filesearch().get_lib_path());
|
||||
let search = self.sess.opts.addl_lib_search_paths.borrow();
|
||||
for path in search.iter().chain(rustpath.iter()) {
|
||||
debug!("looking for {} inside {}", name, path.display());
|
||||
|
|
|
|||
|
|
@ -1088,7 +1088,7 @@ fn link_args(sess: &Session,
|
|||
// The default library location, we need this to find the runtime.
|
||||
// The location of crates will be determined as needed.
|
||||
// FIXME (#9639): This needs to handle non-utf8 paths
|
||||
let lib_path = sess.filesearch().get_target_lib_path();
|
||||
let lib_path = sess.target_filesearch().get_lib_path();
|
||||
let stage: ~str = "-L".to_owned() + lib_path.as_str().unwrap();
|
||||
|
||||
let mut args = vec!(stage);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ pub fn get_rpath_flags(sess: &Session, out_filename: &Path) -> Vec<~str> {
|
|||
|
||||
debug!("preparing the RPATH!");
|
||||
|
||||
let sysroot = sess.filesearch().sysroot;
|
||||
let sysroot = sess.sysroot();
|
||||
let output = out_filename;
|
||||
let libs = sess.cstore.get_used_crates(cstore::RequireDynamic);
|
||||
let libs = libs.move_iter().filter_map(|(_, l)| {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue