-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.rs
More file actions
44 lines (37 loc) · 1.34 KB
/
build.rs
File metadata and controls
44 lines (37 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use build_target::{Arch, Os};
fn main() {
let version_meta = rustc_version::version_meta().unwrap();
let use_nightly = cfg!(feature = "nightly") && !cfg!(feature = "stable")
|| version_meta.channel == rustc_version::Channel::Nightly;
if use_nightly {
cargo_emit::rustc_cfg!("nightly");
}
// from https://github.com/rust-lang/rust/blob/873122c006315e541c30809210089606877122c5/tests/ui/abi/unsupported.rs
let t = build_target::target();
if t.arch == Arch::X86 {
cargo_emit::rustc_cfg!("has_abi_cdecl");
cargo_emit::rustc_cfg!("has_abi_stdcall");
cargo_emit::rustc_cfg!("has_abi_fastcall");
cargo_emit::rustc_cfg!("has_abi_thiscall");
}
if matches!(t.arch, Arch::X86 | Arch::X86_64) && cfg!(feature = "abi_vectorcall") && use_nightly
{
cargo_emit::rustc_cfg!("has_abi_vectorcall");
}
if t.arch == Arch::X86_64 {
if t.os == Os::Windows {
cargo_emit::rustc_cfg!("has_abi_win64")
} else {
cargo_emit::rustc_cfg!("has_abi_sysv64")
}
}
if t.arch == Arch::Arm {
cargo_emit::rustc_cfg!("has_abi_aapcs");
}
if matches!(
t.arch,
Arch::X86 | Arch::X86_64 | Arch::Arm | Arch::AArch64 | Arch::Riscv32 | Arch::Riscv64
) {
cargo_emit::rustc_cfg!("has_abi_efiapi");
}
}