rustc_target/spec/targets/
wasm32_wasip1_threads.rs1use crate::spec::{
11 Arch, Cc, Env, LinkSelfContainedDefault, LinkerFlavor, Os, Target, TargetMetadata, base,
12 crt_objects,
13};
14
15pub(crate) fn target() -> Target {
16 let mut options = base::wasm::options();
17
18 options.os = Os::Wasi;
19 options.env = Env::P1;
20
21 options.add_pre_link_args(
22 LinkerFlavor::WasmLld(Cc::No),
23 &["--import-memory", "--export-memory", "--shared-memory", "--max-memory=1073741824"],
24 );
25 options.add_pre_link_args(
26 LinkerFlavor::WasmLld(Cc::Yes),
27 &[
28 "--target=wasm32-wasip1-threads",
29 "-Wl,--import-memory",
30 "-Wl,--export-memory,",
31 "-Wl,--shared-memory",
32 "-Wl,--max-memory=1073741824",
33 ],
34 );
35
36 options.pre_link_objects_self_contained = crt_objects::pre_wasi_self_contained();
37 options.post_link_objects_self_contained = crt_objects::post_wasi_self_contained();
38
39 options.link_self_contained = LinkSelfContainedDefault::True;
41
42 options.crt_static_default = true;
49 options.crt_static_respected = true;
50
51 options.crt_static_allows_dylibs = true;
54
55 options.entry_name = "__main_void".into();
58
59 options.singlethread = false;
60 options.features = "+atomics,+bulk-memory,+mutable-globals".into();
61
62 Target {
63 llvm_target: "wasm32-wasi".into(),
64 metadata: TargetMetadata {
65 description: None,
66 tier: Some(2),
67 host_tools: Some(false),
68 std: Some(true),
69 },
70 pointer_width: 32,
71 data_layout: "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n32:64-S128-ni:1:10:20".into(),
72 arch: Arch::Wasm32,
73 options,
74 }
75}