[package]
name = "wasmer-bin"
version = "0.17.0"
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
edition = "2018"
repository = "https://github.com/wasmerio/wasmer"
publish = true
description = "High-Performance WebAssembly JIT interpreter"
license = "MIT"
default-run = "wasmer"
include = [
    "examples/**/*",
    "src/**/*",
    "Cargo.lock",
    "Cargo.toml",
    "LICENSE",
    "Makefile",
    "/README.md",
    "rustfmt.toml"
]
autoexamples = false

[dependencies]
atty = "0.2"
byteorder = "1.3"
errno = "0.2"
fern = { version = "0.5", features = ["colored"], optional = true }
log = "0.4"
structopt = "0.3"
wabt = { version = "0.9.1", optional = true }
wasmer = { path = "lib/api", default-features = false }
wasmer-middleware-common = { path = "lib/middleware-common" }
wasmer-runtime = { path = "lib/runtime", package = "wasmer-runtime-fl", default-features = false }
wasmer-runtime-core = { path = "lib/runtime-core", package = "wasmer-runtime-core-fl", version = "=0.17.1" }
wasmer-kernel-loader = { path = "lib/kernel-loader", optional = true }

# Backends
wasmer-singlepass-backend = { path = "lib/singlepass-backend", package = "wasmer-singlepass-backend-fl", optional = true }
wasmer-clif-backend = { path = "lib/clif-backend", package = "wasmer-clif-backend-fl", optional = true }
wasmer-llvm-backend = { path = "lib/llvm-backend", package = "wasmer-llvm-backend-fl", version = "=0.17.1", optional = true }

# Frontends
wasmer-emscripten = { path = "lib/emscripten" }
wasmer-wasi = { path = "lib/wasi", package = "wasmer-wasi-fl", optional = true }
wasmer-wasi-experimental-io-devices = { path = "lib/wasi-experimental-io-devices", optional = true }

[workspace]
members = [
    "lib/api",
    "lib/clif-backend",
    "lib/singlepass-backend",
    "lib/runtime",
    "lib/runtime-core",
    "lib/emscripten",
    "lib/win-exception-handler",
    "lib/runtime-c-api",
    "lib/llvm-backend",
    "lib/wasi",
    "lib/middleware-common",
    "lib/kernel-loader",
    "lib/kernel-net",
    "lib/wasi-experimental-io-devices",
    "examples/parallel",
    "examples/plugin-for-example",
    "examples/parallel-guest",
    "tests/test-generator",
    "tests/generate-wasi-tests",
    "tests/generate-emscripten-tests",
    "tests/wast",
]

[build-dependencies]
anyhow = "1.0.19"
generate-emscripten-tests = { path = "tests/generate-emscripten-tests" }
generate-wasi-tests = { path = "tests/generate-wasi-tests" }
test-generator = { path = "tests/test-generator" }
glob = "0.3"
rustc_version = "0.2"

[dev-dependencies]
anyhow = "1.0.19"
wasmer-wast = { path = "tests/wast" }
lazy_static = "1.4"
# To allow parameterized tests
test-case = "1.0.0"
criterion = "0.3"
glob = "0.3"
libc = "0.2.60" # for `tests/dev-utils`'s Stdout capturing
serde = { version = "1", features = ["derive"] } # used by the plugin example
serde_json = "1"
typetag = "0.1" # used by the plugin example
wabt = "0.9.1"

[features]
# Don't add the backend features in default, please add them on the Makefile
# since we might want to autoconfigure them depending on the availability on the host.
default = ["wasi", "wabt"]
loader-kernel = ["wasmer-kernel-loader"]
debug = ["fern", "log/max_level_debug", "log/release_max_level_debug"]
trace = ["fern", "log/max_level_trace", "log/release_max_level_trace"]
docs = ["wasmer-runtime/docs"]
backend-cranelift = [
    "wasmer-clif-backend",
    "wasmer-clif-backend/generate-debug-information",
    "wasmer-runtime-core/generate-debug-information",
    "wasmer-runtime/cranelift",
    "wasmer/cranelift",
]
backend-llvm = [
    "wasmer-llvm-backend",
    "wasmer-runtime/llvm",
    "wasmer-runtime-core/generate-debug-information-no-export-symbols",
    "wasmer/llvm",
]
backend-singlepass = [
    "wasmer-singlepass-backend",
    "wasmer-runtime/singlepass",
    "wasmer/singlepass",
]
wasi = ["wasmer-wasi"]
experimental-io-devices = ["wasmer-wasi-experimental-io-devices"]
managed = ["backend-singlepass", "wasmer-runtime-core/managed"]

[[example]]
name = "plugin"
required-features = ["wasi", "backend-cranelift"]
crate-type = ["bin"]

[[example]]
name = "callback"
crate-type = ["bin"]
required-features = ["backend-cranelift"]
