rustc_target/spec/base/
cygwin.rs
1use std::borrow::Cow;
2
3use crate::spec::{Cc, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo, TargetOptions, cvs};
4
5pub(crate) fn opts() -> TargetOptions {
6 let mut pre_link_args = TargetOptions::link_args(
7 LinkerFlavor::Gnu(Cc::No, Lld::No),
8 &["--disable-dynamicbase", "--enable-auto-image-base"],
9 );
10 crate::spec::add_link_args(
11 &mut pre_link_args,
12 LinkerFlavor::Gnu(Cc::Yes, Lld::No),
13 &["-Wl,--disable-dynamicbase", "-Wl,--enable-auto-image-base"],
14 );
15 let cygwin_libs = &["-lcygwin", "-lgcc", "-lcygwin", "-luser32", "-lkernel32", "-lgcc_s"];
16 let mut late_link_args =
17 TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), cygwin_libs);
18 crate::spec::add_link_args(
19 &mut late_link_args,
20 LinkerFlavor::Gnu(Cc::Yes, Lld::No),
21 cygwin_libs,
22 );
23 TargetOptions {
24 os: "cygwin".into(),
25 vendor: "pc".into(),
26 function_sections: false,
28 linker: Some("gcc".into()),
29 dynamic_linking: true,
30 dll_prefix: "".into(),
31 dll_suffix: ".dll".into(),
32 exe_suffix: ".exe".into(),
33 families: cvs!["unix"],
34 is_like_windows: true,
35 allows_weak_linkage: false,
36 pre_link_args,
37 late_link_args,
38 abi_return_struct_as_int: true,
39 emit_debug_gdb_scripts: false,
40 requires_uwtable: true,
41 eh_frame_header: false,
42 debuginfo_kind: DebuginfoKind::Dwarf,
43 supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]),
44 ..Default::default()
45 }
46}