diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9779670 --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +.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 -lgcc + +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}/** |
