-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
49 lines (41 loc) · 1.68 KB
/
Makefile
File metadata and controls
49 lines (41 loc) · 1.68 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
AS = i686-elf-as
CC = i686-elf-gcc
CFLAGS = -Wall -Wextra -Wpedantic -Werror -std=c99 -O2 -ffreestanding -fno-stack-protector -g
ARCH = i386
SRC = src
BUILD = build
ISODIR = $(BUILD)/isodir
TARGET = $(BUILD)/os
CFLAGS := $(CFLAGS) -I$(SRC) -I$(SRC)/libc
.PHONY: build grub run clean
all: build
build:
mkdir -p $(BUILD)
$(AS) -o $(BUILD)/boot.o $(SRC)/arch/$(ARCH)/boot/boot.s
$(AS) -o $(BUILD)/io.o $(SRC)/arch/$(ARCH)/io.s
$(AS) -o $(BUILD)/cpu.o $(SRC)/arch/$(ARCH)/cpu.s
$(AS) -o $(BUILD)/stack.o $(SRC)/arch/$(ARCH)/stack.s
$(CC) $(CFLAGS) -c -o $(BUILD)/gdt.o $(SRC)/arch/$(ARCH)/gdt.c
$(CC) $(CFLAGS) -c -o $(BUILD)/tss.o $(SRC)/arch/$(ARCH)/tss.c
$(CC) $(CFLAGS) -c -o $(BUILD)/idt.o $(SRC)/arch/$(ARCH)/idt.c
$(CC) $(CFLAGS) -c -o $(BUILD)/interrupts.o $(SRC)/arch/$(ARCH)/interrupts.c
$(CC) $(CFLAGS) -c -o $(BUILD)/paging.o $(SRC)/arch/$(ARCH)/paging.c
$(CC) $(CFLAGS) -c -o $(BUILD)/vga.o $(SRC)/driver/vga.c
$(CC) $(CFLAGS) -c -o $(BUILD)/panicc.o $(SRC)/kernel/panic.c
$(CC) $(CFLAGS) -c -o $(BUILD)/tty.o $(SRC)/kernel/tty.c
$(CC) $(CFLAGS) -c -o $(BUILD)/log.o $(SRC)/kernel/log.c
$(CC) $(CFLAGS) -c -o $(BUILD)/memory.o $(SRC)/kernel/memory.c
$(CC) $(CFLAGS) -c -o $(BUILD)/init.o $(SRC)/kernel/init.c
$(CC) $(CFLAGS) -c -o $(BUILD)/string.o $(SRC)/libc/string.c
$(CC) $(CFLAGS) -c -o $(BUILD)/kernel.o $(SRC)/kernel.c
$(CC) -T linker.ld $(CFLAGS) -nostdlib -o $(TARGET) $(BUILD)/*.o
grub: build
mkdir -p $(ISODIR)/boot/grub
grub-file --is-x86-multiboot $(TARGET)
cp $(TARGET) $(ISODIR)/boot/os
cp grub.cfg $(ISODIR)/boot/grub/grub.cfg
grub-mkrescue -o $(BUILD)/os.iso $(ISODIR)
run: grub
qemu-system-i386 -cdrom $(BUILD)/os.iso
clean:
rm -rf $(BUILD)