CC= i686-elf-gcc ASMFILES = arch/i386/boot.asm CFILES = kernel.c vga.c INCLUDEFLAGS=-Iinclude -Ilibk/include DEBUGFLAGS= CFLAGS=-std=c99 -ffreestanding -fstack-protector-all $(INCLUDEFLAGS) $(DEBUGFLAGS) -Wall -Wextra CRTI_OBJ = build/crti.o CRTBEGIN_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtbegin.o) CRTEND_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtend.o) CRTN_OBJ = build/crtn.o LIBKOBJFILES = build/libk/string.o build/libk/stdio.o build/libk/stdlib.o build/libk/stack_protector.o build/libk/asm.o OBJFILES = \ $(CRTI_OBJ) \ $(CRTBEGIN_OBJ) \ build/boot.o \ $(LIBKOBJFILES) \ build/early_kernel.o \ build/kernel.o \ build/vga.o \ build/idt.o \ $(CRTEND_OBJ) $(CRTN_OBJ) KERNELFILE = build/orion.bin all: mkdir -p build mkdir -p build/libk i686-elf-gcc -c libk/string.c -o build/libk/string.o $(CFLAGS) i686-elf-gcc -c libk/stdio.c -o build/libk/stdio.o $(CFLAGS) i686-elf-gcc -c libk/stdlib.c -o build/libk/stdlib.o $(CFLAGS) i686-elf-gcc -c libk/stack_protector.c -o build/libk/stack_protector.o $(CFLAGS) i686-elf-gcc -c libk/asm.c -o build/libk/asm.o $(CFLAGS) nasm arch/i386/boot.asm -f elf32 -o build/boot.o nasm arch/i386/crti.asm -f elf32 -o build/crti.o nasm arch/i386/crtn.asm -f elf32 -o build/crtn.o i686-elf-gcc -c vga.c -o build/vga.o $(CFLAGS) i686-elf-gcc -c idt.c -o build/idt.o $(CFLAGS) i686-elf-gcc -c kernel.c -o build/kernel.o $(CFLAGS) i686-elf-gcc -c early_kernel.c -o build/early_kernel.o $(CFLAGS) i686-elf-gcc -T linker.ld -o $(KERNELFILE) $(CFLAGS) -nostdlib $(OBJFILES) -lgcc run: qemu-system-i386 -kernel $(KERNELFILE) -serial stdio -S -s run-grub: mkdir -p build/isodir mkdir -p build/isodir/boot mkdir -p build/isodir/boot/grub cp build/orion.bin build/isodir/boot/orion.kernel echo 'menuentry "orion" { ' > build/isodir/boot/grub/grub.cfg echo ' multiboot /boot/orion.kernel' >> build/isodir/boot/grub/grub.cfg echo '}' >> build/isodir/boot/grub/grub.cfg grub-mkrescue -o build/orion.iso build/isodir qemu-system-i386 -cdrom build/orion.iso -serial stdio -S -s