-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmakefile
More file actions
73 lines (48 loc) · 1.62 KB
/
makefile
File metadata and controls
73 lines (48 loc) · 1.62 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
69
70
71
72
73
MAKE_DIR = $(PWD)/osdev/MachonOS
ISODIR = $(MAKE_DIR)/isodir
BINDIR = $(MAKE_DIR)/isodir/boot
AS = /usr/local/cross/bin/i686-elf-as
CC = /usr/local/cross/bin/i686-elf-gcc
CFLAGS =-std=gnu99 -ffreestanding -Wall -Wextra
ARCH_SRC_DIR := $(MAKE_DIR)/arch/x86
ARCH_ASM_DIR := $(MAKE_DIR)/arch/x86/asm
INC=
all: os
test: printf
printf-clean: printf-clean
# top
kernel.o: $(MAKE_DIR)/kernel/kernel.c
$(CC) -c $(CFLAGS) $(MAKE_DIR)/kernel/kernel.c $(INC)
term.o: $(MAKE_DIR)/kernel/term.c
$(CC) -c $(CFLAGS) $(MAKE_DIR)/kernel/term.c $(INC)
# arch
gdt.o: $(ARCH_SRC_DIR)/gdt.c
$(CC) -c $(CFLAGS) $(ARCH_SRC_DIR)/gdt.c $(INC)
idt.o: $(ARCH_SRC_DIR)/idt.c
$(CC) -c $(CFLAGS) $(ARCH_SRC_DIR)/idt.c $(INC)
int.o: $(ARCH_SRC_DIR)/int.c
$(CC) -c $(CFLAGS) $(ARCH_SRC_DIR)/int.c $(INC)
pic.o: $(ARCH_SRC_DIR)/pic.c
$(CC) -c $(CFLAGS) $(ARCH_SRC_DIR)/pic.c $(INC)
x86.o: $(ARCH_SRC_DIR)/x86.c
$(CC) -c $(CFLAGS) $(ARCH_SRC_DIR)/x86.c $(INC)
# asm
boot.o: $(ARCH_ASM_DIR)/boot.s
$(AS) arch/x86/asm/boot.s -o boot.o
cpu.o: $(ARCH_ASM_DIR)/cpu.s
$(AS) arch/x86/asm/cpu.s -o cpu.o
io.o: $(ARCH_ASM_DIR)/io.s
$(AS) arch/x86/asm/io.s -o io.o
os: iso
iso: boot.o int.o io.o idt.o gdt.o pic.o cpu.o kernel.o term.o x86.o
$(CC) -T linker.ld -o MachonOS.bin -ffreestanding -nostdlib boot.o int.o io.o idt.o gdt.o pic.o cpu.o kernel.o term.o x86.o -lgcc
cp MachonOS.bin $(BINDIR)
grub-mkrescue -o MachonOS.iso isodir
clean:
rm *.o
run:
qemu-system-i386 -kernel $(BINDIR)/MachonOS.bin
printf: $(MAKE_DIR)/kernel/printf.c
$(CC) $(MAKE_DIR)/kernel/printf.c -o printf -ffreestanding -nostdlib -g
printf-clean:
rm $(MAKE_DIR)/kernel/printf