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!(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);