diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f859764 --- /dev/null +++ b/Makefile @@ -0,0 +1,81 @@ +.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 + +LDFLAGS = \ + -m elf_x86_64 \ + -static \ + -T linker.lds + +OFILES = \ + src/boot.o \ + src/font.o \ + src/main.o \ + src/nasty.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 bin/$(NAME).iso + +dbg: bin/$(NAME).iso + qemu-system-x86_64 -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 |