-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
70 lines (48 loc) · 2.07 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
CC=gcc
ASM=nasm
SRC_DIR=src
BUILD_DIR=build
IMG_DIR=assets/imgs
ROM_DIR=assets/roms
TOOLS_COPY_SRC_DIR=tools/copy/src
TOOLS_COPY_BUILD_DIR=tools/copy/build
.PHONY: all floppy_image boot kernel test always run clean
all: floppy_image boot kernel test tools
floppy_image: $(BUILD_DIR)/main_floppy.img
$(BUILD_DIR)/main_floppy.img: boot kernel tools
dd if=/dev/zero of=$(BUILD_DIR)/main_floppy.img count=28800
dd if=$(BUILD_DIR)/boot.bin of=$(BUILD_DIR)/main_floppy.img conv=notrunc
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(BUILD_DIR)/kernel.bin
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/Chip8Logo
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/IBMLogo
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/Corax+
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/Flags
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/Quirks
$(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/main_floppy.img $(ROM_DIR)/Keypad
boot: $(BUILD_DIR)/boot.bin
$(BUILD_DIR)/boot.bin: always
$(ASM) $(SRC_DIR)/boot/boot.asm -w+* -f bin -o $(BUILD_DIR)/boot.bin
kernel: $(BUILD_DIR)/kernel.bin
$(BUILD_DIR)/kernel.bin: always
$(ASM) $(SRC_DIR)/kernel/kernel.asm -w+* -f bin -o $(BUILD_DIR)/kernel.bin
test: $(BUILD_DIR)/a.bin $(BUILD_DIR)/b.bin $(BUILD_DIR)/c.bin
$(BUILD_DIR)/a.bin:
$(ASM) $(SRC_DIR)/tests/a.asm -w+* -f bin -o $(BUILD_DIR)/a.bin
$(BUILD_DIR)/b.bin:
$(ASM) $(SRC_DIR)/tests/b.asm -w+* -f bin -o $(BUILD_DIR)/b.bin
$(BUILD_DIR)/c.bin:
$(ASM) $(SRC_DIR)/tests/c.asm -w+* -f bin -o $(BUILD_DIR)/c.bin
tools: $(BUILD_DIR)/emufs_copy
$(BUILD_DIR)/emufs_copy: copy-always
$(CC) $(TOOLS_COPY_SRC_DIR)/copy.c -o $(TOOLS_COPY_BUILD_DIR)/emufs_copy
cp $(TOOLS_COPY_BUILD_DIR)/emufs_copy $(BUILD_DIR)/emufs_copy
always: copy-always
mkdir -p $(BUILD_DIR)
copy-always:
mkdir -p $(TOOLS_COPY_BUILD_DIR)
run:
qemu-system-i386 -drive format=raw,file=$(BUILD_DIR)/main_floppy.img -m 1024
debug:
bochs -f bochs.config
clean:
rm -fr $(BUILD_DIR)/*