CC = i686-elf-gcc LD = i686-elf-ld OSNAME := rockos C_SOURCES := $(shell find kernel -type f -name '*.c') S_SOURCES := $(shell find kernel -type f -name '*.S') OBJECTS := $(patsubst %, obj/%.o, $(C_SOURCES) $(S_SOURCES)) CFLAGS := -ffreestanding -O2 -Wall -Wextra -Ikernel LDFLAGS := -T kernel/linker.ld .PHONY: all run clean all: $(OSNAME).iso $(OSNAME).bin: $(OBJECTS) kernel/linker.ld $(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(OSNAME).iso: $(OSNAME).bin grub.cfg mkdir -p isodir/boot/grub cp $(OSNAME).bin isodir/boot/$(OSNAME) cp grub.cfg isodir/boot/grub/grub.cfg grub-mkrescue -o $(OSNAME).iso isodir obj/%.c.o: %.c @mkdir -p $(dir $@) $(CC) -c $< -o $@ $(CFLAGS) obj/%.S.o: %.S @mkdir -p $(dir $@) $(CC) -c $< -o $@ $(CFLAGS) run: $(OSNAME).iso qemu-system-i386 -device VGA,edid=on -cdrom $(OSNAME).iso clean: @echo "Cleaning up build artifacts..." rm -rf $(OSNAME).iso $(OSNAME).bin obj isodir compile_commands.json *.img rm -rf .cache/