gila/Makefile

38 lines
1.1 KiB
Makefile

TARGET ?= "x86_64-unknown-none"
all: clean prepare gila iso run
# Prepare toolchain
prepare:
rustup install nightly
rustup target add $(TARGET)
# Run the ISO in an emulator.
run: build/gila.iso
qemu-system-x86_64 -drive file=build/gila.iso,format=raw,index=0,media=disk
# Build the bootable kernel image.
.PHONY: build/iso/gila
gila: prepare $(wildcard src/*.rs)
mkdir -p build/iso/
cargo build --release -Z unstable-options --target=$(TARGET) --artifact-dir build/iso/
# Build a bootable ISO and install Limine.
.PHONY: build/gila.iso
iso: build/iso/gila gila limine.conf
mkdir -p build/iso/limine
mkdir -p build/iso/EFI/BOOT
cp ./limine.conf build/iso/
cp /usr/share/limine/limine-bios.sys build/iso/limine/
cp /usr/share/limine/limine-bios-cd.bin build/iso/limine/
cp /usr/share/limine/limine-uefi-cd.bin build/iso/limine/
xorriso -as mkisofs -b limine/limine-bios-cd.bin -no-emul-boot \
-boot-load-size 4 -boot-info-table --efi-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
clean:
rm -rf build
cargo clean