-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·120 lines (92 loc) · 3.16 KB
/
Makefile
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
##################################################
# Makefile
##################################################
BOOT:=boot.asm
LDR:=loader.asm
KERNEL:=kernel.asm
BOOT_BIN:=build/boot.bin
LDR_BIN:=build/loader.bin
KERNEL_BIN:=build/kernel.bin
INCLUDE_PATH:=include/
BOOT:=boot/
LIB:=lib/
IMG:=a.img
FLOPPY:=/mnt/floppy/
GCCFLG:=-m32 -c -I $(INCLUDE_PATH) -fno-stack-protector -fno-builtin
ASMFLG:= -f elf -I $(INCLUDE_PATH)
LDFLG:= -m elf_i386 -s -Ttext 0x30400
OBJS:=build/kernel.o build/start.o build/global.o build/kliba.o \
build/string.o build/klib.o build/i8259.o build/protect.o \
build/main.o build/clock.o build/syscall.o build/process.o \
build/keyboard.o build/tty.o build/console.o build/printf.o build/vsprintf.o \
build/systask.o build/misc.o build/hd.o build/usr.o build/fs_main.o
.PHONY : everything
# everything : $(BOOT_BIN) $(LDR_BIN) $(KERNEL_BIN)
# dd if=$(BOOT_BIN) of=$(IMG) bs=512 count=1 conv=notrunc
# sudo mount -o loop $(IMG) $(FLOPPY)
# sudo cp $(LDR_BIN) $(FLOPPY) -v
# sudo cp $(KERNEL_BIN) $(FLOPPY) -v
# sudo umount $(FLOPPY)
everything:a.img
clean :
rm -f build/*
makeimage:
bximage -mode=create -fd=1.44M -q $(IMG)
run :
bochs
a.img:$(BOOT_BIN) $(LDR_BIN) $(KERNEL_BIN)
dd if=$(BOOT_BIN) of=$(IMG) bs=512 count=1 conv=notrunc
sudo mount -o loop $(IMG) $(FLOPPY)
sudo cp $(LDR_BIN) $(FLOPPY) -v
sudo cp $(KERNEL_BIN) $(FLOPPY) -v
sudo umount $(FLOPPY)
build/boot.bin : boot/boot.asm $(INCLUDE_PATH)/*
nasm -I $(BOOT) $< -o $@
build/loader.bin : boot/loader.asm $(INCLUDE_PATH)/*
nasm -I $(BOOT) $< -o $@
build/kernel.bin : $(OBJS) $(INCLUDE_PATH)/*
ld $(LDFLG) -o $@ $(OBJS)
build/start.o:kernel/start.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/kliba.o:lib/kliba.asm $(INCLUDE_PATH)/*
nasm $(ASMFLG) -o $@ $<
build/string.o:lib/string.asm $(INCLUDE_PATH)/*
nasm $(ASMFLG) -o $@ $<
build/syscall.o:kernel/syscall.asm $(INCLUDE_PATH)/*
nasm $(ASMFLG) -o $@ $<
build/kernel.o:kernel/kernel.asm $(INCLUDE_PATH)/*
nasm $(ASMFLG) -o $@ $<
build/i8259.o:kernel/i8259.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/global.o:kernel/global.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/protect.o:kernel/protect.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/klib.o:lib/klib.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/main.o:kernel/main.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/clock.o:kernel/clock.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/process.o:kernel/process.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/keyboard.o:kernel/keyboard.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/tty.o:kernel/tty.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/console.o:kernel/console.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/printf.o:kernel/printf.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/vsprintf.o:kernel/vsprintf.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/misc.o:lib/misc.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/systask.o:kernel/systask.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/hd.o:kernel/hd.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/usr.o:kernel/usr.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<
build/fs_main.o:fs/main.c $(INCLUDE_PATH)/*
gcc $(GCCFLG) -o $@ $<