updated makefile to be more flexible
This commit is contained in:
parent
b2f820660f
commit
5436a330c4
44
makefile
44
makefile
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user