Clean up find_library_crate
.
By introducing prefix and suffix variables for all file types, and renaming some variables.
This commit is contained in:
parent
0ba47f3216
commit
6dcda2aaec
1 changed files with 19 additions and 21 deletions
|
@ -371,11 +371,17 @@ impl<'a> CrateLocator<'a> {
|
|||
extra_prefix: &str,
|
||||
seen_paths: &mut FxHashSet<PathBuf>,
|
||||
) -> Result<Option<Library>, CrateError> {
|
||||
// want: crate_name.dir_part() + prefix + crate_name.file_part + "-"
|
||||
let dylib_prefix = format!("{}{}{}", self.target.dll_prefix, self.crate_name, extra_prefix);
|
||||
let rlib_prefix = format!("lib{}{}", self.crate_name, extra_prefix);
|
||||
let rmeta_prefix = &format!("lib{}{}", self.crate_name, extra_prefix);
|
||||
let rlib_prefix = rmeta_prefix;
|
||||
let dylib_prefix =
|
||||
&format!("{}{}{}", self.target.dll_prefix, self.crate_name, extra_prefix);
|
||||
let staticlib_prefix =
|
||||
format!("{}{}{}", self.target.staticlib_prefix, self.crate_name, extra_prefix);
|
||||
&format!("{}{}{}", self.target.staticlib_prefix, self.crate_name, extra_prefix);
|
||||
|
||||
let rmeta_suffix = ".rmeta";
|
||||
let rlib_suffix = ".rlib";
|
||||
let dylib_suffix = &self.target.dll_suffix;
|
||||
let staticlib_suffix = &self.target.staticlib_suffix;
|
||||
|
||||
let mut candidates: FxHashMap<_, (FxHashMap<_, _>, FxHashMap<_, _>, FxHashMap<_, _>)> =
|
||||
Default::default();
|
||||
|
@ -399,23 +405,15 @@ impl<'a> CrateLocator<'a> {
|
|||
for spf in search_path.files.iter() {
|
||||
debug!("testing {}", spf.path.display());
|
||||
|
||||
let file = &spf.file_name_str;
|
||||
let (hash, found_kind) = if file.starts_with(&rlib_prefix)
|
||||
&& file.ends_with(".rlib")
|
||||
{
|
||||
(&file[(rlib_prefix.len())..(file.len() - ".rlib".len())], CrateFlavor::Rlib)
|
||||
} else if file.starts_with(&rlib_prefix) && file.ends_with(".rmeta") {
|
||||
(&file[(rlib_prefix.len())..(file.len() - ".rmeta".len())], CrateFlavor::Rmeta)
|
||||
} else if file.starts_with(&dylib_prefix) && file.ends_with(&self.target.dll_suffix)
|
||||
{
|
||||
(
|
||||
&file[(dylib_prefix.len())..(file.len() - self.target.dll_suffix.len())],
|
||||
CrateFlavor::Dylib,
|
||||
)
|
||||
let f = &spf.file_name_str;
|
||||
let (hash, kind) = if f.starts_with(rlib_prefix) && f.ends_with(rlib_suffix) {
|
||||
(&f[rlib_prefix.len()..(f.len() - rlib_suffix.len())], CrateFlavor::Rlib)
|
||||
} else if f.starts_with(rmeta_prefix) && f.ends_with(rmeta_suffix) {
|
||||
(&f[rmeta_prefix.len()..(f.len() - rmeta_suffix.len())], CrateFlavor::Rmeta)
|
||||
} else if f.starts_with(dylib_prefix) && f.ends_with(dylib_suffix) {
|
||||
(&f[dylib_prefix.len()..(f.len() - dylib_suffix.len())], CrateFlavor::Dylib)
|
||||
} else {
|
||||
if file.starts_with(&staticlib_prefix)
|
||||
&& file.ends_with(&self.target.staticlib_suffix)
|
||||
{
|
||||
if f.starts_with(staticlib_prefix) && f.ends_with(staticlib_suffix) {
|
||||
staticlibs.push(CrateMismatch {
|
||||
path: spf.path.clone(),
|
||||
got: "static".to_string(),
|
||||
|
@ -432,7 +430,7 @@ impl<'a> CrateLocator<'a> {
|
|||
continue;
|
||||
};
|
||||
seen_paths.insert(path.clone());
|
||||
match found_kind {
|
||||
match kind {
|
||||
CrateFlavor::Rlib => rlibs.insert(path, search_path.kind),
|
||||
CrateFlavor::Rmeta => rmetas.insert(path, search_path.kind),
|
||||
CrateFlavor::Dylib => dylibs.insert(path, search_path.kind),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue