1 // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 #![cfg_attr(not(stage0), feature(nll))]
12 #![feature(static_nobundle)]
14 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
15 html_favicon_url
= "https://doc.rust-lang.org/favicon.ico",
16 html_root_url
= "https://doc.rust-lang.org/nightly/")]
18 // See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
19 #[allow(unused_extern_crates)]
20 extern crate rustc_cratesio_shim
;
22 // NOTE: This crate only exists to allow linking on mingw targets.
24 /// Initialize targets enabled by the build script via `cfg(llvm_component = "...")`.
25 /// NB: this function can't be moved to `rustc_codegen_llvm` because of the `cfg`s.
26 pub fn initialize_available_targets() {
27 macro_rules
! init_target(
28 ($cfg
:meta
, $
($method
:ident
),*) => { {
43 init_target
!(llvm_component
= "x86",
44 LLVMInitializeX86TargetInfo
,
45 LLVMInitializeX86Target
,
46 LLVMInitializeX86TargetMC
,
47 LLVMInitializeX86AsmPrinter
,
48 LLVMInitializeX86AsmParser
);
49 init_target
!(llvm_component
= "arm",
50 LLVMInitializeARMTargetInfo
,
51 LLVMInitializeARMTarget
,
52 LLVMInitializeARMTargetMC
,
53 LLVMInitializeARMAsmPrinter
,
54 LLVMInitializeARMAsmParser
);
55 init_target
!(llvm_component
= "aarch64",
56 LLVMInitializeAArch64TargetInfo
,
57 LLVMInitializeAArch64Target
,
58 LLVMInitializeAArch64TargetMC
,
59 LLVMInitializeAArch64AsmPrinter
,
60 LLVMInitializeAArch64AsmParser
);
61 init_target
!(llvm_component
= "amdgpu",
62 LLVMInitializeAMDGPUTargetInfo
,
63 LLVMInitializeAMDGPUTarget
,
64 LLVMInitializeAMDGPUTargetMC
,
65 LLVMInitializeAMDGPUAsmPrinter
,
66 LLVMInitializeAMDGPUAsmParser
);
67 init_target
!(llvm_component
= "mips",
68 LLVMInitializeMipsTargetInfo
,
69 LLVMInitializeMipsTarget
,
70 LLVMInitializeMipsTargetMC
,
71 LLVMInitializeMipsAsmPrinter
,
72 LLVMInitializeMipsAsmParser
);
73 init_target
!(llvm_component
= "powerpc",
74 LLVMInitializePowerPCTargetInfo
,
75 LLVMInitializePowerPCTarget
,
76 LLVMInitializePowerPCTargetMC
,
77 LLVMInitializePowerPCAsmPrinter
,
78 LLVMInitializePowerPCAsmParser
);
79 init_target
!(llvm_component
= "systemz",
80 LLVMInitializeSystemZTargetInfo
,
81 LLVMInitializeSystemZTarget
,
82 LLVMInitializeSystemZTargetMC
,
83 LLVMInitializeSystemZAsmPrinter
,
84 LLVMInitializeSystemZAsmParser
);
85 init_target
!(llvm_component
= "jsbackend",
86 LLVMInitializeJSBackendTargetInfo
,
87 LLVMInitializeJSBackendTarget
,
88 LLVMInitializeJSBackendTargetMC
);
89 init_target
!(llvm_component
= "msp430",
90 LLVMInitializeMSP430TargetInfo
,
91 LLVMInitializeMSP430Target
,
92 LLVMInitializeMSP430TargetMC
,
93 LLVMInitializeMSP430AsmPrinter
);
94 init_target
!(llvm_component
= "riscv",
95 LLVMInitializeRISCVTargetInfo
,
96 LLVMInitializeRISCVTarget
,
97 LLVMInitializeRISCVTargetMC
,
98 LLVMInitializeRISCVAsmPrinter
,
99 LLVMInitializeRISCVAsmParser
);
100 init_target
!(llvm_component
= "sparc",
101 LLVMInitializeSparcTargetInfo
,
102 LLVMInitializeSparcTarget
,
103 LLVMInitializeSparcTargetMC
,
104 LLVMInitializeSparcAsmPrinter
,
105 LLVMInitializeSparcAsmParser
);
106 init_target
!(llvm_component
= "nvptx",
107 LLVMInitializeNVPTXTargetInfo
,
108 LLVMInitializeNVPTXTarget
,
109 LLVMInitializeNVPTXTargetMC
,
110 LLVMInitializeNVPTXAsmPrinter
);
111 init_target
!(llvm_component
= "hexagon",
112 LLVMInitializeHexagonTargetInfo
,
113 LLVMInitializeHexagonTarget
,
114 LLVMInitializeHexagonTargetMC
,
115 LLVMInitializeHexagonAsmPrinter
,
116 LLVMInitializeHexagonAsmParser
);
117 init_target
!(llvm_component
= "webassembly",
118 LLVMInitializeWebAssemblyTargetInfo
,
119 LLVMInitializeWebAssemblyTarget
,
120 LLVMInitializeWebAssemblyTargetMC
,
121 LLVMInitializeWebAssemblyAsmPrinter
);