cargo-features = ["profile-rustflags"]
[package]
name = "bootloader"
description = "An experimental x86_64 bootloader that works on both BIOS and UEFI systems."
license.workspace = true
version.workspace = true
repository.workspace = true
authors = ["Philipp Oppermann <dev@phil-opp.com>"]
edition = "2021"
[workspace]
members = [
"api",
"common",
"common/config",
"uefi",
"bios/boot_sector",
"bios/stage-*",
"bios/common",
"tests/runner",
"tests/test_kernels/default_settings",
"tests/test_kernels/map_phys_mem",
"tests/test_kernels/higher_half",
"tests/test_kernels/pie",
"tests/test_kernels/lto",
"tests/test_kernels/ramdisk",
"tests/test_kernels/min_stack",
]
exclude = ["examples/basic", "examples/test_framework"]
[workspace.package]
version = "0.11.4"
license = "MIT/Apache-2.0"
repository = "https://github.com/rust-osdev/bootloader"
[workspace.dependencies]
bootloader_api = { version = "0.11.4", path = "api" }
bootloader-x86_64-common = { version = "0.11.4", path = "common" }
bootloader-boot-config = { version = "0.11.4", path = "common/config" }
bootloader-x86_64-bios-common = { version = "0.11.4", path = "bios/common" }
[features]
default = ["bios", "uefi"]
bios = ["dep:mbrman"]
uefi = ["dep:gpt"]
[dependencies]
anyhow = "1.0.32"
fatfs = { version = "0.3.4", default-features = false, features = [
"std",
"alloc",
] }
tempfile = "3.3.0"
mbrman = { version = "0.5.1", optional = true }
gpt = { version = "3.0.0", optional = true }
bootloader-boot-config = { workspace = true }
serde_json = "1.0.91"
[dev-dependencies]
bootloader_test_runner = { path = "tests/runner" }
test_kernel_default_settings = { path = "tests/test_kernels/default_settings", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_higher_half = { path = "tests/test_kernels/higher_half", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_map_phys_mem = { path = "tests/test_kernels/map_phys_mem", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_pie = { path = "tests/test_kernels/pie", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_ramdisk = { path = "tests/test_kernels/ramdisk", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_config_file = { path = "tests/test_kernels/config_file", artifact = "bin", target = "x86_64-unknown-none" }
test_kernel_min_stack = { path = "tests/test_kernels/min_stack", artifact = "bin", target = "x86_64-unknown-none" }
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
lto = false
debug = true
overflow-checks = true
[profile.stage-1]
inherits = "release"
opt-level = "s"
lto = true
codegen-units = 1
debug = false
overflow-checks = false
[profile.stage-2]
inherits = "release"
opt-level = "s"
codegen-units = 1
debug = false
overflow-checks = true
[profile.stage-3]
inherits = "release"
debug = true
overflow-checks = true
[profile.stage-4]
inherits = "release"
debug = true
overflow-checks = true
[profile.lto]
inherits = "release"
lto = true
[profile.test.package.test_kernel_higher_half]
rustflags = [
"-C",
"link-args=--image-base 0xFFFF800000000000",
"-C",
"relocation-model=pic",
"-C",
"code-model=large",
]
[profile.test.package.test_kernel_min_stack]
opt-level = 2
[build-dependencies]
llvm-tools = "0.1.1"
async-process = "1.6.0"
futures = "0.3.25"
futures-concurrency = "7.0.0"
[package.metadata.docs.rs]
rustc-args = ["--cfg", "docsrs_dummy_build"]