-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
36 lines (29 loc) · 929 Bytes
/
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
C_SRC = $(wildcard *.c)
ASM_SRC = $(filter-out multiboot_gdt.asm, $(wildcard *.asm))
OBJ = $(ASM_SRC:.asm=.o) $(C_SRC:.c=.o)
run: myos.img
kvm --gdb tcp::1234 -m 1G -hda $^
myos.img: kernel.elf grub.cfg myos.sfdisk pgms
dd if=/dev/zero of=$@ bs=1M count=10
cat myos.sfdisk | sfdisk $@
sudo losetup -P loop8 $@
sudo mkfs.fat -F16 -n MYOS /dev/loop8p1
mkdir build
sudo mount /dev/loop8p1 build
sudo cp kernel.elf programs/shell.bin programs/test.bin build
sudo grub-install --boot-directory=build --target=i386-pc /dev/loop8
sudo cp grub.cfg build/grub
sudo umount build
sudo losetup -d /dev/loop8
rmdir build
pgms:
$(MAKE) -C programs
kernel.elf: multiboot_gdt.o ${OBJ}
ld $^ -melf_i386 -e kmain -Ttext 0x0 -o $@
%.o: %.asm
nasm -g -f elf32 $^
%.o: %.c
gcc -ffreestanding -g -m32 -Wall -c $^ -mgeneral-regs-only -fno-pie -fno-stack-protector
clean:
rm -rf *.o *.elf *.img build
$(MAKE) -C programs clean