]> git.lizzy.rs Git - rust.git/commitdiff
Support link_args at the crate level. Closes #1301
authorZack Corr <zack@z0w0.me>
Sat, 16 Feb 2013 15:21:56 +0000 (01:21 +1000)
committerZack Corr <zack@z0w0.me>
Sat, 16 Feb 2013 15:21:56 +0000 (01:21 +1000)
src/librustc/metadata/creader.rs

index a2203f0a3998a6f1f9a3f30db7c6d1a19960a349..a4daac1ebe155e4c83d8cb82216d88474ab4e380 100644 (file)
@@ -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) => {