FILES =  ./bin/switch.bin ./build/kernel.asm.o ./build/keyboard.o ./build/kernel.o ./build/compiler.o ./build/std_tools.o ./build/custom.o
FLAGS = -g -ffreestanding -nostdlib -Wall -Iinc -O2 -Wextra -m32 -w -fno-builtin-memset -Wno-implicit-function-declaration -fno-pic
CC = gcc -m32
LD = ld -m elf_i386

all:
	nasm -f bin ./src/bootloader.asm -o ./bin/boot.bin
	nasm -f elf -g ./src/to_kernel.asm -o ./build/kernel.asm.o
	nasm -f bin ./src/drivers/switch/switch.asm -o ./bin/switch.bin
	$(CC) -I./src $(FLAGS) -std=gnu99 -c ./src/kernel.c -o ./build/kernel.o
	$(CC) -I./src $(FLAGS) -std=gnu99 -c ./src/custom.c -o ./build/custom.o
	$(CC) -I./src $(FLAGS) -std=gnu99 -c ./src/drivers/keyboard/keyboard.c -o ./build/keyboard.o
	$(CC) -I./src $(FLAGS) -std=gnu99 -c ./src/drivers/compiler/compiler.c -o ./build/compiler.o
	$(CC) -I./src $(FLAGS) -std=gnu99 -c ./src/drivers/compiler/std_tools.c -o ./build/std_tools.o
	$(LD) -T ./src/linker.ld -o ./bin/kernel.bin $(FILES)
	dd if=./bin/boot.bin of=./bin/os.bin
	dd if=./bin/kernel.bin >> ./bin/os.bin
	dd if=/dev/zero bs=512 count=8 >> ./bin/os.bin
	cp ./bin/os.bin ./isodir/boot
	grub-mkrescue -o bootable.iso ./isodir

clean:
	rm -f ./bin/*
	rm -f ./build/*
	rm -f ./isodir/boot/os.bin

archive:
	tar cvzf ../PunniOS.tar.gz .
