Skip to content
Snippets Groups Projects
Commit ac0a7839 authored by Josh Triplett's avatar Josh Triplett
Browse files

Add support for building with static glibc

This will need corresponding changes in rust-lang/rust to activate, but
this will make it possible to make those changes.

Note that despite the apparent redundancy in config directives, the link
directives cannot be simplified any further. Attempting to factor out
the checks for `target_feature = "crt-static"` does not work.
parent 999e5e1f
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@
// Attributes needed when building as part of the standard library
#![cfg_attr(
feature = "rustc-dep-of-std",
feature(cfg_target_vendor, link_cfg, no_core)
feature(cfg_target_vendor, link_cfg, no_core, static_nobundle)
)]
#![cfg_attr(libc_thread_local, feature(thread_local))]
// Enable extra lints:
......
......@@ -298,6 +298,26 @@ cfg_if! {
} else if #[cfg(feature = "std")] {
// cargo build, don't pull in anything extra as the libstd dep
// already pulls in all libs.
} else if #[cfg(all(target_os = "linux",
target_env = "gnu",
feature = "rustc-dep-of-std"))] {
#[link(name = "rt", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "pthread", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "m", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "c", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "gcc_eh", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "gcc", kind = "static-nobundle",
cfg(target_feature = "crt-static"))]
#[link(name = "rt", cfg(not(target_feature = "crt-static")))]
#[link(name = "pthread", cfg(not(target_feature = "crt-static")))]
#[link(name = "m", cfg(not(target_feature = "crt-static")))]
#[link(name = "c", cfg(not(target_feature = "crt-static")))]
extern {}
} else if #[cfg(target_env = "musl")] {
#[cfg_attr(feature = "rustc-dep-of-std",
link(name = "c", kind = "static",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment