updated makefile to be more flexible

This commit is contained in:
shockrahwow 2019-01-15 20:10:35 -08:00
parent b2f820660f
commit 5436a330c4

View File

@ -1,27 +1,22 @@
ASM=nasm
CC=gcc CC=gcc
ASM=nasm
LINK=ld LINK=ld
ISO=genisoimage ISO=genisoimage
EMU=bochs
emuconfig='bochsrc.conf'
all: loader link iso OBJECTS=loader.o kernel.o
echo 'yeeting' AFLAGS=-f elf32
# build our loader CFLAGS=-m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \
loader: loader.asm -nodefaultlibs -Wall -Wextra -Werror -c
# loading the kernel form loader.asm
# creates loader.o
$(ASM) -f elf32 loader.asm
# link the kernel to our loader all: kernel.elf
link: loader.o
$(LINK) -T link.ld -melf_i386 loader.o -o kernel.elf
run: # Link objects together to produce the kernel object
$(EMU) -f $(emuconfig) -q kernel.elf: $(OBJECTS)
$(LINK) -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf
# build the iso file into our target directory # Builds image of our os
iso: os.iso: kernel.elf
cp kernel.elf iso/boot/kernel.elf
$(ISO) -R \ $(ISO) -R \
-b boot/grub/stage2_eltorito \ -b boot/grub/stage2_eltorito \
-no-emul-boot \ -no-emul-boot \
@ -32,3 +27,18 @@ iso:
-boot-info-table \ -boot-info-table \
-o os.iso \ -o os.iso \
iso iso
# Building C objecets
%.o: %.c
$(CC) $(CFLAGS) $< -o $@
# Builind asm objects
%.o: %.asm
$(ASM) $(AFLAGS) $< -o $@
# Running (no recipes called)
run: os.iso
bochs -f bochsrc.conf -q
clean:
rm -rf *.o kernel.elf os.iso bochslog.txt