run_make_support/external_deps/c_cxx_compiler/
extras.rs

1use crate::{is_msvc, is_win7, is_windows, uname};
2
3/// `EXTRACFLAGS`
4pub 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
29/// `EXTRACXXFLAGS`
30pub 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}