.DEFAULT_GOAL := macaroni.iso LIMINE_SHARE = /opt/homebrew/share/limine/ BUILD_OUT = build ASM = nasm ASM_FLAGS = -felf32 CFLAG = -std=c11 -ffreestanding -O0 -Wall -Wextra CC = i686-elf-gcc BINFLAG = -T linker.ld -ffreestanding -O0 -nostdlib boot.o: src/boot.asm ${ASM} ${ASM_FLAGS} src/boot.asm -o ${BUILD_OUT}/boot.o kernel.o: src/kernel.c ${CC} -c src/kernel.c -o ${BUILD_OUT}/kernel.o ${CFLAG} macaroni.bin: boot.o kernel.o ${CC} -o ${BUILD_OUT}/macaroni.bin ${BINFLAG} ${BUILD_OUT}/*.o macaroni.iso: macaroni.bin mkdir -p ${BUILD_OUT}/iso cp ${BUILD_OUT}/macaroni.bin ${BUILD_OUT}/iso/macaroni.bin printf "timeout: 0\n/macaroni\n protocol: multiboot1\n kernel_path: boot():/macaroni.bin\n" > ${BUILD_OUT}/iso/limine.conf cp ${LIMINE_SHARE}/limine-bios-cd.bin ${LIMINE_SHARE}/limine-bios.sys ${LIMINE_SHARE}/limine-uefi-cd.bin ${BUILD_OUT}/iso/ xorriso -as mkisofs -R -r -J -b limine-bios-cd.bin -no-emul-boot -boot-load-size 4 -boot-info-table \ --efi-boot limine-uefi-cd.bin -efi-boot-part --efi-boot-image --protective-msdos-label \ ${BUILD_OUT}/iso -o ${BUILD_OUT}/macaroni.iso limine bios-install ${BUILD_OUT}/macaroni.iso .PHONY: demo demo: macaroni.iso qemu-system-x86_64 -cdrom ${BUILD_OUT}/macaroni.iso .PHONY: clean clean: rm -rf ${BUILD_OUT}/**