calcite/makefile
2025-07-05 15:23:49 -04:00

57 lines
1.6 KiB
Makefile

COMMON_CC_EXTRA_FLAGS = -O3 -Wall -Wextra
COMMON_CC_FLAGS = -std=c23 ${CC_EXTRA_FLAGS}
KERNEL_CC_FLAGS = -mno-sse -ffreestanding ${COMMON_CC_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 initfs.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 ${KERNEL_CC_FLAGS} -I dependencies/limine -I kernel/include $^ -o $@
build/kernel/kernel.elf: ${KERNEL_SOURCES:%=build/kernel/%.o}
ld -T kernel/link.ld $^ -o $@
# initfs
build/initfs.tar:
rm -rf build/initfs
mkdir -p build/initfs/resx
echo Hello! > build/initfs/resx/hello.txt
cd build/initfs; tar cf ../initfs.tar *
# disk
build/disk.iso: build/kernel/kernel.elf build/initfs.tar
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/
cp build/initfs.tar 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