Skip to content

Commit

Permalink
auto merge of #10785 : alexcrichton/rust/omg-i-hate-windows, r=pcwalton
Browse files Browse the repository at this point in the history
Turns out LLVM only builds libfoo.a libraries, so we're going to need this logic
to statically link librustc
  • Loading branch information
bors committed Dec 4, 2013
2 parents 50e9d4f + cb823b0 commit c22f6d8
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/librustc/back/archive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,18 +119,25 @@ impl Archive {
}

fn find_library(&self, name: &str) -> Path {
let (prefix, ext) = match self.sess.targ_cfg.os {
let (osprefix, osext) = match self.sess.targ_cfg.os {
abi::OsWin32 => ("", "lib"), _ => ("lib", "a"),
};
let libname = format!("{}{}.{}", prefix, name, ext);
// On windows, static libraries sometimes show up as libfoo.a and other
// times show up as foo.lib
let oslibname = format!("{}{}.{}", osprefix, name, osext);
let unixlibname = format!("lib{}.a", name);

let mut rustpath = filesearch::rust_path();
rustpath.push(self.sess.filesearch.get_target_lib_path());
let path = self.sess.opts.addl_lib_search_paths.iter();
for path in path.chain(rustpath.iter()) {
debug!("looking for {} inside {}", name, path.display());
let test = path.join(libname.clone());
let test = path.join(oslibname.as_slice());
if test.exists() { return test }
if oslibname != unixlibname {
let test = path.join(unixlibname.as_slice());
if test.exists() { return test }
}
}
self.sess.fatal(format!("could not find native static library `{}`, \
perhaps an -L flag is missing?", name));
Expand Down

0 comments on commit c22f6d8

Please sign in to comment.