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
ASM=nasm
LINK=ld
ISO=genisoimage
EMU=bochs
emuconfig='bochsrc.conf'
all: loader link iso
echo 'yeeting'
# build our loader
loader: loader.asm
# loading the kernel form loader.asm
# creates loader.o
$(ASM) -f elf32 loader.asm
OBJECTS=loader.o kernel.o
AFLAGS=-f elf32
CFLAGS=-m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \
-nodefaultlibs -Wall -Wextra -Werror -c
# link the kernel to our loader
link: loader.o
$(LINK) -T link.ld -melf_i386 loader.o -o kernel.elf
all: kernel.elf
run:
$(EMU) -f $(emuconfig) -q
# Link objects together to produce the kernel object
kernel.elf: $(OBJECTS)
$(LINK) -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf
# build the iso file into our target directory
iso:
# Builds image of our os
os.iso: kernel.elf
cp kernel.elf iso/boot/kernel.elf
$(ISO) -R \
-b boot/grub/stage2_eltorito \
-no-emul-boot \
@ -32,3 +27,18 @@ iso:
-boot-info-table \
-o os.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