-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
93 lines (73 loc) · 3.09 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
vm-gdb: prepare-disk-for-run null_call_breakpoints manual_breakpoints
qemu-system-x86_64 -cpu Haswell-noTSX -drive format=raw,file=build/disk.img -m 512M -s -monitor telnet:127.0.0.1:1235,server,nowait & \
bash -c 'konsole -e gdb -x gdbinit'
vm-db: prepare-disk-for-run
qemu-system-x86_64 -drive format=raw,file=build/disk.img -m 512M -s -S
vm: prepare-disk-for-run
qemu-system-x86_64 -cpu Haswell-noTSX -drive format=raw,file=build/disk.img -m 512M
bochs: prepare-disk-for-run
bochs -qf bochs-config
bash -c 'konsole -e gdb -x gdbinit'
prepare-disk-for-run: install-kernel install-grub-config umount
umount: umount-disk-img lodel-disk-img
umount-disk-img:
sudo umount /tmp/mnt/disk_img || /bin/true \
&& sync
install-grub: format-disk-img mount-disk-img
sudo grub-install --root-directory=/tmp/mnt/disk_img --no-floppy --modules="normal part_msdos ext2 multiboot" /dev/loop0
mount-disk-img: losetup-disk-img
mkdir -p /tmp/mnt/disk_img \
&& sudo mount /dev/loop1 /tmp/mnt/disk_img || /bin/true \
&& sudo chown -R 1000:1000 /tmp/mnt/disk_img
format-disk-img: part-disk-img losetup-disk-img
sudo mke2fs /dev/loop1 \
&& sync
losetup-disk-img:
sudo losetup /dev/loop0 build/disk.img \
&& sudo losetup /dev/loop1 build/disk.img -o 1048576
lodel-disk-img:
sudo losetup -d /dev/loop0 || /bin/true \
&& sudo losetup -d /dev/loop1 || /bin/true
part-disk-img: create-disk-img
parted -s build/disk.img \
mklabel msdos \
mkpart primary 2048s 100% \
set 1 boot on \
print list
create-disk-img:
dd if=/dev/zero of=build/disk.img bs=512 count=131072
install-grub-config: grub/grub.cfg
cp grub /tmp/mnt/disk_img/boot -r
verify-kernel:
grub-file --is-x86-multiboot build/kernel.bin
install-kernel: kernel.bin verify-kernel mount-disk-img
cp build/kernel.bin /tmp/mnt/disk_img/boot/ktkernel.bin \
&& sync
.PHONY: vm-gdb vm prepare-disk-for-run umount umount-disk-img install-grub mount-disk-img format-disk-img losetup-disk-img lodel-disk-img part-disk-img create-disk-img install-grub-config verify-kernel install-kernel kernel/build/kernel.bin
VPATH = build
kernel.lst: kernel.bin
nm build/kernel.bin > build/kernel.lst
null_call_breakpoints: kernel.bin
objdump -d kernel/build/kernel.bin | grep "callq 0" | awk "{print \$$1}" | sed -e "s/\([a-f0-9]*\):/hbreak *0x\1/g" > build/$@
manual_breakpoints: kernel.lst
python setBreakpoints.py > build/$@
kernel.bin: kernel/build/kernel.bin
cp kernel/build/kernel.bin build/
kernel/build/kernel.bin:
$(MAKE) -C kernel all
#kernel.bin: loader.o main.bc.o xpc.bc.o
# ld -m elf_i386 -T linker.ld -o build/$@ build/loader.o build/main.bc.o build/xpc.bc.o
#
# loader.o:
# as --32 -o build/loader.o loader/loader.s
#
# main.bc:
# konanc kernel/main.kt -nolink -o build/main.bc
# main.bc.o: main.bc
# llc build/main.bc -o build/main.bc.o -filetype=obj -march=x86 -code-model=kernel
# xpc.bc:
# clang -S -emit-llvm kernel/c/vga_out.c -o build/xpc.bc
# xpc.bc.o: xpc.bc
# llc build/$^ -o build/$@ -filetype=obj -march=x86 -code-model=kernel
# runtime.bc.o:
# llc /fastspace/kotlin-native/dist/lib/host/runtime.bc -o build/$@ -filetype=obj -march=x86 -code-model=kernel