OBJECTS = start.o common.o tty.o timer.o isr.o gdt.o interrupt.o descriptor_tables.o kernel.o
 
OPTIONS = -ffreestanding -c

all: $(OBJECTS)
	ld --oformat binary -Ttext 0x200000 -o kernel.bin $(OBJECTS)
	rm $(OBJECTS)

kernel.o: kernel.c
	gcc $(OPTIONS) -o kernel.o kernel.c


monitor.o: monitor.c
	gcc $(OPTIONS) -o monitor.o monitor.c
	
tty.o: tty.c
	gcc $(OPTIONS) -o tty.o tty.c
	
common.o: common.c
	gcc $(OPTIONS) -o common.o common.c


start.o: start.asm
	nasm -felf -o start.o start.asm

isr.o: isr.c
	gcc $(OPTIONS) -o isr.o isr.c
	
timer.o: timer.c
	gcc $(OPTIONS) -o timer.o timer.c
	
descriptor_tables.o: descriptor_tables.c
	gcc $(OPTIONS) -o descriptor_tables.o descriptor_tables.c
	
gdt.o: gdt.s
	nasm -felf -o gdt.o gdt.s

interrupt.o: interrupt.s
	nasm -felf -o interrupt.o interrupt.s