CC = i686-elf-gcc AS = nasm BUILDDIR := build INCLUDEDIR := include KSRC := $(wildcard kernel/*.asm kernel/*.c) KOBJ := $(addprefix $(BUILDDIR)/, \ $(notdir \ $(patsubst %.asm,%.o, $(patsubst %.c,%.o, $(KSRC))))) KIMG := kernel.bin ISO := Hazel.iso CFLAGS := -ffreestanding -Wall -Wextra -Werror -I $(INCLUDEDIR) LDFLAGS := -ffreestanding -nostdlib -lgcc -T kernel/kernel.ld QEMUFLAGS := -cdrom $(BUILDDIR)/$(ISO) \ -serial stdio $(BUILDDIR)/$(KIMG): $(KOBJ) $(CC) $^ -o $@ $(LDFLAGS) $(BUILDDIR)/%.o: */%.asm $(AS) -felf32 $^ -o $@ $(BUILDDIR)/%.o: */%.c $(CC) $(CFLAGS) -c $^ -o $@ kernel: $(BUILDDIR)/$(KIMG) $(BUILDDIR)/$(ISO): kernel cp $(BUILDDIR)/$(KIMG) boot/$(KIMG) grub-mkrescue -o $(BUILDDIR)/$(ISO) . iso: $(BUILDDIR)/$(ISO) qemu: iso qemu-system-i386 $(QEMUFLAGS) clean: rm build/* boot/*.bin