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