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