]> git.lizzy.rs Git - rust.git/blob - src/librustc_llvm/lib.rs
Simplify SaveHandler trait
[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!(all(llvm_component = "msp430", llvm_has_msp430_asm_parser),
80                  LLVMInitializeMSP430AsmParser);
81     init_target!(llvm_component = "riscv",
82                  LLVMInitializeRISCVTargetInfo,
83                  LLVMInitializeRISCVTarget,
84                  LLVMInitializeRISCVTargetMC,
85                  LLVMInitializeRISCVAsmPrinter,
86                  LLVMInitializeRISCVAsmParser);
87     init_target!(llvm_component = "sparc",
88                  LLVMInitializeSparcTargetInfo,
89                  LLVMInitializeSparcTarget,
90                  LLVMInitializeSparcTargetMC,
91                  LLVMInitializeSparcAsmPrinter,
92                  LLVMInitializeSparcAsmParser);
93     init_target!(llvm_component = "nvptx",
94                  LLVMInitializeNVPTXTargetInfo,
95                  LLVMInitializeNVPTXTarget,
96                  LLVMInitializeNVPTXTargetMC,
97                  LLVMInitializeNVPTXAsmPrinter);
98     init_target!(llvm_component = "hexagon",
99                  LLVMInitializeHexagonTargetInfo,
100                  LLVMInitializeHexagonTarget,
101                  LLVMInitializeHexagonTargetMC,
102                  LLVMInitializeHexagonAsmPrinter,
103                  LLVMInitializeHexagonAsmParser);
104     init_target!(llvm_component = "webassembly",
105                  LLVMInitializeWebAssemblyTargetInfo,
106                  LLVMInitializeWebAssemblyTarget,
107                  LLVMInitializeWebAssemblyTargetMC,
108                  LLVMInitializeWebAssemblyAsmPrinter);
109 }