calcite/makefile

47 lines
1.3 KiB
Makefile

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