forked from quariumos/silicon
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
42 lines (29 loc) · 1.02 KB
/
Makefile
File metadata and controls
42 lines (29 loc) · 1.02 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
_CC=ccache clang
ARCH?=i386
_CLANG_TRIPLE=${ARCH}-pc-none-bin
FLAGS?=-DSHOULD_LOG -DLOG_MICRO_EVENTS
_CF= -I src/kernel/include -target ${_CLANG_TRIPLE} -DARCH=${ARCH} -ffreestanding -g ${FLAGS}
_EF= -no-reboot -m 2M -serial stdio
kernel.iso: obj/kernel.elf
cp $< iso/boot
grub-mkrescue -d /usr/lib/grub/i386-pc -o $@ iso
run: clean kernel.iso
qemu-system-${ARCH} ${_EF} -cdrom kernel.iso
obj/ksym.o:
nm -g obj/kernel.o | grep T | sed -e 's/ T /: /g' > obj/kernel.sym
ld -m elf_i386 -r -b binary -o $@ obj/kernel.sym
obj/kernel.elf: obj/multiboot.o obj/start.o obj/kernel_asm.o obj/kernel.o obj/ksym.o
ld -m elf_i386 -T linker.ld -o $@ $^
debug: clean kernel.iso
qemu-system-${ARCH} ${_EF} -s -S -cdrom kernel.iso & ARCH=${ARCH} gdb --batch -x info/debug.gdb
obj/kernel.o:
${_CC} -c -o $@ ${_CF} src/main.c
obj/kernel_asm.o:
nasm -f elf32 src/kernel/*.s -o $@
obj/start.o:
nasm -f elf32 src/start.s -o $@
obj/multiboot.o:
nasm -f elf32 src/multiboot2.s -o $@
clean:
rm -rf kernel.elf kernel.iso iso/boot/*.elf obj
mkdir obj