CC_EXTRA_FLAGS = -O3 -Wall -Wextra CC_FLAGS = -std=c23 -mno-sse -ffreestanding ${CC_EXTRA_FLAGS} .PHONY: default default: build/disk.iso .PHONY: debug debug: build/disk.iso gdb -x qemu.gdb .PHONY: clean clean: rm -rf build # kernel KERNEL_SOURCES = entry.c paging.asm paging.c build/kernel/%.asm.o: kernel/src/%.asm @mkdir -p ${@D} nasm -f elf64 $^ -o $@ build/kernel/%.c.o: kernel/src/%.c @mkdir -p ${@D} cc -c ${CC_FLAGS} -I dependencies/limine -I kernel/include $^ -o $@ build/kernel/kernel.elf: ${KERNEL_SOURCES:%=build/kernel/%.o} ld -T kernel/link.ld $^ -o $@ # disk build/disk.iso: build/kernel/kernel.elf rm -rf build/disk cp -r disk build/disk cp dependencies/limine/limine-uefi-cd.bin build/disk/limine/ cp dependencies/limine/limine-bios-cd.bin build/disk/limine/ cp dependencies/limine/limine-bios.sys build/disk/limine/ mkdir -p build/disk/EFI/BOOT cp dependencies/limine/BOOTX64.EFI build/disk/EFI/BOOT/ mkdir build/disk/calcite cp build/kernel/kernel.elf build/disk/calcite/ xorriso \ -as mkisofs -R -r -J -b limine/limine-bios-cd.bin -no-emul-boot \ -boot-load-size 4 -boot-info-table -hfsplus -apm-block-size 2048 \ --efi-boot limine/limine-uefi-cd.bin -efi-boot-part --efi-boot-image \ --protective-msdos-label build/disk -o build/disk.iso dependencies/limine/limine bios-install build/disk.iso