-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
49 lines (39 loc) · 1.15 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
ASM = nasm -f bin
EMULATOR = qemu-system-x86_64
BUILD = build
SRC = src
PRG_SRC = $(SRC)/prg/
PRG_BUILD = $(BUILD)/prg/
PRG_ASM = $(wildcard $(PRG_SRC)/*.asm)
PRG_COM = $(patsubst $(PRG_SRC)/%.asm,$(PRG_BUILD)/%.com,$(PRG_ASM))
MOUNT_DIR = mnt
TARGET_IMG = DaviDOS.img
IMG_SIZE = 16MB
all: image run
prep:
mkdir -p $(BUILD)
mkdir -p $(PRG_BUILD)
mkdir -p $(MOUNT_DIR)
masterboot.bin: $(SRC)/masterboot.asm
$(ASM) $^ -o $(BUILD)/$@
bootloader.bin: $(SRC)/bootloader.asm
$(ASM) $^ -o $(BUILD)/$@
davidos.sys: $(SRC)/davidos.asm
$(ASM) $^ -o $(BUILD)/$@
programs: $(PRG_COM)
$(PRG_BUILD)/%.com: $(PRG_SRC)/%.asm
$(ASM) $< -o $@
image: prep masterboot.bin bootloader.bin davidos.sys programs
dd if=/dev/zero of=$(TARGET_IMG) bs=$(IMG_SIZE) count=1
dd if=$(BUILD)/masterboot.bin of=$(TARGET_IMG) conv=notrunc
sudo losetup --partscan /dev/loop10 $(TARGET_IMG)
sudo dd if=$(BUILD)/bootloader.bin of=/dev/loop10p1 conv=notrunc
sudo mount /dev/loop10p1 $(MOUNT_DIR)/
sudo cp $(BUILD)/davidos.sys $(MOUNT_DIR)/
sudo cp -r $(PRG_BUILD)* $(MOUNT_DIR)/
sudo umount $(MOUNT_DIR)
sudo losetup -d /dev/loop10
run: $(TARGET_IMG)
$(EMULATOR) $^
clean:
rm -rf $(BUILD)