From e005f4cad598c7278dfcef52ac7cbe1203c963f2 Mon Sep 17 00:00:00 2001 From: Josh Triplett <josh@joshtriplett.org> Date: Sat, 19 Sep 2020 20:38:54 -0700 Subject: [PATCH] Consolidate handling of libutil, and handle crt-static The two library blocks that specify `#[link(name = "util")]` do not actually reference any functions in `libutil`; the functions that do use `libutil` don't have any reference to it. And having two library blocks specify it results in two separate inclusions of `-lutil` on the linker command line. Move the link lines up to `src/unix/mod.rs`, making it easier to see all the libraries `libc` links to. This also makes `libutil` respect `target-feature=+crt-static`. --- src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs | 1 - src/unix/linux_like/linux/gnu/mod.rs | 1 - src/unix/mod.rs | 3 +++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs index 64a6de9c..56170c4e 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs @@ -410,7 +410,6 @@ pub const SYS_pkey_alloc: ::c_long = 330; pub const SYS_pkey_free: ::c_long = 331; pub const SYS_statx: ::c_long = 332; -#[link(name = "util")] extern "C" { pub fn sysctl( name: *mut ::c_int, diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 44232e98..9ea34dec 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -1362,7 +1362,6 @@ extern "C" { ) -> ::c_int; } -#[link(name = "util")] extern "C" { pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int; diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 3b2cc3f2..32e8d932 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -301,6 +301,8 @@ cfg_if! { } else if #[cfg(all(target_os = "linux", target_env = "gnu", feature = "rustc-dep-of-std"))] { + #[link(name = "util", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] #[link(name = "rt", kind = "static-nobundle", cfg(target_feature = "crt-static"))] #[link(name = "pthread", kind = "static-nobundle", @@ -313,6 +315,7 @@ cfg_if! { cfg(target_feature = "crt-static"))] #[link(name = "gcc", kind = "static-nobundle", cfg(target_feature = "crt-static"))] + #[link(name = "util", cfg(not(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")))] -- GitLab