Fixes #13: Enable conditional compilation of ISAs through features;
This commit is contained in:
committed by
Dan Gohman
parent
049f067168
commit
a45b814de8
@@ -68,16 +68,16 @@ use failure_derive::Fail;
|
||||
use std::boxed::Box;
|
||||
use target_lexicon::{Architecture, PointerWidth, Triple};
|
||||
|
||||
#[cfg(build_riscv)]
|
||||
#[cfg(feature = "riscv")]
|
||||
mod riscv;
|
||||
|
||||
#[cfg(build_x86)]
|
||||
#[cfg(feature = "x86")]
|
||||
mod x86;
|
||||
|
||||
#[cfg(build_arm32)]
|
||||
#[cfg(feature = "arm32")]
|
||||
mod arm32;
|
||||
|
||||
#[cfg(build_arm64)]
|
||||
#[cfg(feature = "arm64")]
|
||||
mod arm64;
|
||||
|
||||
mod call_conv;
|
||||
@@ -90,12 +90,12 @@ mod stack;
|
||||
/// Returns a builder that can create a corresponding `TargetIsa`
|
||||
/// or `Err(LookupError::Unsupported)` if not enabled.
|
||||
macro_rules! isa_builder {
|
||||
($module:ident, $name:ident) => {{
|
||||
#[cfg($name)]
|
||||
($name:ident, $feature:tt) => {{
|
||||
#[cfg(feature = $feature)]
|
||||
fn $name(triple: Triple) -> Result<Builder, LookupError> {
|
||||
Ok($module::isa_builder(triple))
|
||||
Ok($name::isa_builder(triple))
|
||||
};
|
||||
#[cfg(not($name))]
|
||||
#[cfg(not(feature = $feature))]
|
||||
fn $name(_triple: Triple) -> Result<Builder, LookupError> {
|
||||
Err(LookupError::Unsupported)
|
||||
}
|
||||
@@ -107,9 +107,9 @@ macro_rules! isa_builder {
|
||||
/// Return a builder that can create a corresponding `TargetIsa`.
|
||||
pub fn lookup(triple: Triple) -> Result<Builder, LookupError> {
|
||||
match triple.architecture {
|
||||
Architecture::Riscv32 | Architecture::Riscv64 => isa_builder!(riscv, build_riscv)(triple),
|
||||
Architecture::Riscv32 | Architecture::Riscv64 => isa_builder!(riscv, "riscv")(triple),
|
||||
Architecture::I386 | Architecture::I586 | Architecture::I686 | Architecture::X86_64 => {
|
||||
isa_builder!(x86, build_x86)(triple)
|
||||
isa_builder!(x86, "x86")(triple)
|
||||
}
|
||||
Architecture::Thumbv6m
|
||||
| Architecture::Thumbv7em
|
||||
@@ -118,8 +118,8 @@ pub fn lookup(triple: Triple) -> Result<Builder, LookupError> {
|
||||
| Architecture::Armv4t
|
||||
| Architecture::Armv5te
|
||||
| Architecture::Armv7
|
||||
| Architecture::Armv7s => isa_builder!(arm32, build_arm32)(triple),
|
||||
Architecture::Aarch64 => isa_builder!(arm64, build_arm64)(triple),
|
||||
| Architecture::Armv7s => isa_builder!(arm32, "arm32")(triple),
|
||||
Architecture::Aarch64 => isa_builder!(arm64, "arm64")(triple),
|
||||
_ => Err(LookupError::Unsupported),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user