.PHONY : clean info
MAKEFILE = makefile
MAKEDEP = $(MAKEFILE)
LSCRIPT = ldscript/kernel.ls
INCDIR = inc
CFLAGS = -Wall -I$(INCDIR) -nostdinc -fno-builtin
LFLAGS = -T $(LSCRIPT) --warn-common
OBJS   = krnl/kernel.o krnl/start.o
LIBC   = lib/libc.o
KERNEL_LIB = krnl/kernel_lib.o
TASKS	= task/tasks.o

all:	kernel $(MAKEDEP)


kernel : LIBC KERNEL_LIB TASKS $(OBJS) $(LSCRIPT) $(MAKEDEP) info
	ld $(LFLAGS) $(OBJS) $(LIBC) $(KERNEL_LIB) $(TASKS) $(LIBC) --oformat=elf32-i386 \
	-o kernel
	@echo -e "\nPrzegrywamy obraz i aktualizujemy dysk...\n"
	@-umount ~/dyplom/img/mnt
	@mount ~/dyplom/img/floppy2.img
	@cp ./kernel ~/dyplom/img/mnt/
	@umount ~/dyplom/img/mnt
	@mount ~/dyplom/img/floppy2.img
	
	
LIBC: 
	make -C lib -f $(MAKEFILE)
	
KERNEL_LIB: 
	make -C krnl -f $(MAKEFILE)
	
TASKS:
	make -C task -f $(MAKEFILE)

info: 
	@echo -e "\n\n ******** Linking main kernel file *********\n"

krnl/start.o : krnl/start.asm $(MAKEDEP)
	nasm -o krnl/start.o -f elf krnl/start.asm

krnl/kernel.o : krnl/kernel.c $(MAKEDEP)
	gcc $(CFLAGS) -o krnl/kernel.o -c krnl/kernel.c

clean :
	@-rm kernel
	@find ./inc -name '*.h~' | xargs rm -f
	make -C lib -f $(MAKEFILE) clean
	make -C krnl -f $(MAKEFILE) clean
	make -C task -f $(MAKEFILE) clean
