-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
78 lines (54 loc) · 1.37 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
# NASM Compiler
AS = nasm
AS_FLAGS = -f elf32 -I src/
# C Compiler
CC = gcc
CC_FLAGS =
# Linker
LD = ld
LD_FLAGS = -m elf_i386 -nostdlib -T linker.ld
# Kernel
KERNEL = vimasm.elf
# All my source code
SRC = $(wildcard src/*.asm)
# Translate all .asm to .o
# ej. src/main.asm -> src/main.o
OBJ = $(SRC:%.asm=%.o)
kernel: $(KERNEL)
$(KERNEL): $(OBJ)
$(LD) $(LD_FLAGS) -o $@ $^
%.o: %.asm
$(AS) $(AS_FLAGS) -o $@ $^
# ISO
GENISOIMAGE = genisoimage
ISO_FLAGS = -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table
STAGE2 = stage2_eltorito
ISO = vimasm.iso
iso: $(ISO)
$(ISO): iso/boot/vimasm.elf iso/boot/grub/stage2_eltorito iso/boot/grub/menu.lst
$(GENISOIMAGE) $(ISO_FLAGS) -o $@ iso
iso/boot/vimasm.elf: $(KERNEL)
@mkdir -p iso/boot
cp $< $@
iso/boot/grub/stage2_eltorito: $(STAGE2)
@mkdir -p iso/boot/grub
cp $< $@
iso/boot/grub/menu.lst: menu.lst
@mkdir -p iso/boot/grub
cp $< $@
# QEMU
QEMU = qemu-system-i386
QEMU_FLAGS = -soundhw pcspk
qemu: $(KERNEL)
$(QEMU) $(QEMU_FLAGS) -kernel $<
qemu-iso: $(ISO)
$(QEMU) $(QEMU_FLAGS) -cdrom $<
clean:
rm -rf $(OBJ) iso *.elf *.iso
build: clean qemu
echo Compiling Project
code:
code src/video.mac src/keyboard.mac src/converToChar.asm src/timing.asm src/keyboard.asm src/video.asm src/game.asm
# Run with sudo
install_dependencies:
apt install nasm build-essential qemu-system-x86 genisoimage