CC = x86_64-elf-gcc LD = x86_64-elf-ld AS = nasm # Modify these settings here for defines and debug info # CFLAGS = -g -D DEBUG # LDFLAGS = -g # ASFLAGS = -g -F dwarf # Do not modify CFLAGS += -m64 -ffreestanding -nostdinc -nostdlib -Wall -Wextra -Wshadow -std=c23 LDFLAGS += ASFLAGS += -f elf64 SRC_C := $(shell find src -name '*.c') SRC_ASM := $(shell find src -name '*.asm') OBJS := $(patsubst src/%.c, .build/%.o, $(SRC_C)) $(patsubst src/%.asm, .build/%.o, $(SRC_ASM)) iso: .build/nub-os.iso @echo "ISO created at '.build/nub-os.iso'" run: .build/nub-os.iso qemu-system-x86_64 -cdrom .build/nub-os.iso clean: @rm -r .build 2>/dev/null || true .build/nub-os.iso: .build/nub-os src/grub.cfg mkdir -p .build/grub/boot/grub cp src/grub.cfg .build/grub/boot/grub cp .build/nub-os .build/grub/boot/ grub-mkrescue -o .build/nub-os.iso .build/grub/ .build/nub-os: $(OBJS) $(LD) $(LDFLAGS) -T src/linker.ld -o $@ $^ .build/%.o: src/%.c @mkdir -p $(dir $@) $(CC) $(CFLAGS) -c -o $@ $< .build/%.o: src/%.asm @mkdir -p $(dir $@) $(AS) $(ASFLAGS) -o $@ $<