[package]
name = "rustsbi"
description = "Minimal RISC-V's SBI implementation library in Rust"
version = "0.4.0-alpha.1"
authors = [
    "Luo Jia <me@luojia.cc>",
    "Campbell He <hkp18@mails.tsinghua.edu.cn>",
    "Yifan Wu <shinbokuow@163.com>",
]
repository = "https://github.com/rustsbi/rustsbi"
documentation = "https://docs.rs/rustsbi"
license = "MulanPSL-2.0 OR MIT"
readme = "README.md"
keywords = ["riscv", "sbi", "rustsbi"]
categories = ["os", "embedded", "hardware-support", "no-std"]
edition = "2021"
exclude = ["/.github"]

[dependencies]
sbi-spec = "0.0.7-alpha.3"
riscv = { version = "0.10.1", optional = true }
sbi-rt = { version = "0.0.3-rc.5", features = ["integer-impls"], optional = true }
rustsbi-macros = { version = "0.4.0-alpha.1", path = "macros" }

[features]
default = []
# Run RustSBI on machine mode.
# This feature enables to use RISC-V primitives on current machine mode environment
# If you are developing a cross-architecture virtual machine, consider disabling this feature
# to customize environment variables for RISC-V architecture like mvendorid, mimpid, etc.
machine = ["rustsbi-macros/machine", "dep:riscv"]
# Enables the struct `Forward`.
# Struct `Forward` uses current SBI environment to implement the RustSBI environment.
# This feature is only usable when current software runs on another SBI environment,
# e.g. hypervisors for RISC-V architecture.
forward = ["dep:sbi-rt"]

[package.metadata.docs.rs]
default-target = "riscv64imac-unknown-none-elf"
targets = [
    "riscv32imac-unknown-none-elf", "riscv64imac-unknown-none-elf",
]

[workspace]
members = ["macros"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html