From 19eb225bc2725202c02e3d520876bab25dc026d1 Mon Sep 17 00:00:00 2001 From: Zack Corr Date: Sun, 17 Feb 2013 01:21:56 +1000 Subject: [PATCH] Support link_args at the crate level. Closes #1301 --- src/librustc/metadata/creader.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs index a2203f0a3998..a4daac1ebe15 100644 --- a/src/librustc/metadata/creader.rs +++ b/src/librustc/metadata/creader.rs @@ -55,6 +55,7 @@ pub fn read_crates(diag: span_handler, visit_view_item: |a| visit_view_item(e, a), visit_item: |a| visit_item(e, a), .. *visit::default_simple_visitor()}); + visit_crate(e, crate); visit::visit_crate(crate, (), v); dump_crates(e.crate_cache); warn_if_multiple_versions(e, diag, e.crate_cache); @@ -125,6 +126,20 @@ struct Env { intr: @ident_interner } +fn visit_crate(e: @mut Env, c: ast::crate) { + let cstore = e.cstore; + let link_args = attr::find_attrs_by_name(c.node.attrs, "link_args"); + + for link_args.each |a| { + match attr::get_meta_item_value_str(attr::attr_meta(*a)) { + Some(ref linkarg) => { + cstore::add_used_link_args(cstore, (/*bad*/copy *linkarg)); + } + None => {/* fallthrough */ } + } + } +} + fn visit_view_item(e: @mut Env, i: @ast::view_item) { match /*bad*/copy i.node { ast::view_item_use(ident, meta_items, id) => {