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