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