1 #![deny(rust_2018_idioms)]
3 #![feature(static_nobundle)]
5 #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")]
7 // NOTE: This crate only exists to allow linking on mingw targets.
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),*) => { {
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);