diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0b534fb --- /dev/null +++ b/Makefile @@ -0,0 +1,68 @@ +CC := vendor/bin/x86_64-elf-g++ +LD := vendor/bin/x86_64-elf-ld + +CFLAGS := -g -O2 -pipe +override CFLAGS += \ + -Wall \ + -Wextra \ + -std=c++17 \ + -ffreestanding \ + -mno-red-zone \ + -msoft-float \ + -mno-sse \ + -fno-stack-protector \ + -fno-stack-check \ + -fno-rtti \ + -fno-exceptions \ + -ffunction-sections \ + -fdata-sections \ + -mcmodel=kernel + +KERNEL := bin/core +K_OBJS := \ + kernel/entry.o \ + kernel/cxx/constructors.o \ + kernel/cxx/icxxabi.o +K_LINKSCRIPT := kernel/ldscript + +BINARIES := \ + $(KERNEL) + +OVMF_ROOT := /usr/share/qemu + +.PHONY: all clean run + +all: hinterOS.iso + +run: + qemu-system-x86_64 --bios $(OVMF_ROOT)/ovmf-x86_64.bin -cdrom hinterOS.iso + +clean: + - find kernel -type f -name '*.o' -exec rm {} + + - rm hinterOS.iso + - rm $(BINARIES) + +hinterOS.iso: $(BINARIES) + rm -rf iso + mkdir -p iso/bin + cp -v $^ iso/bin/ + mkdir -p iso/boot + mkdir -p iso/boot/limine + cp -v limine.conf iso/boot/limine/ + mkdir -p iso/EFI/BOOT + cp -v vendor/limine/limine-bios.sys vendor/limine/limine-bios-cd.bin vendor/limine/limine-uefi-cd.bin iso/boot/limine/ + cp -v vendor/limine/BOOTX64.EFI iso/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 -o $@ + vendor/limine/limine bios-install $@ + +$(KERNEL): $(K_OBJS) + rm -rf bin + mkdir -p bin + $(LD) -o $@ -T$(K_LINKSCRIPT) $^ + +$(K_OBJS): %.o: %.cxx + $(CC) -c $(CFLAGS) $^ -o $@ |