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