summaryrefslogtreecommitdiff
path: root/src/makefile
blob: 2398509244c889d0feec56b1d08b9044c903f838 (plain)
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
LD=../compiler/indigo_gcc/bin/x86_64-elf-ld
CC=../compiler/indigo_gcc/bin/x86_64-elf-gcc
OBJCPY=../compiler/indigo_gcc/bin/x86_64-elf-objcopy
INC=-I./include

EMU_CORES=4
EMU_RAM=4G
XRES=1024
YRES=768

CCFLAGS=-g -ffreestanding -Wall

make: 
	nasm -g -felf64 bootloader/bootloader.asm -o objects/bootloader.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/kernel.c -o objects/kernel.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/panic.c -o objects/panic.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/acpi.c -o objects/acpi.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/drivers/serial.c -o objects/serial.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/drivers/video.c -o objects/video.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/printf.c -o objects/printf.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/page.c -o objects/page.o
	$(CC) $(INC) $(CCFLAGS) -c kernel/libc.c -o objects/libc.o
	$(LD) -o indigo_os.elf --oformat=elf64-x86-64 -T link.ld
	$(OBJCPY) --only-keep-debug indigo_os.elf debug/debug_syms.o
	$(OBJCPY) -O binary --strip-all indigo_os.elf indigo_os
ifneq ("$(wildcard $(./debug/serial.in))","")
	mkfifo debug/serial.in
endif
ifneq ("$(wildcard $(./debug/serial.out))","")
	mkfifo debug/serial.out
endif
#	rm -f indigo_os.elf


preproc_debug:
	nasm -g -felf64 bootloader/bootloader.asm 
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/kernel.c 
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/acpi.c 
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/drivers/serial.c 
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/drivers/video.c 
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/printf.c
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/page.c
	$(CC) $(INC) $(CCFLAGS) -E -c kernel/libc.c 

run:
	qemu-system-x86_64 -smp $(EMU_CORES) -m $(EMU_RAM) -nographic -no-reboot -drive format=raw,file=./indigo_os
	

gdb: indigo_os
	tmux new-session -s os_gdb "qemu-system-x86_64 -smp $(EMU_CORES) -nographic -no-reboot -S -s -drive format=raw,file=./indigo_os -m $(EMU_RAM)"\;\
		split-window -h "gdb -x debug/gdbinit.gdb; killall qemu-system-x86_64"

run-graphical:
	qemu-system-x86_64 -S -s -smp $(EMU_CORES) -m $(EMU_RAM) -no-reboot -serial pipe:debug/serial -device VGA,edid=on,xres=$(XRES),yres=$(YRES) -drive format=raw,file=./indigo_os &\
		gdb -x debug/gdbinit.gdb; killall qemu-system-x86_64

clean:
	rm -f objects/*
	rm -f indigo_os
	rm -f bin/*
	rm -f debug/debug_syms.o
	rm -f debug/serial.in
	rm -f debug/serial.out