-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
46 lines (34 loc) · 1.5 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
NASM = nasm
bin=build/bin
kern_bin=my_kernel/target/x86_64-my_os/release
disk_img=fs.img
programs_dir=build/user_programs
all: $(bin) $(bin)/boot.bin disk_img
$(bin):
mkdir -p $(bin)
$(bin)/boot.bin: $(bin)/boot0.bin $(bin)/boot1.bin kernel
cat $(bin)/boot0.bin $(bin)/boot1.bin $(bin)/kernel.img > $(bin)/boot.bin
$(bin)/boot0.bin: boot0.asm
$(NASM) boot0.asm -f bin -o $(bin)/boot0.bin
$(bin)/boot1.bin: boot1.asm e820mem.asm
$(NASM) boot1.asm -f bin -o $(bin)/boot1.bin
# runs every time since cargo manages source files maybe clean up later
kernel:
make -C my_kernel
python3 kernheader.py $(kern_bin)/my_kernel $(bin)/header.bin
cat $(bin)/header.bin $(kern_bin)/my_kernel > $(bin)/kernel.img
# runs every time since cargo manages source files maybe clean up later
disk_img:
make -C user_programs
python3 filesystem_gen.py $(bin)/$(disk_img) $(programs_dir)
.PHONY : clean
clean:
make -C my_kernel clean
rm -rf build $(bin)/boot.bin
run: all
qemu-system-x86_64 -drive format=raw,file=$(bin)/boot.bin -m size=4096 -M smm=off -monitor stdio -d int -drive id=disk,file=$(bin)/$(disk_img),if=none -device ahci,id=ahci -device ide-hd,drive=disk,bus=ahci.0 -no-shutdown -no-reboot
# -monitor stdio
# -no-reboot
debug: all
# qemu-system-x86_64 -drive format=raw,file=$(bin)/boot.bin -S -s -m size=4096
qemu-system-x86_64 -drive format=raw,file=$(bin)/boot.bin -S -s -m size=4096 -d int -M smm=off -monitor stdio -drive id=disk,file=$(bin)/$(disk_img),if=none -device ahci,id=ahci -device ide-hd,drive=disk,bus=ahci.0