diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-12-03 08:59:09 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-12-03 08:59:09 -0800 |
| commit | cb823b09dfc2ca71bda66e874c5e450038fbec1d (patch) | |
| tree | 5dba3a57d609a2540e4379f0707058b488084b70 /src | |
| parent | 18084be3164d2fe7c540662ea1e44cf73af9bf0f (diff) | |
| download | rust-cb823b09dfc2ca71bda66e874c5e450038fbec1d.tar.gz rust-cb823b09dfc2ca71bda66e874c5e450038fbec1d.zip | |
Search for libfoo.a on windows as well as foo.lib
Turns out LLVM only builds libfoo.a libraries, so we're going to need this logic to statically link librustc
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/back/archive.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/librustc/back/archive.rs b/src/librustc/back/archive.rs index 9f5aaf3a426..4711381a7b8 100644 --- a/src/librustc/back/archive.rs +++ b/src/librustc/back/archive.rs @@ -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)); |
