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