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