Files
wasmer/lib/api/src/backend/mod.rs

152 lines
2.9 KiB
Rust

//! This submodule has the concrete definitions for all the available implenters of the WebAssembly
//! types needed to create a runtime.
#[cfg(feature = "sys")]
pub mod sys;
#[cfg(feature = "wamr")]
pub mod wamr;
#[cfg(feature = "wasmi")]
pub mod wasmi;
#[cfg(feature = "v8")]
pub mod v8;
#[cfg(feature = "js")]
pub mod js;
#[cfg(feature = "jsc")]
pub mod jsc;
#[non_exhaustive]
#[derive(Debug, Clone, Copy)]
/// An enumeration over all the supported runtimes.
pub enum BackendKind {
#[cfg(feature = "cranelift")]
/// The `cranelift` runtime.
Cranelift,
#[cfg(feature = "llvm")]
/// The `llvm` runtime.
LLVM,
#[cfg(feature = "singlepass")]
/// The `singlepass` runtime.
Singlepass,
#[cfg(feature = "sys")]
/// The sys `headless` runtime.
Headless,
#[cfg(feature = "wamr")]
/// The `wamr` runtime.
Wamr,
#[cfg(feature = "wasmi")]
/// The `wasmi` runtime.
Wasmi,
#[cfg(feature = "v8")]
/// The `v8` runtime.
V8,
#[cfg(feature = "js")]
/// The `js` runtime.
Js,
#[cfg(feature = "jsc")]
/// The `jsc` runtime.
Jsc,
}
impl Default for BackendKind {
fn default() -> Self {
#[cfg(feature = "sys-default")]
{
#[cfg(feature = "cranelift")]
{
return Self::Cranelift;
}
#[cfg(feature = "singlepass")]
{
return Self::Singlepass;
}
#[cfg(feature = "llvm")]
{
return Self::LLVM;
}
return Self::Headless;
}
#[cfg(feature = "wamr-default")]
{
return Self::Wamr;
}
#[cfg(feature = "wasmi-default")]
{
return Self::Wasmi;
}
#[cfg(feature = "v8-default")]
{
return Self::V8;
}
#[cfg(feature = "js-default")]
{
return Self::Js;
}
#[cfg(feature = "jsc-default")]
{
return Self::Jsc;
}
#[cfg(feature = "sys")]
{
#[cfg(feature = "cranelift")]
{
return Self::Cranelift;
}
#[cfg(feature = "singlepass")]
{
return Self::Singlepass;
}
#[cfg(feature = "llvm")]
{
return Self::LLVM;
}
return Self::Headless;
}
#[cfg(feature = "wamr")]
{
return Self::Wamr;
}
#[cfg(feature = "wasmi")]
{
return Self::Wasmi;
}
#[cfg(feature = "v8")]
{
return Self::V8;
}
#[cfg(feature = "js")]
{
return Self::Js;
}
#[cfg(feature = "jsc")]
{
return Self::Jsc;
}
panic!("No runtime enabled!")
}
}