]> git.lizzy.rs Git - rust.git/blob - src/librustc_llvm/lib.rs
Rollup merge of #57884 - GuillaumeGomez:update-minifier-array, r=QuietMisdreavus
[rust.git] / src / librustc_llvm / lib.rs
1 #![deny(rust_2018_idioms)]
2 #![feature(static_nobundle)]
3
4 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
5        html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
6        html_root_url = "https://doc.rust-lang.org/nightly/")]
7
8 // See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
9 #[allow(unused_extern_crates)]
10 extern crate rustc_cratesio_shim;
11
12 // NOTE: This crate only exists to allow linking on mingw targets.
13
14 /// Initialize targets enabled by the build script via `cfg(llvm_component = "...")`.
15 /// N.B., this function can't be moved to `rustc_codegen_llvm` because of the `cfg`s.
16 pub fn initialize_available_targets() {
17     macro_rules! init_target(
18         ($cfg:meta, $($method:ident),*) => { {
19             #[cfg($cfg)]
20             fn init() {
21                 extern {
22                     $(fn $method();)*
23                 }
24                 unsafe {
25                     $($method();)*
26                 }
27             }
28             #[cfg(not($cfg))]
29             fn init() { }
30             init();
31         } }
32     );
33     init_target!(llvm_component = "x86",
34                  LLVMInitializeX86TargetInfo,
35                  LLVMInitializeX86Target,
36                  LLVMInitializeX86TargetMC,
37                  LLVMInitializeX86AsmPrinter,
38                  LLVMInitializeX86AsmParser);
39     init_target!(llvm_component = "arm",
40                  LLVMInitializeARMTargetInfo,
41                  LLVMInitializeARMTarget,
42                  LLVMInitializeARMTargetMC,
43                  LLVMInitializeARMAsmPrinter,
44                  LLVMInitializeARMAsmParser);
45     init_target!(llvm_component = "aarch64",
46                  LLVMInitializeAArch64TargetInfo,
47                  LLVMInitializeAArch64Target,
48                  LLVMInitializeAArch64TargetMC,
49                  LLVMInitializeAArch64AsmPrinter,
50                  LLVMInitializeAArch64AsmParser);
51     init_target!(llvm_component = "amdgpu",
52                  LLVMInitializeAMDGPUTargetInfo,
53                  LLVMInitializeAMDGPUTarget,
54                  LLVMInitializeAMDGPUTargetMC,
55                  LLVMInitializeAMDGPUAsmPrinter,
56                  LLVMInitializeAMDGPUAsmParser);
57     init_target!(llvm_component = "mips",
58                  LLVMInitializeMipsTargetInfo,
59                  LLVMInitializeMipsTarget,
60                  LLVMInitializeMipsTargetMC,
61                  LLVMInitializeMipsAsmPrinter,
62                  LLVMInitializeMipsAsmParser);
63     init_target!(llvm_component = "powerpc",
64                  LLVMInitializePowerPCTargetInfo,
65                  LLVMInitializePowerPCTarget,
66                  LLVMInitializePowerPCTargetMC,
67                  LLVMInitializePowerPCAsmPrinter,
68                  LLVMInitializePowerPCAsmParser);
69     init_target!(llvm_component = "systemz",
70                  LLVMInitializeSystemZTargetInfo,
71                  LLVMInitializeSystemZTarget,
72                  LLVMInitializeSystemZTargetMC,
73                  LLVMInitializeSystemZAsmPrinter,
74                  LLVMInitializeSystemZAsmParser);
75     init_target!(llvm_component = "jsbackend",
76                  LLVMInitializeJSBackendTargetInfo,
77                  LLVMInitializeJSBackendTarget,
78                  LLVMInitializeJSBackendTargetMC);
79     init_target!(llvm_component = "msp430",
80                  LLVMInitializeMSP430TargetInfo,
81                  LLVMInitializeMSP430Target,
82                  LLVMInitializeMSP430TargetMC,
83                  LLVMInitializeMSP430AsmPrinter);
84     init_target!(llvm_component = "riscv",
85                  LLVMInitializeRISCVTargetInfo,
86                  LLVMInitializeRISCVTarget,
87                  LLVMInitializeRISCVTargetMC,
88                  LLVMInitializeRISCVAsmPrinter,
89                  LLVMInitializeRISCVAsmParser);
90     init_target!(llvm_component = "sparc",
91                  LLVMInitializeSparcTargetInfo,
92                  LLVMInitializeSparcTarget,
93                  LLVMInitializeSparcTargetMC,
94                  LLVMInitializeSparcAsmPrinter,
95                  LLVMInitializeSparcAsmParser);
96     init_target!(llvm_component = "nvptx",
97                  LLVMInitializeNVPTXTargetInfo,
98                  LLVMInitializeNVPTXTarget,
99                  LLVMInitializeNVPTXTargetMC,
100                  LLVMInitializeNVPTXAsmPrinter);
101     init_target!(llvm_component = "hexagon",
102                  LLVMInitializeHexagonTargetInfo,
103                  LLVMInitializeHexagonTarget,
104                  LLVMInitializeHexagonTargetMC,
105                  LLVMInitializeHexagonAsmPrinter,
106                  LLVMInitializeHexagonAsmParser);
107     init_target!(llvm_component = "webassembly",
108                  LLVMInitializeWebAssemblyTargetInfo,
109                  LLVMInitializeWebAssemblyTarget,
110                  LLVMInitializeWebAssemblyTargetMC,
111                  LLVMInitializeWebAssemblyAsmPrinter);
112 }