about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librustc/back/link.rs10
-rw-r--r--src/librustc/lib/llvm.rs3
-rw-r--r--src/librustc/metadata/csearch.rs7
-rw-r--r--src/librustc/metadata/decoder.rs10
-rw-r--r--src/librustc/metadata/encoder.rs21
-rw-r--r--src/librustdoc/html/markdown.rs1
-rw-r--r--src/librustuv/uvll.rs12
-rw-r--r--src/rt/rustrt.def.in121
8 files changed, 15 insertions, 170 deletions
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 1b9cb10f1dc..815ec943c49 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -16,7 +16,7 @@ use lib::llvm::llvm;
 use lib::llvm::ModuleRef;
 use lib;
 use metadata::common::LinkMeta;
-use metadata::{encoder, csearch, cstore, filesearch};
+use metadata::{encoder, cstore, filesearch};
 use middle::trans::context::CrateContext;
 use middle::trans::common::gensym_name;
 use middle::ty;
@@ -1043,14 +1043,6 @@ pub fn link_args(sess: Session,
     let ula = cstore::get_used_link_args(cstore);
     for arg in ula.iter() { args.push(arg.to_owned()); }
 
-    // Add all the link args for external crates.
-    do cstore::iter_crate_data(cstore) |crate_num, _| {
-        let link_args = csearch::get_link_args_for_crate(cstore, crate_num);
-        for link_arg in link_args.move_iter() {
-            args.push(link_arg);
-        }
-    }
-
     // # Extern library linking
 
     // User-supplied library search paths (-L on the cammand line) These are
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs
index 4eb8a0b8fa6..e152d009050 100644
--- a/src/librustc/lib/llvm.rs
+++ b/src/librustc/lib/llvm.rs
@@ -304,8 +304,7 @@ pub mod llvm {
     use super::debuginfo::*;
     use std::libc::{c_char, c_int, c_longlong, c_ushort, c_uint, c_ulonglong};
 
-    #[link_args = "-Lrustllvm -lrustllvm"]
-    #[link_name = "rustllvm"]
+    #[link_args = "-lrustllvm"]
     extern {
         /* Create and destroy contexts. */
         pub fn LLVMContextCreate() -> ContextRef;
diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs
index 617051c217f..48fe21b3343 100644
--- a/src/librustc/metadata/csearch.rs
+++ b/src/librustc/metadata/csearch.rs
@@ -261,13 +261,6 @@ pub fn get_item_visibility(cstore: @mut cstore::CStore,
     decoder::get_item_visibility(cdata, def_id.node)
 }
 
-pub fn get_link_args_for_crate(cstore: @mut cstore::CStore,
-                               crate_num: ast::CrateNum)
-                            -> ~[~str] {
-    let cdata = cstore::get_crate_data(cstore, crate_num);
-    decoder::get_link_args_for_crate(cdata)
-}
-
 pub fn each_impl(cstore: @mut cstore::CStore,
                  crate_num: ast::CrateNum,
                  callback: &fn(ast::DefId)) {
diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs
index aca41f5f4cb..56abaa27cce 100644
--- a/src/librustc/metadata/decoder.rs
+++ b/src/librustc/metadata/decoder.rs
@@ -1456,16 +1456,6 @@ pub fn translate_def_id(cdata: Cmd, did: ast::DefId) -> ast::DefId {
     }
 }
 
-pub fn get_link_args_for_crate(cdata: Cmd) -> ~[~str] {
-    let link_args = reader::get_doc(reader::Doc(cdata.data), tag_link_args);
-    let mut result = ~[];
-    do reader::tagged_docs(link_args, tag_link_args_arg) |arg_doc| {
-        result.push(arg_doc.as_str());
-        true
-    };
-    result
-}
-
 pub fn each_impl(cdata: Cmd, callback: &fn(ast::DefId)) {
     let impls_doc = reader::get_doc(reader::Doc(cdata.data), tag_impls);
     let _ = do reader::tagged_docs(impls_doc, tag_impls_impl) |impl_doc| {
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs
index 86c4ca0158f..1ad7e416342 100644
--- a/src/librustc/metadata/encoder.rs
+++ b/src/librustc/metadata/encoder.rs
@@ -75,7 +75,6 @@ struct Stats {
     attr_bytes: u64,
     dep_bytes: u64,
     lang_item_bytes: u64,
-    link_args_bytes: u64,
     impl_bytes: u64,
     misc_bytes: u64,
     item_bytes: u64,
@@ -1610,19 +1609,6 @@ fn encode_lang_items(ecx: &EncodeContext, ebml_w: &mut writer::Encoder) {
     ebml_w.end_tag();   // tag_lang_items
 }
 
-fn encode_link_args(ecx: &EncodeContext, ebml_w: &mut writer::Encoder) {
-    ebml_w.start_tag(tag_link_args);
-
-    let link_args = cstore::get_used_link_args(ecx.cstore);
-    for link_arg in link_args.iter() {
-        ebml_w.start_tag(tag_link_args_arg);
-        ebml_w.writer.write(link_arg.as_bytes());
-        ebml_w.end_tag();
-    }
-
-    ebml_w.end_tag();
-}
-
 struct ImplVisitor<'self> {
     ecx: &'self EncodeContext<'self>,
     ebml_w: &'self mut writer::Encoder,
@@ -1740,7 +1726,6 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] {
         attr_bytes: 0,
         dep_bytes: 0,
         lang_item_bytes: 0,
-        link_args_bytes: 0,
         impl_bytes: 0,
         misc_bytes: 0,
         item_bytes: 0,
@@ -1797,11 +1782,6 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] {
     encode_lang_items(&ecx, &mut ebml_w);
     ecx.stats.lang_item_bytes = wr.tell() - i;
 
-    // Encode the link args.
-    i = wr.tell();
-    encode_link_args(&ecx, &mut ebml_w);
-    ecx.stats.link_args_bytes = wr.tell() - i;
-
     // Encode the def IDs of impls, for coherence checking.
     i = wr.tell();
     encode_impls(&ecx, crate, &mut ebml_w);
@@ -1838,7 +1818,6 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] {
         println!(" attribute bytes: {}", ecx.stats.attr_bytes);
         println!("       dep bytes: {}", ecx.stats.dep_bytes);
         println!(" lang item bytes: {}", ecx.stats.lang_item_bytes);
-        println!(" link args bytes: {}", ecx.stats.link_args_bytes);
         println!("      impl bytes: {}", ecx.stats.impl_bytes);
         println!("      misc bytes: {}", ecx.stats.misc_bytes);
         println!("      item bytes: {}", ecx.stats.item_bytes);
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index f4a61e87993..fbe7a965615 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -69,6 +69,7 @@ struct buf {
 }
 
 // sundown FFI
+#[link_args = "-lsundown"]
 extern {
     fn sdhtml_renderer(callbacks: *sd_callbacks,
                        options_ptr: *html_renderopt,
diff --git a/src/librustuv/uvll.rs b/src/librustuv/uvll.rs
index f80178cfa4c..9e86ab11286 100644
--- a/src/librustuv/uvll.rs
+++ b/src/librustuv/uvll.rs
@@ -1003,6 +1003,8 @@ pub struct uv_err_data {
     err_msg: ~str,
 }
 
+// uv_support is the result of compiling rust_uv.cpp
+#[link_args = "-luv_support -luv"]
 extern {
 
     fn rust_uv_handle_size(type_: uintptr_t) -> size_t;
@@ -1172,3 +1174,13 @@ extern {
                             signum: c_int) -> c_int;
     fn rust_uv_signal_stop(handle: *uv_signal_t) -> c_int;
 }
+
+// libuv requires various system libraries to successfully link on some
+// platforms
+#[cfg(target_os = "linux")]
+#[link_args = "-lpthread"]
+extern {}
+
+#[cfg(target_os = "win32")]
+#[link_args = "-lWs2_32 -lpsapi -liphlpapi"]
+extern {}
diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in
index 60e4d3abd7a..275966583d9 100644
--- a/src/rt/rustrt.def.in
+++ b/src/rt/rustrt.def.in
@@ -26,92 +26,6 @@ rust_win32_rand_gen
 rust_win32_rand_release
 upcall_rust_personality
 upcall_reset_stack_limit
-rust_uv_loop_new
-rust_uv_loop_delete
-rust_uv_walk
-rust_uv_loop_set_data
-rust_uv_run
-rust_uv_close
-rust_uv_async_send
-rust_uv_async_init
-rust_uv_timer_init
-rust_uv_timer_start
-rust_uv_timer_stop
-rust_uv_tcp_init
-rust_uv_buf_init
-rust_uv_strerror
-rust_uv_err_name
-rust_uv_ip4_addr
-rust_uv_ip4_name
-rust_uv_ip6_addr
-rust_uv_ip6_name
-rust_uv_tcp_connect
-rust_uv_tcp_bind
-rust_uv_tcp_connect6
-rust_uv_tcp_bind6
-rust_uv_tcp_getsockname
-rust_uv_tcp_nodelay
-rust_uv_tcp_keepalive
-rust_uv_tcp_simultaneous_accepts
-rust_uv_udp_init
-rust_uv_udp_bind
-rust_uv_udp_bind6
-rust_uv_udp_send
-rust_uv_udp_send6
-rust_uv_udp_recv_start
-rust_uv_udp_recv_stop
-rust_uv_get_udp_handle_from_send_req
-rust_uv_udp_getsockname
-rust_uv_udp_set_membership
-rust_uv_udp_set_multicast_loop
-rust_uv_udp_set_multicast_ttl
-rust_uv_udp_set_ttl
-rust_uv_udp_set_broadcast
-rust_uv_is_ipv4_sockaddr
-rust_uv_is_ipv6_sockaddr
-rust_uv_malloc_sockaddr_storage
-rust_uv_free_sockaddr_storage
-rust_uv_listen
-rust_uv_accept
-rust_uv_write
-rust_uv_read_start
-rust_uv_read_stop
-rust_uv_is_ipv4_addrinfo
-rust_uv_is_ipv6_addrinfo
-rust_uv_get_next_addrinfo
-rust_uv_addrinfo_as_sockaddr_in
-rust_uv_addrinfo_as_sockaddr_in6
-rust_uv_get_stream_handle_from_connect_req
-rust_uv_get_stream_handle_from_write_req
-rust_uv_get_loop_for_uv_handle
-rust_uv_get_data_for_uv_loop
-rust_uv_set_data_for_uv_loop
-rust_uv_get_data_for_uv_handle
-rust_uv_set_data_for_uv_handle
-rust_uv_get_data_for_req
-rust_uv_set_data_for_req
-rust_uv_get_base_from_buf
-rust_uv_get_len_from_buf
-rust_uv_getaddrinfo
-rust_uv_freeaddrinfo
-rust_uv_idle_init
-rust_uv_idle_start
-rust_uv_idle_stop
-rust_uv_fs_open
-rust_uv_fs_unlink
-rust_uv_fs_write
-rust_uv_fs_read
-rust_uv_fs_close
-rust_uv_get_result_from_fs_req
-rust_uv_get_ptr_from_fs_req
-rust_uv_get_loop_from_fs_req
-rust_uv_fs_stat
-rust_uv_fs_fstat
-rust_uv_fs_req_cleanup
-rust_uv_populate_uv_stat
-rust_uv_fs_mkdir
-rust_uv_fs_rmdir
-rust_uv_fs_readdir
 rust_dbg_lock_create
 rust_dbg_lock_destroy
 rust_dbg_lock_lock
@@ -128,9 +42,6 @@ rust_signal_little_lock
 rust_wait_little_lock
 tdefl_compress_mem_to_heap
 tinfl_decompress_mem_to_heap
-rust_uv_ip4_port
-rust_uv_ip6_port
-rust_uv_tcp_getpeername
 rust_raw_thread_start
 rust_raw_thread_join
 rust_raw_thread_delete
@@ -150,14 +61,6 @@ rust_dbg_extern_return_TwoU32s
 rust_dbg_extern_return_TwoU64s
 rust_dbg_extern_identity_double
 rust_dbg_extern_identity_u8
-rust_uv_handle_size
-rust_uv_req_size
-rust_uv_handle_type_max
-rust_uv_req_type_max
-rust_uv_ip4_addrp
-rust_uv_ip6_addrp
-rust_uv_free_ip4_addr
-rust_uv_free_ip6_addr
 rust_initialize_rt_tls_key
 rust_dbg_next_port
 rust_try
@@ -172,29 +75,5 @@ rust_get_global_args_ptr
 rust_take_global_args_lock
 rust_drop_global_args_lock
 rust_get_test_int
-rust_uv_get_loop_from_getaddrinfo_req
-rust_uv_spawn
-rust_uv_process_kill
-rust_set_stdio_container_flags
-rust_set_stdio_container_fd
-rust_set_stdio_container_stream
-rust_uv_process_pid
-rust_uv_pipe_init
-rust_uv_signal_init
-rust_uv_signal_start
-rust_uv_signal_stop
-sdhtml_renderer
-sd_markdown_new
-sd_markdown_render
-sd_markdown_free
-bufrelease
-bufnew
 rust_take_dlerror_lock
 rust_drop_dlerror_lock
-rust_uv_pipe_open
-rust_uv_pipe_bind
-rust_uv_pipe_connect
-rust_uv_tty_init
-rust_uv_tty_set_mode
-rust_uv_tty_get_winsize
-rust_uv_guess_handle