.POSIX: .PHONY: all clean run dbg .SUFFIXES: .c .S. o NAME = aplos CC = gcc CFLAGS = \ -g \ -O0 \ -Wall \ -Wextra \ -std=c23 \ -pedantic \ -ffreestanding \ -mcmodel=kernel \ -fno-pie \ -fno-stack-protector LDFLAGS = \ -m elf_x86_64 \ -static \ -T linker.lds OFILES = \ src/acpi.o \ src/apic.o \ src/boot.o \ src/descriptors.o \ src/error.o \ src/font.o \ src/interrupt.o \ src/keyboard.o \ src/main.o \ src/nasty.o \ src/paging.o \ src/panic.o \ src/screen.o \ src/utf8.o \ src/util.o HFILES = src/aplos.h SPLEEN_VERSION=2.1.0 LIMINE_BRANCH=v9.x-binary all: bin/$(NAME) clean: rm -rf bin iso_root external src/*.o run: bin/$(NAME).iso qemu-system-x86_64 -display sdl bin/$(NAME).iso dbg: bin/$(NAME).iso qemu-system-x86_64 -display sdl -s -S bin/$(NAME).iso bin/$(NAME): linker.lds $(OFILES) mkdir -p bin $(LD) $(OFILES) $(LDFLAGS) -o $@ src/font.c: external/spleen src/boot.c: external/limine external/spleen: mkdir -p external wget -q -O - https://github.com/fcambus/spleen/releases/download/$(SPLEEN_VERSION)/spleen-$(SPLEEN_VERSION).tar.gz | tar -xzf - -C external/ mv external/spleen-$(SPLEEN_VERSION) external/spleen external/limine: mkdir -p external git clone https://github.com/limine-bootloader/limine.git --branch=$(LIMINE_BRANCH) --depth=1 external/limine make -C external/limine bin/$(NAME).iso: bin/$(NAME) limine.conf Makefile external/limine mkdir -p iso_root/boot/limine mkdir -p iso_root/EFI/BOOT cp -v bin/$(NAME) iso_root/boot cp -v limine.conf \ external/limine/limine-bios.sys \ external/limine/limine-bios-cd.bin \ external/limine/limine-uefi-cd.bin \ iso_root/boot/limine/ cp -v external/limine/BOOTX64.EFI iso_root/EFI/BOOT/ cp -v external/limine/BOOTIA32.EFI iso_root/EFI/BOOT/ xorriso -as mkisofs -R -r -J -b boot/limine/limine-bios-cd.bin \ -no-emul-boot -boot-load-size 4 -boot-info-table -hfsplus \ -apm-block-size 2048 --efi-boot boot/limine/limine-uefi-cd.bin \ -efi-boot-part --efi-boot-image --protective-msdos-label \ iso_root -o bin/$(NAME).iso ./external/limine/limine bios-install bin/$(NAME).iso