46 lines
1.1 KiB
Makefile
46 lines
1.1 KiB
Makefile
CC=gcc
|
|
ASM=nasm
|
|
LINK=ld
|
|
ISO=genisoimage
|
|
|
|
OBJECTS=mem.o kernel.o gdt_seg.o gdt.o interrupts.o loader.o serial.o \
|
|
framebuffer.o ports.o stlio.o tests.o
|
|
AFLAGS=-f elf32
|
|
CFLAGS=-masm=intel -O2 -m32 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -nostartfiles \
|
|
-nodefaultlibs -Wall -Wextra -Werror -c
|
|
|
|
all: kernel.elf
|
|
|
|
# Link objects together to produce the kernel object
|
|
kernel.elf: $(OBJECTS)
|
|
$(LINK) -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf
|
|
|
|
# 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 \
|
|
-boot-load-size 4 \
|
|
-A os \
|
|
-input-charset utf8 \
|
|
-quiet \
|
|
-boot-info-table \
|
|
-o os.iso \
|
|
iso
|
|
|
|
# Builind asm objects
|
|
%.o: %.s
|
|
$(ASM) $(AFLAGS) $< -o $@
|
|
|
|
# Building C objecets
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) $< -o $@
|
|
|
|
# Running (no recipes called)
|
|
run: os.iso
|
|
bochs -f bochsrc.conf -q
|
|
|
|
clean:
|
|
rm -rf *.o kernel.elf os.iso bochslog.txt
|