
AS = nasm
CC = gcc
LD = ld
OC = objcopy


ASFLAGS = -I ../include/ -f win32
CCFLAGS = -I ../include/ -c
LDFLAGS = -s -x -g -T kernel.ld

ASSOURCES = head.asm asm.asm
CCSOURCES = init.c pmode.c console.c print.c irq.c keyboard.c memory.c scheduler.c cmd.c

SOURCES = $(ASSOURCES)
SOURCES += $(CCSOURCES)

ASOBJECTS = $(ASSOURCES:.asm=.o)
CCOBJECTS = $(CCSOURCES:.c=.o)

OBJECTS = $(ASOBJECTS)
OBJECTS += $(CCOBJECTS)


.SUFFIXES: .o .asm .c


all: kernel.bin
	@echo kernel.bin built


.c.o:
	@$(CC) $(CCFLAGS) $< -o $@


.asm.o:
	@$(AS) $(ASFLAGS) $< -o $@


kernel.bin: $(OBJECTS)
	@$(LD) $(LDFLAGS) $(OBJECTS) -o kernel.o
	@$(OC) -O binary -S kernel.o kernel.bin


clean:
	@rm -f $(OBJECTS)
	@rm -f kernel.o
	@rm -f kernel.bin
