[package]
name = "ucore"
version = "0.1.0"
authors = ["Runji Wang <wangrunji0408@163.com>"]

[features]
use_apic = []
link_user_program = []
no_bbl = []

board_raspi3 = []

[profile.dev]
# MUST >= 1 : Enable RVO to avoid stack overflow
# MUST <= 1 : Avoid double fault at -O2 T_T
opt-level = 1

[profile.release]
debug = true

[dependencies]
log = "0.4"
spin = "0.4.9"
once = "0.3.3"
xmas-elf = "0.6"
bitflags = "1.0"
bit_field = "0.9.0"
volatile = "0.2.4"
linked_list_allocator = "0.6"
lazy_static = { version = "1.0.0", features = ["spin_no_std"] }
bit-allocator = { path = "../crate/bit-allocator" }
ucore-memory = { path = "../crate/memory" }
ucore-process = { path = "../crate/process" }
simple-filesystem = { git = "https://github.com/wangrunji0408/SimpleFileSystem-Rust" }
register="0.1.0"

[target.'cfg(target_arch = "x86_64")'.dependencies]
bootloader = "0.3"
x86_64 = "0.2.11"
redox_syscall = "0.1"
uart_16550 = "0.1"

[target.'cfg(target_arch = "riscv32")'.dependencies]
riscv = { path = "../crate/riscv" }
bbl = { path = "../crate/bbl" }

[target.'cfg(target_arch = "aarch64")'.dependencies]
cortex-a = "2.2.1"
aarch64 = { path = "../crate/aarch64" }
atags = { path = "../crate/atags" }
bcm2837 = { path = "../crate/bcm2837", features = ["use_generic_timer"] }

[package.metadata.bootimage]
default-target = "x86_64-blog_os.json"
output = "target/x86_64-blog_os/bootimage.bin"
minimum-image-size = 0      # The minimum output file size (in MiB)
# The command invoked on `bootimage run`
# (the "{}" will be replaced with the path to the bootable disk image)
run-command = ["qemu-system-x86_64",
    "-drive", "format=raw,file={}",
    "-drive", "format=raw,file=../user/ucore32.img,media=disk,cache=writeback",
    "-serial", "mon:stdio",
    "-device", "isa-debug-exit",
    "-smp", "4"
]

[build-dependencies]
cc = "1.0"
