1 #![deny(rust_2018_idioms)]
2 #![feature(static_nobundle)]
4 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
5 html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
6 html_root_url = "https://doc.rust-lang.org/nightly/")]
8 // See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
9 #[allow(unused_extern_crates)]
10 extern crate rustc_cratesio_shim;
12 // NOTE: This crate only exists to allow linking on mingw targets.
14 /// Initialize targets enabled by the build script via `cfg(llvm_component = "...")`.
15 /// N.B., this function can't be moved to `rustc_codegen_llvm` because of the `cfg`s.
16 pub fn initialize_available_targets() {
17 macro_rules! init_target(
18 ($cfg:meta, $($method:ident),*) => { {
33 init_target!(llvm_component = "x86",
34 LLVMInitializeX86TargetInfo,
35 LLVMInitializeX86Target,
36 LLVMInitializeX86TargetMC,
37 LLVMInitializeX86AsmPrinter,
38 LLVMInitializeX86AsmParser);
39 init_target!(llvm_component = "arm",
40 LLVMInitializeARMTargetInfo,
41 LLVMInitializeARMTarget,
42 LLVMInitializeARMTargetMC,
43 LLVMInitializeARMAsmPrinter,
44 LLVMInitializeARMAsmParser);
45 init_target!(llvm_component = "aarch64",
46 LLVMInitializeAArch64TargetInfo,
47 LLVMInitializeAArch64Target,
48 LLVMInitializeAArch64TargetMC,
49 LLVMInitializeAArch64AsmPrinter,
50 LLVMInitializeAArch64AsmParser);
51 init_target!(llvm_component = "amdgpu",
52 LLVMInitializeAMDGPUTargetInfo,
53 LLVMInitializeAMDGPUTarget,
54 LLVMInitializeAMDGPUTargetMC,
55 LLVMInitializeAMDGPUAsmPrinter,
56 LLVMInitializeAMDGPUAsmParser);
57 init_target!(llvm_component = "mips",
58 LLVMInitializeMipsTargetInfo,
59 LLVMInitializeMipsTarget,
60 LLVMInitializeMipsTargetMC,
61 LLVMInitializeMipsAsmPrinter,
62 LLVMInitializeMipsAsmParser);
63 init_target!(llvm_component = "powerpc",
64 LLVMInitializePowerPCTargetInfo,
65 LLVMInitializePowerPCTarget,
66 LLVMInitializePowerPCTargetMC,
67 LLVMInitializePowerPCAsmPrinter,
68 LLVMInitializePowerPCAsmParser);
69 init_target!(llvm_component = "systemz",
70 LLVMInitializeSystemZTargetInfo,
71 LLVMInitializeSystemZTarget,
72 LLVMInitializeSystemZTargetMC,
73 LLVMInitializeSystemZAsmPrinter,
74 LLVMInitializeSystemZAsmParser);
75 init_target!(llvm_component = "jsbackend",
76 LLVMInitializeJSBackendTargetInfo,
77 LLVMInitializeJSBackendTarget,
78 LLVMInitializeJSBackendTargetMC);
79 init_target!(llvm_component = "msp430",
80 LLVMInitializeMSP430TargetInfo,
81 LLVMInitializeMSP430Target,
82 LLVMInitializeMSP430TargetMC,
83 LLVMInitializeMSP430AsmPrinter);
84 init_target!(llvm_component = "riscv",
85 LLVMInitializeRISCVTargetInfo,
86 LLVMInitializeRISCVTarget,
87 LLVMInitializeRISCVTargetMC,
88 LLVMInitializeRISCVAsmPrinter,
89 LLVMInitializeRISCVAsmParser);
90 init_target!(llvm_component = "sparc",
91 LLVMInitializeSparcTargetInfo,
92 LLVMInitializeSparcTarget,
93 LLVMInitializeSparcTargetMC,
94 LLVMInitializeSparcAsmPrinter,
95 LLVMInitializeSparcAsmParser);
96 init_target!(llvm_component = "nvptx",
97 LLVMInitializeNVPTXTargetInfo,
98 LLVMInitializeNVPTXTarget,
99 LLVMInitializeNVPTXTargetMC,
100 LLVMInitializeNVPTXAsmPrinter);
101 init_target!(llvm_component = "hexagon",
102 LLVMInitializeHexagonTargetInfo,
103 LLVMInitializeHexagonTarget,
104 LLVMInitializeHexagonTargetMC,
105 LLVMInitializeHexagonAsmPrinter,
106 LLVMInitializeHexagonAsmParser);
107 init_target!(llvm_component = "webassembly",
108 LLVMInitializeWebAssemblyTargetInfo,
109 LLVMInitializeWebAssemblyTarget,
110 LLVMInitializeWebAssemblyTargetMC,
111 LLVMInitializeWebAssemblyAsmPrinter);