mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Rollup merge of #138233 - smmalis37:no-advapi32, r=ChrisDenton
Windows: Don't link std (and run-make) against advapi32, except on win7 Std no longer depends on any functionality provided by advapi32, so we can remove it from the list of external libraries we link against. Except, the win7 targets do still rely on advapi32-provided functionality. This PR therefore moves linking against it to only occur on win7 targets, so that no new uses of it slip in without being noticed.
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "windows_raw_dylib"))]
|
||||
#[link(name = "advapi32")]
|
||||
#[cfg_attr(target_vendor = "win7", link(name = "advapi32"))]
|
||||
#[link(name = "ntdll")]
|
||||
#[link(name = "userenv")]
|
||||
#[link(name = "ws2_32")]
|
||||
|
||||
@@ -230,8 +230,10 @@ fn make_win_dist(
|
||||
"libiconv.a",
|
||||
"libmoldname.a",
|
||||
"libpthread.a",
|
||||
//Windows import libs
|
||||
//This should contain only the set of libraries necessary to link the standard library.
|
||||
// Windows import libs
|
||||
// This *should* contain only the set of libraries necessary to link the standard library,
|
||||
// however we've had problems with people accidentally depending on extra libs being here,
|
||||
// so we can't easily remove entries.
|
||||
"libadvapi32.a",
|
||||
"libbcrypt.a",
|
||||
"libcomctl32.a",
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
use crate::{is_msvc, is_windows, uname};
|
||||
use crate::{is_msvc, is_win7, is_windows, uname};
|
||||
|
||||
/// `EXTRACFLAGS`
|
||||
pub fn extra_c_flags() -> Vec<&'static str> {
|
||||
if is_windows() {
|
||||
if is_msvc() {
|
||||
vec![
|
||||
"ws2_32.lib",
|
||||
"userenv.lib",
|
||||
"advapi32.lib",
|
||||
"bcrypt.lib",
|
||||
"ntdll.lib",
|
||||
"synchronization.lib",
|
||||
]
|
||||
let mut libs =
|
||||
vec!["ws2_32.lib", "userenv.lib", "bcrypt.lib", "ntdll.lib", "synchronization.lib"];
|
||||
if is_win7() {
|
||||
libs.push("advapi32.lib");
|
||||
}
|
||||
libs
|
||||
} else {
|
||||
vec!["-lws2_32", "-luserenv", "-lbcrypt", "-lntdll", "-lsynchronization"]
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ pub mod rfs {
|
||||
|
||||
/// Helpers for checking target information.
|
||||
pub use targets::{
|
||||
apple_os, is_aix, is_darwin, is_msvc, is_windows, is_windows_gnu, llvm_components_contain,
|
||||
apple_os, is_aix, is_darwin, is_msvc, is_windows, is_windows_gnu, is_win7, llvm_components_contain,
|
||||
target, uname,
|
||||
};
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ pub fn is_windows_gnu() -> bool {
|
||||
target().ends_with("windows-gnu")
|
||||
}
|
||||
|
||||
/// Check if target is win7.
|
||||
#[must_use]
|
||||
pub fn is_win7() -> bool {
|
||||
target().contains("win7")
|
||||
}
|
||||
|
||||
/// Check if target uses macOS.
|
||||
#[must_use]
|
||||
pub fn is_darwin() -> bool {
|
||||
|
||||
Reference in New Issue
Block a user