gila/Makefile.toml
2025-05-07 19:01:21 -04:00

97 lines
2.6 KiB
TOML

env_scripts = [
'''
#!@duckscript
if eq ${TARGET} "x86_64-unknown-none"
set_env QEMUCOMMAND "qemu-system-x86_64"
set_env LIMINEBIN "BOOTX64.EFI"
else if eq ${TARGET} "aarch64-unknown-none"
set_env QEMUCOMMAND "qemu-system-aarch64"
set_env LIMINEBIN "BOOTAA64.EFI"
else if eq ${TARGET} "riscv64gc-unknown-none-elf"
set_env QEMUCOMMAND "qemu-system-riscv64"
set_env LIMINEBIN "BOOTRISCV64.EFI"
else if eq ${TARGET} "loongarch64-unknown-none"
set_env QEMUCOMMAND "qemu-system-loongarch64"
set_env LIMINEBIN "BOOTLOONGARCH64.EFI"
end
'''
]
[env]
LIMINEDIR = "/usr/share/limine"
TARGET = "x86_64-unknown-none"
[env.development]
PROFILE = "dev"
TARGETDIR = "debug"
[env.release]
PROFILE = "release"
TARGETDIR = "release"
[tasks.default]
alias = "run"
[tasks.clean]
dependencies = ["cleaniso"]
command = "cargo"
args = ["clean"]
[tasks.prepare]
script = "rustup install nightly; rustup target add ${TARGET}"
[tasks.cleaniso]
command = "rm"
args = ["-rf", "build"]
[tasks.kernel]
condition = { files_modified = { input = ["./src/**/*.rs", "./src/**/*.ld"], output = ["./target/${TARGET}/${TARGETDIR}/kernel"] }, fail_message = "(inputs unchanged)"}
dependencies = ["prepare"]
command = "cargo"
args = ["build", "--profile", "${PROFILE}", "--bin", "kernel"]
[tasks.iso]
condition = { files_modified = { input = [
"./target/${TARGET}/${TARGETDIR}/kernel",
"./limine.conf",
"${LIMINEDIR}/limine-bios.sys",
"${LIMINEDIR}/limine-bios-cd.bin",
"${LIMINEDIR}/limine-uefi-cd.bin",
"${LIMINEDIR}/${LIMINEBIN}"
], output = ["./build/gila.iso"] }, fail_message = "(inputs unchanged)" }
dependencies = ["kernel"]
script = '''
#!@shell
mkdir -p build/iso/boot/limine
mkdir -p build/iso/EFI/BOOT
cp ./limine.conf build/iso/
cp ${LIMINEDIR}/limine-bios.sys build/iso/boot/limine/
cp ${LIMINEDIR}/limine-bios-cd.bin build/iso/boot/limine/
cp ${LIMINEDIR}/limine-uefi-cd.bin build/iso/boot/limine/
cp ${LIMINEDIR}/${LIMINEBIN} build/iso/EFI/BOOT
cp target/${TARGET}/${TARGETDIR}/kernel build/iso/boot/
mkdir -p build/iso/system/bin
mkdir -p build/iso/system/tmp
mkdir -p build/iso/system/cfg
xorriso -as mkisofs \
-b boot/limine/limine-bios-cd.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
--efi-boot boot/limine/limine-uefi-cd.bin \
-efi-boot-part \
--efi-boot-image \
--protective-msdos-label build/iso \
-o build/gila.iso
limine bios-install build/gila.iso
'''
[tasks.run]
dependencies = ["iso"]
command = "${QEMUCOMMAND}"
args = ["-drive", "file=build/gila.iso,format=raw,index=0,media=disk"]