-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
50 lines (40 loc) · 1.17 KB
/
makefile
File metadata and controls
50 lines (40 loc) · 1.17 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
BUILD_PATH = ./build
SRC_PATH = ./src
GDB_SCRIPT = ./build-tools/qemu/client.gdb
$(BUILD_PATH)/%.bin: $(SRC_PATH)/bootloader/%.nasm
mkdir -p $(BUILD_PATH)
nasm -I $(SRC_PATH)/bootloader -f bin -o $@ $<
$(BUILD_PATH)/kernel.bin:
make -C $(SRC_PATH)/kernel all
$(BUILD_PATH)/boot.img: $(BUILD_PATH)/boot.bin \
$(BUILD_PATH)/loader.bin \
$(BUILD_PATH)/kernel.bin
mkdir -p $(BUILD_PATH)
qemu-img create -f raw $@ 1474560
dd if=$(BUILD_PATH)/boot.bin of=$@ bs=512 count=1 conv=notrunc
sudo mount $@ /media/ -t vfat -o loop
sudo cp $(BUILD_PATH)/loader.bin /media/
sudo cp $(BUILD_PATH)/kernel.bin /media/
sync
sudo umount /media/
.PHONY: qemu
qemu: build
qemu-system-x86_64 -fda $(BUILD_PATH)/boot.img -m 2048 \
-d guest_errors,unimp,cpu_reset -D /dev/stderr
.PHONY: qemu-gdb-server
qemu-gdb-server: build
qemu-system-x86_64 -fda $(BUILD_PATH)/boot.img -m 2048 \
-d guest_errors,unimp,cpu_reset -D /dev/stderr \
-s -S
.PHONY: qemu-gdb-client
qemu-gdb-client:
gdb -tui -x $(GDB_SCRIPT)
.PHONY: test
test: $(BUILD_PATH)/kernel.bin
.PHONY: build
build: clean\
$(BUILD_PATH)/boot.img
chmod --recursive 777 $(BUILD_PATH)/
.PHONY: clean
clean:
rm -rf $(BUILD_PATH)