2014-12-12 23:39:27 +00:00
|
|
|
// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
|
2012-12-03 16:48:01 -08:00
|
|
|
// file at the top-level directory of this distribution and at
|
|
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
|
|
// option. This file may not be copied, modified, or distributed
|
|
|
|
// except according to those terms.
|
|
|
|
|
2015-08-09 14:15:05 -07:00
|
|
|
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
2015-05-15 16:04:01 -07:00
|
|
|
html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
|
2015-08-09 14:15:05 -07:00
|
|
|
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
2014-07-05 13:24:57 -07:00
|
|
|
|
2017-09-08 15:08:01 -04:00
|
|
|
// See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
|
|
|
|
#[allow(unused_extern_crates)]
|
|
|
|
extern crate rustc_cratesio_shim;
|
|
|
|
|
2018-05-29 20:41:36 +03:00
|
|
|
// NOTE: This crate only exists to allow linking on mingw targets.
|
2014-09-12 08:17:58 -07:00
|
|
|
|
2018-05-29 20:41:36 +03:00
|
|
|
/// Initialize targets enabled by the build script via `cfg(llvm_component = "...")`.
|
|
|
|
/// NB: this function can't be moved to `rustc_codegen_llvm` because of the `cfg`s.
|
2015-08-21 23:43:56 -05:00
|
|
|
pub fn initialize_available_targets() {
|
|
|
|
macro_rules! init_target(
|
2016-01-21 15:39:22 -08:00
|
|
|
($cfg:meta, $($method:ident),*) => { {
|
2015-08-21 23:43:56 -05:00
|
|
|
#[cfg($cfg)]
|
|
|
|
fn init() {
|
2016-01-21 15:39:22 -08:00
|
|
|
extern {
|
|
|
|
$(fn $method();)*
|
|
|
|
}
|
2015-08-21 23:43:56 -05:00
|
|
|
unsafe {
|
2016-01-21 15:39:22 -08:00
|
|
|
$($method();)*
|
2015-08-21 23:43:56 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
#[cfg(not($cfg))]
|
|
|
|
fn init() { }
|
|
|
|
init();
|
|
|
|
} }
|
|
|
|
);
|
2016-01-21 15:39:22 -08:00
|
|
|
init_target!(llvm_component = "x86",
|
|
|
|
LLVMInitializeX86TargetInfo,
|
|
|
|
LLVMInitializeX86Target,
|
|
|
|
LLVMInitializeX86TargetMC,
|
|
|
|
LLVMInitializeX86AsmPrinter,
|
|
|
|
LLVMInitializeX86AsmParser);
|
|
|
|
init_target!(llvm_component = "arm",
|
|
|
|
LLVMInitializeARMTargetInfo,
|
|
|
|
LLVMInitializeARMTarget,
|
|
|
|
LLVMInitializeARMTargetMC,
|
|
|
|
LLVMInitializeARMAsmPrinter,
|
|
|
|
LLVMInitializeARMAsmParser);
|
|
|
|
init_target!(llvm_component = "aarch64",
|
|
|
|
LLVMInitializeAArch64TargetInfo,
|
|
|
|
LLVMInitializeAArch64Target,
|
|
|
|
LLVMInitializeAArch64TargetMC,
|
|
|
|
LLVMInitializeAArch64AsmPrinter,
|
|
|
|
LLVMInitializeAArch64AsmParser);
|
2018-06-14 01:13:44 -05:00
|
|
|
init_target!(llvm_component = "amdgpu",
|
|
|
|
LLVMInitializeAMDGPUTargetInfo,
|
|
|
|
LLVMInitializeAMDGPUTarget,
|
|
|
|
LLVMInitializeAMDGPUTargetMC,
|
|
|
|
LLVMInitializeAMDGPUAsmPrinter,
|
|
|
|
LLVMInitializeAMDGPUAsmParser);
|
2016-01-21 15:39:22 -08:00
|
|
|
init_target!(llvm_component = "mips",
|
|
|
|
LLVMInitializeMipsTargetInfo,
|
|
|
|
LLVMInitializeMipsTarget,
|
|
|
|
LLVMInitializeMipsTargetMC,
|
|
|
|
LLVMInitializeMipsAsmPrinter,
|
|
|
|
LLVMInitializeMipsAsmParser);
|
|
|
|
init_target!(llvm_component = "powerpc",
|
|
|
|
LLVMInitializePowerPCTargetInfo,
|
|
|
|
LLVMInitializePowerPCTarget,
|
|
|
|
LLVMInitializePowerPCTargetMC,
|
|
|
|
LLVMInitializePowerPCAsmPrinter,
|
|
|
|
LLVMInitializePowerPCAsmParser);
|
2016-08-26 21:05:16 -05:00
|
|
|
init_target!(llvm_component = "systemz",
|
|
|
|
LLVMInitializeSystemZTargetInfo,
|
|
|
|
LLVMInitializeSystemZTarget,
|
|
|
|
LLVMInitializeSystemZTargetMC,
|
|
|
|
LLVMInitializeSystemZAsmPrinter,
|
|
|
|
LLVMInitializeSystemZAsmParser);
|
2016-08-06 12:52:17 +02:00
|
|
|
init_target!(llvm_component = "jsbackend",
|
|
|
|
LLVMInitializeJSBackendTargetInfo,
|
|
|
|
LLVMInitializeJSBackendTarget,
|
|
|
|
LLVMInitializeJSBackendTargetMC);
|
2016-11-09 14:00:26 -05:00
|
|
|
init_target!(llvm_component = "msp430",
|
|
|
|
LLVMInitializeMSP430TargetInfo,
|
|
|
|
LLVMInitializeMSP430Target,
|
|
|
|
LLVMInitializeMSP430TargetMC,
|
|
|
|
LLVMInitializeMSP430AsmPrinter);
|
2016-12-11 23:12:46 -05:00
|
|
|
init_target!(llvm_component = "sparc",
|
|
|
|
LLVMInitializeSparcTargetInfo,
|
|
|
|
LLVMInitializeSparcTarget,
|
|
|
|
LLVMInitializeSparcTargetMC,
|
|
|
|
LLVMInitializeSparcAsmPrinter,
|
|
|
|
LLVMInitializeSparcAsmParser);
|
2016-12-22 16:24:29 -05:00
|
|
|
init_target!(llvm_component = "nvptx",
|
|
|
|
LLVMInitializeNVPTXTargetInfo,
|
|
|
|
LLVMInitializeNVPTXTarget,
|
|
|
|
LLVMInitializeNVPTXTargetMC,
|
|
|
|
LLVMInitializeNVPTXAsmPrinter);
|
2017-04-09 02:03:31 -04:00
|
|
|
init_target!(llvm_component = "hexagon",
|
|
|
|
LLVMInitializeHexagonTargetInfo,
|
|
|
|
LLVMInitializeHexagonTarget,
|
|
|
|
LLVMInitializeHexagonTargetMC,
|
|
|
|
LLVMInitializeHexagonAsmPrinter,
|
|
|
|
LLVMInitializeHexagonAsmParser);
|
2017-06-16 15:43:43 -07:00
|
|
|
init_target!(llvm_component = "webassembly",
|
|
|
|
LLVMInitializeWebAssemblyTargetInfo,
|
|
|
|
LLVMInitializeWebAssemblyTarget,
|
|
|
|
LLVMInitializeWebAssemblyTargetMC,
|
|
|
|
LLVMInitializeWebAssemblyAsmPrinter);
|
2015-08-21 23:43:56 -05:00
|
|
|
}
|