]> git.lizzy.rs Git - rust.git/blob - src/librustc_target/spec/windows_uwp_gnu_base.rs
rustc_target: Inherit `windows_uwp_gnu_base` from `windows_gnu_base`
[rust.git] / src / librustc_target / spec / windows_uwp_gnu_base.rs
1 use crate::spec::{LinkArgs, LinkerFlavor, TargetOptions};
2
3 pub fn opts() -> TargetOptions {
4     let base = super::windows_gnu_base::opts();
5
6     // FIXME: Consider adding `-nostdlib` and inheriting from `windows_gnu_base`.
7     let mut pre_link_args = LinkArgs::new();
8     pre_link_args.insert(
9         LinkerFlavor::Gcc,
10         vec![
11             // Tell GCC to avoid linker plugins, because we are not bundling
12             // them with Windows installer, and Rust does its own LTO anyways.
13             "-fno-use-linker-plugin".to_string(),
14             // Always enable DEP (NX bit) when it is available
15             "-Wl,--nxcompat".to_string(),
16         ],
17     );
18
19     // FIXME: Should UWP target be updated for the exception machinery changes from #67502?
20     let mut late_link_args = LinkArgs::new();
21     let late_link_args_dynamic = LinkArgs::new();
22     let late_link_args_static = LinkArgs::new();
23     late_link_args.insert(
24         LinkerFlavor::Gcc,
25         vec![
26             //"-lwinstorecompat".to_string(),
27             //"-lmingwex".to_string(),
28             //"-lwinstorecompat".to_string(),
29             "-lwinstorecompat".to_string(),
30             "-lruntimeobject".to_string(),
31             "-lsynchronization".to_string(),
32             "-lvcruntime140_app".to_string(),
33             "-lucrt".to_string(),
34             "-lwindowsapp".to_string(),
35             "-lmingwex".to_string(),
36             "-lmingw32".to_string(),
37         ],
38     );
39
40     TargetOptions {
41         executables: false,
42         limit_rdylib_exports: false,
43         pre_link_args,
44         // FIXME: Consider adding `-nostdlib` and inheriting from `windows_gnu_base`.
45         pre_link_objects_exe: vec!["rsbegin.o".to_string()],
46         // FIXME: Consider adding `-nostdlib` and inheriting from `windows_gnu_base`.
47         pre_link_objects_dll: vec!["rsbegin.o".to_string()],
48         late_link_args,
49         late_link_args_dynamic,
50         late_link_args_static,
51
52         ..base
53     }
54 }