1 #![deny(rust_2018_idioms)]
2 #![feature(static_nobundle)]
4 #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")]
6 // See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
7 #[allow(unused_extern_crates)]
8 extern crate rustc_cratesio_shim;
10 // NOTE: This crate only exists to allow linking on mingw targets.
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),*) => { {
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);