Files
RockOS/makefile
2026-07-14 23:15:37 -05:00

41 lines
944 B
Makefile

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 -cdrom $(OSNAME).iso
clean:
@echo "Cleaning up build artifacts..."
rm -rf $(OSNAME).iso $(OSNAME).bin obj isodir compile_commands.json *.img
rm -rf .cache/