From 5436a330c45c34fecfb429a7ec5c56fc848be5cc Mon Sep 17 00:00:00 2001 From: shockrahwow Date: Tue, 15 Jan 2019 20:10:35 -0800 Subject: [PATCH] updated makefile to be more flexible --- makefile | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/makefile b/makefile index 1f4fbf2..1409ebd 100644 --- a/makefile +++ b/makefile @@ -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