CC = i686-elf-gcc INCLUDE = -I./include -I./lib CFLAGS = -Wall -Wextra -Werror -ffreestanding $(INCLUDE) LDFLAGS = -T kernel/kernel.ld -ffreestanding -O3 -nostdlib -lgcc BUILDDIR = build KERNELSRC := $(shell find ./kernel -name '*.c' -o -name '*.asm') KERNELOBJ := $(addprefix $(BUILDDIR)/, \ $(notdir \ $(patsubst %.c,%.o,\ $(patsubst %.asm,%.o,$(KERNELSRC))))) KERNELIMG := $(BUILDDIR)/kernel.bin QEMUFLAGS = -d int -s \ -kernel $(KERNELIMG) \ -m 512M \ -device piix3-ide,id=ide -drive id=disk,file=image.img,format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 \ .PHONY: all kernel qemu clean docs all: qemu qemu: kernel kernel: $(KERNELIMG) $(KERNELIMG): $(KERNELOBJ) $(CC) $^ -o $@ $(LDFLAGS) $(BUILDDIR)/%.o: */%.c $(CC) $(CFLAGS) -c $^ -o $@ $(BUILDDIR)/%.o: */%.asm nasm -felf32 $^ -o $@ qemu: kernel qemu-system-i386 $(QEMUFLAGS) iso: kernel cp $(BUILDDIR)/kernel.bin iso/boot/kernel.bin grub-mkrescue -o $(BUILDDIR)/andewOS.iso iso/ bochs: iso bochs -q clean: rm -rf build/*.o build/*.bin iso/boot/*.bin docs: doxygen