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 \ kernel/utils.o \ kernel/io/logger/base.o \ kernel/amd64/io/com1.o K_SRCS := $(patsubst %.o,%.cxx,$(K_OBJS)) K_ASM_OBJS := \ kernel/amd64/io/ports.o K_LINKSCRIPT := kernel/ldscript CPPSTDDIRS := \ vendor/x86_64-elf/include/c++/14.2.0 \ vendor/x86_64-elf/include/c++/14.2.0/x86_64-elf \ vendor/x86_64-elf/include/c++/14.2.0/backward CPPSTD := $(addprefix -I ,$(CPPSTDDIRS)) BINARIES := \ $(KERNEL) OVMF_ROOT := /usr/share/qemu .PHONY: all clean run all: hinterOS.iso run: qemu-system-x86_64 --serial stdio --bios $(OVMF_ROOT)/ovmf-x86_64.bin -cdrom hinterOS.iso clean: - find kernel -type f -name '*.o' -exec rm {} + - find kernel -type f -name '*.d' -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) $(K_ASM_OBJS) rm -rf bin mkdir -p bin $(LD) -o $@ -T $(K_LINKSCRIPT) $^ .SECONDEXPANSION: $(K_OBJS): %.o: %.cxx %.d $(CC) -c $(CFLAGS) -MT $@ -MMD -MP -MF $(basename $<).d -I kernel $(CPPSTD) $< -o $@ $(K_ASM_OBJS): %.o: %.S $(CC) -c $(CFLAGS) $^ -o $@ DEPFILES := $(K_SRCS:%.cxx=%.d) $(DEPFILES): -include $(wildcard $(DEPFILES))