From d66f3948f5955c47b57eced6b83eee95acb9764b Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 8 Feb 2016 10:27:03 -0800 Subject: [PATCH] rustc: Use llvm-ar for custom targets by default The compiler currently vendors its own version of "llvm-ar" (not literally the binary but rather the library support) and uses it for all major targets by default (e.g. everything defined in `src/librustc_back/target`). All custom target specs, however, still search for an `ar` tool by default. This commit changes this default behavior to using the internally bundled llvm-ar with the GNU format. Currently all targets use the GNU format except for OSX which uses the BSD format (surely makes sense, right?), and custom targets can change the format via the `archive-format` key in custom target specs. I suspect that we can outright remove support for invoking an external `ar` utility, but I figure for now there may be some crazy target relying on that so we should leave support in for now. --- src/librustc_back/target/asmjs_unknown_emscripten.rs | 1 - src/librustc_back/target/bitrig_base.rs | 1 - src/librustc_back/target/dragonfly_base.rs | 1 - src/librustc_back/target/freebsd_base.rs | 1 - src/librustc_back/target/le32_unknown_nacl.rs | 1 - src/librustc_back/target/linux_base.rs | 1 - src/librustc_back/target/mod.rs | 2 +- src/librustc_back/target/netbsd_base.rs | 1 - src/librustc_back/target/openbsd_base.rs | 1 - src/librustc_back/target/solaris_base.rs | 1 - src/librustc_back/target/windows_base.rs | 1 - src/librustc_back/target/windows_msvc_base.rs | 1 - 12 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/librustc_back/target/asmjs_unknown_emscripten.rs b/src/librustc_back/target/asmjs_unknown_emscripten.rs index b25640c2791b1..4330e2e7b5fb4 100644 --- a/src/librustc_back/target/asmjs_unknown_emscripten.rs +++ b/src/librustc_back/target/asmjs_unknown_emscripten.rs @@ -21,7 +21,6 @@ pub fn target() -> Target { no_compiler_rt: true, linker_is_gnu: true, allow_asm: false, - archive_format: "gnu".to_string(), obj_is_bitcode: true, .. Default::default() }; diff --git a/src/librustc_back/target/bitrig_base.rs b/src/librustc_back/target/bitrig_base.rs index 2b84244cda4a2..8eed36f991554 100644 --- a/src/librustc_back/target/bitrig_base.rs +++ b/src/librustc_back/target/bitrig_base.rs @@ -19,7 +19,6 @@ pub fn opts() -> TargetOptions { linker_is_gnu: true, has_rpath: true, position_independent_executables: true, - archive_format: "gnu".to_string(), exe_allocation_crate: "alloc_system".to_string(), .. Default::default() diff --git a/src/librustc_back/target/dragonfly_base.rs b/src/librustc_back/target/dragonfly_base.rs index ead16f957079c..f05319a0cbeb6 100644 --- a/src/librustc_back/target/dragonfly_base.rs +++ b/src/librustc_back/target/dragonfly_base.rs @@ -29,7 +29,6 @@ pub fn opts() -> TargetOptions { "-Wl,-z,noexecstack".to_string(), ), position_independent_executables: true, - archive_format: "gnu".to_string(), exe_allocation_crate: super::maybe_jemalloc(), .. Default::default() } diff --git a/src/librustc_back/target/freebsd_base.rs b/src/librustc_back/target/freebsd_base.rs index 946e529502e7d..651c2a3760a80 100644 --- a/src/librustc_back/target/freebsd_base.rs +++ b/src/librustc_back/target/freebsd_base.rs @@ -21,7 +21,6 @@ pub fn opts() -> TargetOptions { // Always enable NX protection when it is available "-Wl,-z,noexecstack".to_string(), ], - archive_format: "gnu".to_string(), exe_allocation_crate: super::maybe_jemalloc(), .. Default::default() diff --git a/src/librustc_back/target/le32_unknown_nacl.rs b/src/librustc_back/target/le32_unknown_nacl.rs index a5daebafda8f5..d37102e558d4a 100644 --- a/src/librustc_back/target/le32_unknown_nacl.rs +++ b/src/librustc_back/target/le32_unknown_nacl.rs @@ -25,7 +25,6 @@ pub fn target() -> Target { no_compiler_rt: false, linker_is_gnu: true, allow_asm: false, - archive_format: "gnu".to_string(), .. Default::default() }; Target { diff --git a/src/librustc_back/target/linux_base.rs b/src/librustc_back/target/linux_base.rs index 20aae113f7bb3..d1ab71e41404e 100644 --- a/src/librustc_back/target/linux_base.rs +++ b/src/librustc_back/target/linux_base.rs @@ -31,7 +31,6 @@ pub fn opts() -> TargetOptions { "-Wl,-z,noexecstack".to_string(), ], position_independent_executables: true, - archive_format: "gnu".to_string(), exe_allocation_crate: super::maybe_jemalloc(), has_elf_tls: true, .. Default::default() diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index c61ae547a2254..896fde50147e7 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -249,7 +249,7 @@ impl Default for TargetOptions { pre_link_objects_dll: Vec::new(), post_link_objects: Vec::new(), late_link_args: Vec::new(), - archive_format: String::new(), + archive_format: "gnu".to_string(), custom_unwind_resume: false, lib_allocation_crate: "alloc_system".to_string(), exe_allocation_crate: "alloc_system".to_string(), diff --git a/src/librustc_back/target/netbsd_base.rs b/src/librustc_back/target/netbsd_base.rs index ead8a7259f03b..bf6a2e1ce7562 100644 --- a/src/librustc_back/target/netbsd_base.rs +++ b/src/librustc_back/target/netbsd_base.rs @@ -29,7 +29,6 @@ pub fn opts() -> TargetOptions { "-Wl,-z,noexecstack".to_string(), ), position_independent_executables: true, - archive_format: "gnu".to_string(), .. Default::default() } } diff --git a/src/librustc_back/target/openbsd_base.rs b/src/librustc_back/target/openbsd_base.rs index e0c2d062949d8..d3db0e48771d8 100644 --- a/src/librustc_back/target/openbsd_base.rs +++ b/src/librustc_back/target/openbsd_base.rs @@ -29,7 +29,6 @@ pub fn opts() -> TargetOptions { "-Wl,-z,noexecstack".to_string(), ), position_independent_executables: true, - archive_format: "gnu".to_string(), exe_allocation_crate: "alloc_system".to_string(), .. Default::default() } diff --git a/src/librustc_back/target/solaris_base.rs b/src/librustc_back/target/solaris_base.rs index bf99a141c106d..4ffa0c69da9b5 100644 --- a/src/librustc_back/target/solaris_base.rs +++ b/src/librustc_back/target/solaris_base.rs @@ -18,7 +18,6 @@ pub fn opts() -> TargetOptions { executables: true, has_rpath: true, is_like_solaris: true, - archive_format: "gnu".to_string(), exe_allocation_crate: super::maybe_jemalloc(), .. Default::default() diff --git a/src/librustc_back/target/windows_base.rs b/src/librustc_back/target/windows_base.rs index 4eacea3fcd9a9..1e46f45bdcf4f 100644 --- a/src/librustc_back/target/windows_base.rs +++ b/src/librustc_back/target/windows_base.rs @@ -25,7 +25,6 @@ pub fn opts() -> TargetOptions { staticlib_suffix: ".lib".to_string(), no_default_libraries: true, is_like_windows: true, - archive_format: "gnu".to_string(), pre_link_args: vec!( // And here, we see obscure linker flags #45. On windows, it has been // found to be necessary to have this flag to compile liblibc. diff --git a/src/librustc_back/target/windows_msvc_base.rs b/src/librustc_back/target/windows_msvc_base.rs index fb88ce158e4b3..84e22e84fdb58 100644 --- a/src/librustc_back/target/windows_msvc_base.rs +++ b/src/librustc_back/target/windows_msvc_base.rs @@ -59,7 +59,6 @@ pub fn opts() -> TargetOptions { "/NOLOGO".to_string(), "/NXCOMPAT".to_string(), ], - archive_format: "gnu".to_string(), exe_allocation_crate: "alloc_system".to_string(), .. Default::default()