run_make_support/external_deps/c_cxx_compiler/
extras.rs1use crate::{is_msvc, is_win7, is_windows, uname};
2
3pub fn extra_c_flags() -> Vec<&'static str> {
5 if is_windows() {
6 if is_msvc() {
7 let mut libs =
8 vec!["ws2_32.lib", "userenv.lib", "bcrypt.lib", "ntdll.lib", "synchronization.lib"];
9 if is_win7() {
10 libs.push("advapi32.lib");
11 }
12 libs
13 } else {
14 vec!["-lws2_32", "-luserenv", "-lbcrypt", "-lntdll", "-lsynchronization"]
15 }
16 } else {
17 match uname() {
18 n if n.contains("Darwin") => vec!["-lresolv"],
19 n if n.contains("FreeBSD") => vec!["-lm", "-lpthread", "-lgcc_s"],
20 n if n.contains("SunOS") => {
21 vec!["-lm", "-lpthread", "-lposix4", "-lsocket", "-lresolv"]
22 }
23 n if n.contains("OpenBSD") => vec!["-lm", "-lpthread", "-lc++abi"],
24 _ => vec!["-lm", "-lrt", "-ldl", "-lpthread"],
25 }
26 }
27}
28
29pub fn extra_cxx_flags() -> Vec<&'static str> {
31 if is_windows() {
32 if is_msvc() { vec![] } else { vec!["-lstdc++"] }
33 } else {
34 match &uname()[..] {
35 "Darwin" => vec!["-lc++"],
36 "FreeBSD" | "SunOS" | "OpenBSD" => vec![],
37 _ => vec!["-lstdc++"],
38 }
39 }
40}