Skip to content

Commit

Permalink
auto merge of #11500 : jhasse/rust/patch-rlib, r=alexcrichton
Browse files Browse the repository at this point in the history
Currently `rustpkg` only looks for shared libraries. After this patch it also looks for `*.rlib` files.
  • Loading branch information
bors committed Jan 22, 2014
2 parents 918a731 + 6ccc1e8 commit f8477c9
Showing 1 changed file with 22 additions and 15 deletions.
37 changes: 22 additions & 15 deletions src/librustpkg/path_util.rs
Expand Up @@ -226,10 +226,13 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti
};
debug!("dir has {:?} entries", dir_contents.len());

let lib_prefix = format!("{}{}", os::consts::DLL_PREFIX, short_name);
let lib_filetype = os::consts::DLL_EXTENSION;
let dll_prefix = format!("{}{}", os::consts::DLL_PREFIX, short_name);
let dll_filetype = os::consts::DLL_EXTENSION;
let rlib_prefix = format!("{}{}", "lib", short_name);
let rlib_filetype = "rlib";

debug!("lib_prefix = {} and lib_filetype = {}", lib_prefix, lib_filetype);
debug!("dll_prefix = {} and dll_filetype = {}", dll_prefix, dll_filetype);
debug!("rlib_prefix = {} and rlib_filetype = {}", rlib_prefix, rlib_filetype);

// Find a filename that matches the pattern:
// (lib_prefix)-hash-(version)(lib_suffix)
Expand All @@ -238,7 +241,7 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti
debug!("p = {}, p's extension is {:?}", p.display(), extension);
match extension {
None => false,
Some(ref s) => lib_filetype == *s
Some(ref s) => dll_filetype == *s || rlib_filetype == *s,
}
});

Expand All @@ -258,17 +261,21 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti
Some(i) => {
debug!("Maybe {} is a version", f_name.slice(i + 1, f_name.len()));
match try_parsing_version(f_name.slice(i + 1, f_name.len())) {
Some(ref found_vers) if version == found_vers => {
match f_name.slice(0, i).rfind('-') {
Some(j) => {
debug!("Maybe {} equals {}", f_name.slice(0, j), lib_prefix);
if f_name.slice(0, j) == lib_prefix {
result_filename = Some(p_path.clone());
}
break;
}
None => break
}
Some(ref found_vers) if version == found_vers => {
match f_name.slice(0, i).rfind('-') {
Some(j) => {
let lib_prefix = match p_path.extension_str() {
Some(ref s) if dll_filetype == *s => &dll_prefix,
_ => &rlib_prefix,
};
debug!("Maybe {} equals {}", f_name.slice(0, j), *lib_prefix);
if f_name.slice(0, j) == *lib_prefix {
result_filename = Some(p_path.clone());
}
break;
}
None => break
}

}
_ => { f_name = f_name.slice(0, i); }
Expand Down

0 comments on commit f8477c9

Please sign in to comment.