CC=gcc ASM=nasm LINK=ld ISO=genisoimage OBJECTS=mem.o kernel.o gdt_seg.o gdt.o interrupts.o loader.o serial.o \ framebuffer.o ports.o stlio.o tests.o interrupt_entry.o AFLAGS=-f elf32 CFLAGS=-masm=intel -O2 -m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \ -nodefaultlibs -Wall -Wextra -c #-Werror -c all: kernel.elf # Link objects together to produce the kernel object kernel.elf: $(OBJECTS) $(LINK) -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf # Builds image of our os os.iso: kernel.elf cp kernel.elf iso/boot/kernel.elf $(ISO) -R \ -b boot/grub/stage2_eltorito \ -no-emul-boot \ -boot-load-size 4 \ -A os \ -input-charset utf8 \ -quiet \ -boot-info-table \ -o os.iso \ iso # Builind asm objects %.o: %.s $(ASM) $(AFLAGS) $< -o $@ # Building C objecets %.o: %.c $(CC) $(CFLAGS) $< -o $@ # Running (no recipes called) run: os.iso bochs -f bochsrc.conf -q clean: rm -rf *.o kernel.elf os.iso bochslog.txt