orion/src/Makefile

65 lines
2.0 KiB
Makefile

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