rustc: Find crates by matching the name metadata
This commit is contained in:
parent
329f045d4c
commit
16dad84f7b
|
@ -119,37 +119,24 @@ fn find_library_crate(sess: session::session, ident: ast::ident,
|
||||||
|
|
||||||
attr::require_unique_names(sess, metas);
|
attr::require_unique_names(sess, metas);
|
||||||
|
|
||||||
let crate_name =
|
// Metadata "name" will be used to find the crate. Use `ident'
|
||||||
{
|
// as "name" if the attribute is not explicitly specified
|
||||||
let name_items = attr::find_meta_items_by_name(metas, "name");
|
if !attr::contains_name(metas, "name") {
|
||||||
alt vec::last(name_items) {
|
metas += [attr::mk_name_value_item_str("name", ident)];
|
||||||
some(i) {
|
}
|
||||||
alt attr::get_meta_item_value_str(i) {
|
|
||||||
some(n) { n }
|
|
||||||
// FIXME: Probably want a warning here since the user
|
|
||||||
// is using the wrong type of meta item
|
|
||||||
_ { ident }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
none. { ident }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let nn = default_native_lib_naming(sess, sess.get_opts().static);
|
let nn = default_native_lib_naming(sess, sess.get_opts().static);
|
||||||
let x =
|
let x =
|
||||||
find_library_crate_aux(nn, crate_name, metas,
|
find_library_crate_aux(nn, metas, sess.filesearch());
|
||||||
sess.filesearch());
|
|
||||||
if x != none || sess.get_opts().static { ret x; }
|
if x != none || sess.get_opts().static { ret x; }
|
||||||
let nn2 = default_native_lib_naming(sess, true);
|
let nn2 = default_native_lib_naming(sess, true);
|
||||||
ret find_library_crate_aux(nn2, crate_name, metas,
|
ret find_library_crate_aux(nn2, metas, sess.filesearch());
|
||||||
sess.filesearch());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_library_crate_aux(nn: {prefix: str, suffix: str}, crate_name: str,
|
fn find_library_crate_aux(nn: {prefix: str, suffix: str},
|
||||||
metas: [@ast::meta_item],
|
metas: [@ast::meta_item],
|
||||||
filesearch: filesearch::filesearch) ->
|
filesearch: filesearch::filesearch) ->
|
||||||
option::t<{ident: str, data: @[u8]}> {
|
option::t<{ident: str, data: @[u8]}> {
|
||||||
let prefix: str = nn.prefix + crate_name;
|
let prefix: str = nn.prefix;
|
||||||
let suffix: str = nn.suffix;
|
let suffix: str = nn.suffix;
|
||||||
|
|
||||||
ret filesearch::search(filesearch, { |path|
|
ret filesearch::search(filesearch, { |path|
|
||||||
|
|
Loading…
Reference in New Issue