summaryrefslogtreecommitdiffstats
path: root/makefile
blob: 1e0774338fb34f369abc39d57bf3b7ffc5e6037a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CC = gcc# compiler
LD = ld# linker
ASM = nasm# assembler
# what is the flag -O2 
CFLAGS = -c -Wall -ffreestanding -nostdinc -nostdlib -lgcc# c compiler flags
# flag elf32 allow decrease object file size
AFLAGS = -f elf64# asm compiler flags
BDIR = build# build directory

.PHONY: install

install: build
	@echo "Creating an iso image of OS"
	cp ./$(BDIR)/kernel.bin ./iso/os/
	grub-mkrescue -o ./$(BDIR)/kernel.iso ./iso

build:
	mkdir $(BDIR) 
	@echo "Compile source files..."
	$(CC) $(CFLAGS) -o ./$(BDIR)/kernel.o ./kernel/kernel.c
	$(ASM) $(AFLAGS) -o ./$(BDIR)/boot.o ./kernel/boot.s
	@echo "Link object files..."
	$(LD) -m elf_x86_64 -o ./$(BDIR)/kernel.bin -T ./kernel/linker.ld ./$(BDIR)/*.o
	@echo "Project was built"

clean:
	rm -rf ./build

run:
	 qemu-system-i386 -cdrom ./$(BDIR)/kernel.iso