37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
![]() |
#[macro_use]
|
||
|
extern crate cake;
|
||
|
|
||
|
const QEMU: &'static str = "qemu-system-x86_64";
|
||
|
|
||
|
const LS_FLAGS: &'static [&'static str] = &["-a", "/"];
|
||
|
|
||
|
build! {
|
||
|
// ---- COMMANDS ----
|
||
|
start(harddrive) => {},
|
||
|
list(kernel_list) => {},
|
||
|
run(bochs) => {},
|
||
|
clean() => cmd!("rm", "-rf", "build/*"),
|
||
|
|
||
|
// ---- RECIPES ----
|
||
|
bochs(harddrive) => cmd!("bochs", "-f", "bochs.x86_64"),
|
||
|
qemu(harddrive) => cmd!(QEMU,
|
||
|
"-serial", "mon:stdio",
|
||
|
"-drive", "file=build/harddrive.bin,format=raw,index=0,media=disk"),
|
||
|
libkernel() => cmd!("cargo", "rustc", "--", "-C", "lto"),
|
||
|
kernel(libkernel) => cmd!("ld",
|
||
|
"-m", "elf_x86_64",
|
||
|
"--gc-sections",
|
||
|
"-z", "max-page-size=0x1000",
|
||
|
"-T bootloader/x86/kernel.ld",
|
||
|
"-o", "build/kernel.in", "build/libkernel.a"),
|
||
|
kernel_list(kernel) => cmd!("objdump",
|
||
|
"-C", "-M", "intel",
|
||
|
"-D", "build/kernel.bin",
|
||
|
">", "build/kernel.list"),
|
||
|
harddrive(kernel) => cmd!("nasm",
|
||
|
"-f", "bin",
|
||
|
"-o", "build/harddrive.bin",
|
||
|
"-D", "ARCH_x86_64", "-ibootloader/x86/", "-ibuild/",
|
||
|
"bootloader/x86/harddrive.asm"),
|
||
|
}
|