-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
68 lines (49 loc) · 1.54 KB
/
Makefile
File metadata and controls
68 lines (49 loc) · 1.54 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
CC = gcc
NASM = nasm
LD = ld
GRUB_MKRESCUE = grub-mkrescue
# Add -g flag to CFLAGS for debugging and use
# gdb PatchouliOS/boot/kernel
# Inside of GDB : target remote :1234
# Then go through the wiki of GDB and good luck !
CFLAGS = -m32 -fno-stack-protector -fno-builtin
NASMFLAGS = -f elf32
LDFLAGS = -m elf_i386 -T src/linker.ld
DISK_IMG = patchouli.iso
SRCDIR = src
BINDIR = bin
BUILDDIR = build
.PHONY: all run clean
all: $(DISK_IMG)
$(BINDIR):
mkdir -p $(BINDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)
$(BINDIR)/vga.o: $(SRCDIR)/vga.c
$(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/kernel.o: $(SRCDIR)/kernel.c
$(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/gdt.o: $(SRCDIR)/gdt.c
$(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/util.o: $(SRCDIR)/util.c
$(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/idt.o: $(SRCDIR)/idt.c
$(CC) $(CFLAGS) -c $< -o $@
$(BINDIR)/gdts.o: $(SRCDIR)/gdts.s
$(NASM) $(NASMFLAGS) $< -o $@
$(BINDIR)/idts.o: $(SRCDIR)/idt.s
$(NASM) $(NASMFLAGS) $< -o $@
$(BINDIR)/boot.o: $(SRCDIR)/boot.s
$(NASM) $(NASMFLAGS) $< -o $@
$(BINDIR)/kernel: $(BINDIR)/boot.o $(BINDIR)/gdts.o $(BINDIR)/kernel.o $(BINDIR)/vga.o $(BINDIR)/gdt.o $(BINDIR)/util.o $(BINDIR)/idt.o $(BINDIR)/idts.o
$(LD) $(LDFLAGS) -o $@ $^
$(DISK_IMG): $(BINDIR)/kernel
mkdir -p $(SRCDIR)/PatchouliOS/boot
mv $(BINDIR)/kernel $(SRCDIR)/PatchouliOS/boot/kernel
$(GRUB_MKRESCUE) -o $@ $(SRCDIR)/PatchouliOS
run: $(DISK_IMG)
@echo "Running disk image..."
qemu-system-x86_64 -cdrom $(DISK_IMG)
clean:
rm -f $(BINDIR)/*.o $(BINDIR)/kernel $(DISK_IMG)
rm -rf $(SRCDIR)/PatchouliOS/boot/kernel