aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: a5d044919bbe20a139b716e0103c2151b7a8b23b (plain)
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
31
32
33
CC = gcc
CFLAGS = -m32 -std=c99 -fno-stack-protector

default: build

setup:
	mkdir -p bin

build: setup kernel/kernel.c kernel/global_descriptor_table.c kernel/gpu/text_mode/display.c kernel/io/keyboard/keyboard_handler.c kernel/kernel-bootstrap.asm
	nasm -f elf32 kernel/kernel-bootstrap.asm -o bin/kernel-bootstrap.o
	$(CC) $(CFLAGS) -c kernel/kernel.c -o bin/kernel.o
	$(CC) $(CFLAGS) -c kernel/global_descriptor_table.c -o bin/global_descriptor_table.o
	$(CC) $(CFLAGS) -c kernel/gpu/text_mode/display.c -o bin/text_mode_display.o
	$(CC) $(CFLAGS) -c kernel/io/keyboard/keyboard_handler.c -o bin/keyboard_handler.o
	$(CC) $(CFLAGS) -c os/main.c -o bin/main.o
	$(CC) $(CFLAGS) -c os/shell/shell.c -o bin/shell.o
	$(CC) $(CFLAGS) -c os/stdlib/stdlib.c -o bin/stdlib.o
	ld -m elf_i386 -T link.ld -o bin/kernel.bin bin/*.o

clean:
	rm -f bin/*
	rm -f boot-iso/boot/kernel.bin
	rm -f tinyOS.iso

run:
	cpulimit -l 20 qemu-system-i386 -kernel bin/kernel.bin

build-and-run: build run

iso: build
	cp bin/kernel.bin boot-iso/boot/
	grub-mkrescue -o tinyOS.iso boot-iso/