#[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)]
pub enum BackendKind {
#[cfg(feature = "cranelift")]
Cranelift,
#[cfg(feature = "llvm")]
LLVM,
#[cfg(feature = "singlepass")]
Singlepass,
#[cfg(feature = "sys")]
Headless,
#[cfg(feature = "wamr")]
Wamr,
#[cfg(feature = "wasmi")]
Wasmi,
#[cfg(feature = "v8")]
V8,
#[cfg(feature = "js")]
Js,
#[cfg(feature = "jsc")]
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!")
}
}