[workspace]
resolver = "2"
exclude = [
    "boot/yboot",
    "boot/yboot-proto",
    "tool/abi-generator",
    "toolchain",
    "userspace/dynload-program",
    "userspace/lib/ygglibc",
    "userspace",
    "toolchain-c"
]
members = [
    "xtask",
    "kernel",
    "lib/abi",
    "lib/libyalloc",
    "lib/runtime",
    "lib/qemu",
    "lib/abi-serde",
    "lib/libutil"
]

[workspace.dependencies]
chrono = { version = "0.4.38", default-features = false, features = ["alloc"] }
log = "0.4.22"
atomic_enum = "0.3.0"
bitflags = "2.6.0"
static_assertions = "1.1.0"
tock-registers = "0.9.0"
bytemuck = { version = "1.19.0", features = ["derive"] }
futures-util = { version = "0.3.31", default-features = false, features = ["alloc", "async-await"] }
crossbeam-queue = { version = "0.3.11", default-features = false, features = ["alloc"] }
async-trait = "0.1.83"
cfg-if = "1.0.0"
serde_json = { version = "1.0.132", default-features = false, features = ["alloc"] }
serde = { version = "1.0.214", features = ["derive"], default-features = false }
memoffset = "0.9.1"
ahash = { version = "0.8.11", default-features = false, features = ["no-rng"] }

# acpi
acpi = { git = "https://github.com/alnyan/acpi.git", package = "acpi", branch = "acpi-system" }
rsdp = { git = "https://github.com/alnyan/acpi.git", package = "rsdp", branch = "acpi-system" }
aml = { git = "https://github.com/alnyan/acpi.git", branch = "acpi-system" }
acpi-system = { git = "https://github.com/alnyan/acpi-system.git" }

# yboot
yboot-proto.path = "boot/yboot-proto"

# Local libs
abi-lib.path = "lib/abi-lib"
abi-serde.path = "lib/abi-serde"
yggdrasil-abi.path = "lib/abi"
abi-generator.path = "tool/abi-generator"

# Kernel parts
kernel-arch-interface.path = "kernel/arch/interface"
kernel-arch-aarch64.path = "kernel/arch/aarch64"
kernel-arch-riscv64.path = "kernel/arch/riscv64"
kernel-arch-x86_64.path = "kernel/arch/x86_64"
kernel-arch-i686.path = "kernel/arch/i686"
kernel-arch-x86.path = "kernel/arch/x86"
kernel-arch.path = "kernel/arch"
device-api.path = "kernel/lib/device-api"
libk.path = "kernel/libk"
libk-util.path = "kernel/libk/libk-util"
libk-mm.path = "kernel/libk/libk-mm"
libk-mm-interface.path = "kernel/libk/libk-mm/interface"
libk-device.path = "kernel/libk/libk-device"
vmalloc.path = "kernel/lib/vmalloc"
device-api-macros.path = "kernel/lib/device-api/macros"
device-tree.path = "kernel/lib/device-tree"

# AArch64
fdt-rs = { version = "0.4.5", default-features = false }
aarch64-cpu = "10.0.0"

discrete_range_map = { git = "https://git.alnyan.me/yggdrasil/discrete_range_map.git" }

# Test dependencies
tokio = { version = "1.42.0", default-features = false }
libc = "*"

[workspace.dependencies.elf]
version = "0.7.2"
git = "https://git.alnyan.me/yggdrasil/yggdrasil-elf.git"
default-features = false
features = ["no_std_stream"]

[workspace.lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] }
unsafe_op_in_unsafe_fn.level = "deny"
[workspace.lints.clippy]
derivable_impls = { level = "allow" }

[profile.dev]
opt-level = 1
# split-debuginfo = "packed"
lto = "thin"
panic = "abort"

[profile.test]
split-debuginfo = "none"

[profile.dev.package."*"]
opt-level = 3
