47 lines
1.3 KiB
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
|